首页
社区
课程
招聘
[原创]小白分析PCManFTP漏洞 CVE-2013-4730
发表于: 2020-11-26 19:23 7622

[原创]小白分析PCManFTP漏洞 CVE-2013-4730

2020-11-26 19:23
7622


软件名称PCManFTP

软件版本2.0

漏洞模块PCManFTPD2.exe

模块版本:2.0.0.0

编译日期:2020-11-24

操作系统Window 7 专业版(32位)

漏洞编号CVE-2013-4730

危害等级:高危

漏洞类型:缓冲区溢出

威胁类型:远程


PCMan's FTP Server是洪任谕先生所研发的一套FTP服务器软件。

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。


USER <username>

PASS <password>

CWD <dir path>

RETR <filename>

RMD <directory>

RNTO <new path>

HELP <command>

用户名

密码

改变服务器上的工作目录

在服务器上删除指定目录

从服务器上找回(复制)文件

对新路径重命名

返回指定命令信息


PCMan's FTP Server 2.0版本中存在缓冲区溢出漏洞。远程攻击者可借助USER命令中的长字符串利用该漏洞执行任意代码。在recv函数上下断点持续跟踪,发现服务端在接收到登录请求之后,会将受到的信息进行字符串拼接,而在字符串拼接的地方,并未进行长度控制,因此导致缓冲区溢出,即使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用 snprintf函数,该函数可对写入字符数做出限制。



1)自动生成有序数,并能确定异常点的偏移(可以使用windbg插件Mona2)

2)Mona2环境需要Python 2.7

3)Windbg(用来定位JMP ESP地址)

4)OllyDbg(为了后续测试)

5)Visual Studio2019写测试代码和ShellCode

1)虚拟机win7专业版sp1

2)安装WDK,它自带WinDBG

3)安装Python2.7.2

4)安装Visual C++ 2008运行库

5)安装WinDbg的Python插件Pykd

6)复制mona.py和windbglib.py到WinDbg同目录

7)运行WinDbg随便调试一个程序进行测试以上环境

  .load pykd.pyd加载pykd

  !py mona 测试Mona

  .reload /f加载windbg符号

FTP需要符合标准:RFC959

1)建立Socket连接,连接目标FTP

2)连接FTP服务器的欢迎语

3)发送USER XXXFTP

4)接受请求结果

5)详细代码在后文exploit(poc中4))


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-11-27 09:25 被哦哈哈哈哈编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
666
2020-11-27 12:22
1
游客
登录 | 注册 方可回帖
返回
//