PCMan's FTP 漏洞(CVE-2013-4730)详细复现调试过程与exp构造

作者:   深圳市网安计算机安全检测技术有限公司 2019/05/16 09:49:48 135次阅读 国际
文章来源:https://www.anquanke.com/post/id/177939

d2d4795e6412d1d5b7c383a1e92d3018.png

1. 漏洞简介

软件名称

PCMAN ftp

软件版本

server 2.0.7

漏洞类型

远程缓冲区溢出

漏洞触发点

未对user命令做长度限制检查

漏洞编号

CVE-2013-4730

其他信息:

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-4730_A

 

2. 漏洞详细复现

1. 环境搭建

1. 准备工作:

  1. 自动生成有序数,并能确定异常点的偏移可以使用windbg插件Mona2
  2. Mona2 需要Python2.7
  3. windbg(用来定位jmp esp地址)
  4. x64dbg
  5. vs写测试代码和shellcode

2. 环境配置:

  1. 虚拟机win7 sp1
  2. wdk 自带windbg
  3. python2.7
  4. vc++ 2008运行库
  5. 安装windbg的python 插件pykd
  6. 复制mona.py和windbglib.py到windbg同目录
  7. 运行windbg随便调试一个程序进程环境测试
.load pykd.pyd加载pykd
!py mona测试mona
.reload /f检查windbg符号路径是否正常

mona安装成功截图

2adc912fbf2bb1714f720f72c4f98a91.png

2. vs2015写测试代码

        首先我们要能与FTP进行交互才能触发漏洞,只要我们编写的代码符合RFC959标准,就可以与任何一个FTP服务器进行交互,有兴趣的可以去阅读RFC959文档。

7c0555ec474ffb4bfe40fa24ed29ba5f.png

15efad1d818a650660682166c63e0797.png

图中可以看到测试代码连接成功 

0a01e920d5fb1e8005f4e198a40a9ea0.png

        在上述的测试代码中将用户名 USER SUN 改为刚生成的这个长字符串。看程序能不能崩溃,如果崩溃了,说明测试成功 

9cdf113be37d52800b95e31640de16c6.png

        查看栈区发现已经被我们的数据覆盖了 

 96d64afb2f8675e826b5ea1682cca83d.png

4e88e4ad601928175007c69914726ce2.png

abc20535fddbe6a96fe33fc56caa0003.png

db284ce84d718b96132ec82b996034a9.png

32d23e4107e133f4c71b1999561d2d1f.png

17603aa96f7f6c95ec0049859d1aaeed.png

2094c8b3364f0e9f49c15deda1f9a078.png

1b7005f5346fe95839a7e75e1de2418c.png

70fa600cee12ee44d0ce2abb0be71948.png

223a94e4fa7c48297aef7149447cb714.png

637e07cfbe0f204cd2803e1f63c12aa3.png

ce07905b24cd93b974bde70b5c3ec183.png


指导单位
广东省公安厅网络警察总队 广东省信息安全等级保护协调小组办公室