漏洞分析报告-PCManFTP v2.0(CVE-2013-4730)

PCManFTP v2.0CVE-2013-4730)漏洞分析报告

 

软件名称PCManFTP

软件版本2.0

漏洞模块PCManFTPD2.exe

模块版本2.0.0.0

编译日期2005-01-01

操作系统Windows XP/2003/7/8.1/10

漏洞编号CVE-2013-4730

危害等级高危 

漏洞类型:缓冲区溢出

威胁类型:远程

 

 

2018年5 月22日

目录

1.    软件简介    2

2.    漏洞成因    2

3.    利用过程    2

4.    PoC    2

5.    结语    2

6.    参考资料    3

 

  1. 软件简介

PCMan's FTP Server是洪任谕程序员所研发的一套FTP服务器软件。该软件具有体积小、功能简单等特点。

软件界面:

  1. 漏洞成因

PCMan's FTP Server 2.0.0版本中存在缓冲区溢出漏洞。远程攻击者可借助USER命令中的长字符串利用该漏洞执行任意代码。也就是说我们在未提前获得目标的FTP访问权限的前提下,即可对其进行溢出攻击,因此这个漏洞造成的影响非常严重。

  1. 构造触发漏洞的POC

我们需要有一份能与FTP进行交互的代码才能受控的触发此漏洞。理论上讲,只要我们编写的代码符合RFC959标准,就可以与任何一个FTP服务器进行交互

不过FTP客户端的实现非常简单,我们完全没必要去阅读RFC959文档,我们只需作如下几步:

1.建立Socket链接,连接目标FTP

2.接受FTP服务器的欢迎语

3.发送"USER XXXX"登录请求

4.接受请求结果(不会走到这一步,此时FTP服务器已被攻击完)

和服务器交互的代码:

使用Mona.py测试溢出点

Mona2是Corelan Team团队开发的一个专门用于辅助漏洞挖掘的脚本插件

Mona原本只支持Immunity Debugger,但是由于Immunity Debugger与OllyDbg同根同源,而OllyDbg的更新已经明显乏力,因此Mona2推出了可以在Windbg上使用的版本

Mona可以帮助我们快速的定位溢出点,并且可以帮助我们查找一些用于溢出的特殊指令,以及构成复杂攻击代码的小部件

我们现在可以用Mona2生成一段3000字节长度的测试字符串,用于确定溢出点

触发溢出后可见如下回显,证明我们正要在一个不存在的位置执行代码

通过以上信息我们知道EIP被覆盖成了0x31704330,我们可以使用如下的Mona2命令计算其溢出点

由以上结果可知,我们的溢出点在偏移2012的位置

溢出点已经确认,接下来我们需要用Mona2在目标程序空间中找到一个跳板指令"JMP ESP"

接下来可以构造我们的Exploit了

 

 

 

  1. 构造Exploit

构建一个长字符串发送登录请求

格式:"USER "+填充字节区+JMP ESP跳板指令+滑板指令区+Shellcode(前面一部分是解密代码,后面是加过密的Shellcode(不含0x00,0x0A,0x0D))+"\r\n"

以下是源码

  1. 结语

  • 造成缓冲区溢出的主要原因是在对字符数组进行操作时候,并未检测它的长度,从而导致错误的发生.
  • 在进行漏洞挖掘的时候,要注意发生溢出的函数是否有参数.编写exploit代码的时候,要将这些参数考虑在内.
posted @ 2018-05-30 17:23  汉广5651552  阅读(284)  评论(0编辑  收藏  举报