PuTTY pscp 客户端栈缓冲区覆盖(CVE-2016-2563) CVE-2016-2563 CNNVD-201604-097

7.5 AV AC AU C I A
发布: 2016-04-07
修订: 2016-12-03

### 漏洞说明 ------------------------------------------------------- 此漏洞是由于pscp连接目标主机后,接收文件路径时,函数sub_407997在处理文件路径长度时,调用到sscanf函数,此函数对传入的文件路径没有进行严格的长度控制,从而导致了畸形字符串覆盖了参数缓冲区,导致程序返回地址可控,从而可以执行任意代码。 值得一提的是,通过poc我构造了可以远程执行代码的exp,稍后会进行详细说明,无论在windows主机,还是linux主机,执行exp.py之后,可以反控对方主机,执行任意代码,下面,我将通过漏洞回溯,补丁对比以及exp构造三方面来详细说明此漏洞。 ### 漏洞分析 首先我们运行poc.py,同时通过命令: ``` pscp.exe -scp root@IP:/etc/passwd . ``` 来触发此漏洞,运行后输入密码,之后程序崩溃,我们通过附加windbg来观察崩溃位置。 ``` (4d308.4ea50): Access violation - code c0000005 (!!! second chance !!!) eax=00000000 ebx=00000000 ecx=00127dc4 edx=00000000 esi=01320ba1 edi=00000000 eip=41414141 esp=00127e1c ebp=41414141 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246 41414141 ?? ??? ``` 可以看到此时eip已经执行到41414141,而41414141正是poc中构造的畸形字符串,说明程序可控,那么接下来我们要回溯一下漏洞发生前的情况,通过kb查看堆栈调用。 ``` 0:000> kb ChildEBP RetAddr Args to Child WARNING: Frame IP not in any known module. Following frames may be wrong. 00127e18 41414141 41414141 41414141 41414141...

0%
当前有2条漏洞利用/PoC
当前有2条受影响产品信息