声明:所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,作者不承担相应的后果. |
发现测试目标的cookie是如下形式:
Cookie:PHPSESSID=
PHPSESSID cookie 是 PHP 原生的,使网站能够存储序列化的状态数据。用于建立用户会话,通常以 Base64 编码。
使用python对其进行base64解码:
解码后是序列化的一个对象,其中 ”s:15“ 是/www/index.html 字符串的长度。如果用 /etc/passwd 替换 /www/index.html 看看会发生什么?
使用 Python重新编码后发送请求,成功获取到了passwd 文件内容。
到此可以证明这是一个LFI 漏洞,接下来进一步提升危害,看能否执行远程代码,从LFI到 RCE 的最简单方法是通过日志注入。
日志注入是一种允许攻击者篡改日志文件内容的技术,例如将恶意代码插入服务器日志以远程执行命令或获取反弹shell。
测试反弹shell失败了,因此尝试执行“ls -lsa” 这个命令,列出一个目录来证明RCE漏洞存在。
由于LFI 漏洞只允许我们读取/执行文件,而不能写入或创建新文件。那么我们将如何注入代码呢?我们可以通过将访问日志添加到服务器中的方法来实现。
首先,我们需要知道正在运行的Server:
返回是nginx的!访问日志文件默认存储在:/var/log/nginx/access.log
首先,看看是否可以使用 Python 脚本访问日志文件:
很好,确实有!日志每一行中都包含用户的“User-Agent”,现在,让我们看看是否可以使用标头“User-Agent”添加日志。
在Python 脚本中,修改“User-Agent”为:
headers = {'User-Agent': 'Facundo Fernandez'}
返回日志中可以看到,“User-Agent”修改成功了:
那么修改“User-Agent”为PHP代码呢,调用system函数:
headers = {'User-Agent': "<?php system('ls -lsa');?>"
远程代码执行成功!system函数执行结果被写入到日志文件中了。
原文始发于微信公众号(薯条机器猫):从本地文件包含(LFI)到远程代码执行(RCE)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论