首页
社区
课程
招聘
[原创]BisonFTP Server v3.5 Remote Buffer Overflow 漏洞分析
发表于: 2012-3-12 22:37 6147

[原创]BisonFTP Server v3.5 Remote Buffer Overflow 漏洞分析

2012-3-12 22:37
6147

第一次分析漏洞可能会让大牛笑话,只有在Exploit找到软杮子捏了。
BisonFTP Server v3.5 Remote Buffer Overflow 漏洞分析
漏洞描述:
BisonFTP Server v3.5在处理接收数据时未判断缓冲区大小造成堆溢出。
漏洞样本来源:
http://www.exploit-db.com/exploits/17649/
调试环境及工具
环境:Windows XP3 + BisonFTP Server v3.5
工具:OllyDBG + IDA Pro 6.1 + Interactive Delphi Reconstruct v 2.5.2
漏洞重现:
         在Window XP SP3测试环境中架设好BisonFTP Server v3.5并运行,下载exploit-db提供http://www.exploit-
db.com/exploits/17649/ python脚本运行后程序出现崩溃:

调试过程:
OllyDBG载入BisonFTP Server v3.5后发现是DELPHI写的,用Interactive Delphi econstruct加载BisonFTP Server v3.5建立MAP文件,
OllyDBG插件LoadMapEX加载MAP文件来识别VCL库:

OllyDBG重新运行BisonFTP Server v3.5后,运行Python进程攻击测试,一会儿发现EIP的值指向一个非法的地址中:

Alt+K查看调用堆栈OD居然显示空白……无语中……,现在只能通过堆栈窗口进行回逆查看了,通过下面的可以看出程序崩溃在
Forms.TCustomForm.CloseQuery函数里。

 
0012FC0C   0042E7A8  返回到 Bisonftp.Forms.TCustomForm.CloseQuery+58
0012FC10   00000001
0012FC14   0012FD6C
0012FC18   0012FCF4
0012FC1C   00A5E7A4
0012FC20   0042E6C9  返回到 Bisonftp.Forms.TCustomForm.Close+21 来自 <Bisonftp.Forms.TCustomForm.CloseQuery>
0012FC24   00000000
0012FC28   00A55BA8
0012FC2C   0047F009  返回到 Bisonftp._Unit61.sub_0047EFE4+25 来自 <Bisonftp.Forms.TCustomForm.Close>
0012FC30   0012FC54  指向下一个 SEH 记录的指针
0012FC34   0047F0E9  SE 处理器
0012FC38   0012FC4C
0012FC3C   00A55BA8
0012FC40   00000000
0012FC44   00000000
0012FC48   00000000
0012FC4C  /0012FC78
0012FC50  |0047AEB4  返回到 Bisonftp.main.TfrmMain.sub_0047ABA0+314 来自 <Bisonftp._Unit61.sub_0047EFE4>
0012FC54  |0012FCC4  指向下一个 SEH 记录的指针
0012FC58  |0047AF03  SE 处理器
0012FC5C  |0012FC78
0012FC60  |00A42A14
0012FC64  |0012FCF4
0012FC68  |00000000
0012FC6C  |00000000
0012FC70  |00000000
0012FC74  |00000000
0012FC78  ]0012FCEC
0012FC7C  |00420FC9  返回到 Bisonftp.Controls.TControl.WndProc+0D9 来自 <Bisonftp.system.TObject.Dispatch>
0012FC80  |0012FD6C
0012FC84  |0012FCF4
0012FC88  |00A42A14
0012FC8C  |0042292F  返回到 Bisonftp.Controls.TWinControl.WndProc+11F 来自 <Bisonftp.Controls.TControl.WndProc>
 
0042E7A80042E798  |.  8BCC          MOV ECX,ESP
0042E79A  |.  8BD3          MOV EDX,EBX
0042E79C  |.  8B83 98010000 MOV EAX,DWORD PTR DS:[EBX+198]
0042E7A2  |.  FF93 94010000 CALL DWORD PTR DS:[EBX+194]         ;此call导致崩溃
0042E7A8  |>  8A0424        MOV AL,BYTE PTR SS:[ESP]
 
00A5E398  0A 04 00 00 04 04 00 00 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E3A8  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E3B8  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E3C8  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E3D8  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E3E8  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
…………………     此处省略
………………..     此处省略
EBX
00A5E7A4  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E7B4  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E7C4  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E7D4  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E7E4  33 C9 83 E9 AA E8 FF FF FF FF C0 5E 81 76 0E BB  3蓛楠?繼乿
…………………     此处省略
………………..    此处省略
EBX + 194
00A5E938  1D 54 21 A8 44 14 A0 33 C7 CB 1C CE 5B B4 99 8E  T!―?撬蝃礄
00A5E948  FC D2 EE 5A D1 C1 CF CA 6E C1 9C 35 90 90 90 90  頩蚜鲜n翜5悙悙
00A5E958  90 90 90 90 9A 5C 3C 7E 0A 00 00 00 00 00 00 00  悙悙歕<~........
00A5E36C  00 00 00 00 00 00 00 00 0A 04 00 00 04 04 00 00  悙悙悙悙悙悙悙悙
00A5E37C  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E38C  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E39C  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙
00A5E3AC  90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90  悙悙悙悙悙悙悙悙

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (6)
雪    币: 1489
活跃值: (1053)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
沙发自己做
2012-3-12 22:42
0
雪    币: 411
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
附件类的文章总是兴趣不大,但又没办法。编辑帖子确实会浪费很多时间,而且vBulletin不支持word导入的功能。还是理解楼主感谢作者滴
2012-3-12 23:41
0
雪    币: 1489
活跃值: (1053)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
重新编辑了一下,排版还是没有WORD好。
2012-3-13 00:53
0
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
5
感谢分享,学到很多东西
2012-3-13 10:42
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习 收下
2012-3-13 11:12
0
雪    币: 78
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
大哥,buffer是通过recv->NtDeviceIoControlFile在驱动里接收的数据,你一个ring3调试器怎么能捕获到ring0的写操作哩...
2012-3-14 15:07
0
游客
登录 | 注册 方可回帖
返回
//