从本地文件包含(LFI)到远程代码执行(RCE)

admin 2023年12月12日17:50:34评论31 views字数 944阅读3分8秒阅读模式
声明:所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,作者不承担相应的后果.

发现测试目标的cookie是如下形式:

Cookie:PHPSESSID=

PHPSESSID cookie 是 PHP 原生的,使网站能够存储序列化的状态数据。用于建立用户会话,通常以 Base64 编码。

从本地文件包含(LFI)到远程代码执行(RCE)

使用python对其进行base64解码:

从本地文件包含(LFI)到远程代码执行(RCE)

解码后是序列化的一个对象,其中 ”s:15“ 是/www/index.html 字符串的长度。如果用 /etc/passwd 替换 /www/index.html 看看会发生什么?

从本地文件包含(LFI)到远程代码执行(RCE)

使用 Python重新编码后发送请求,成功获取到了passwd 文件内容。

从本地文件包含(LFI)到远程代码执行(RCE)

到此可以证明这是一个LFI 漏洞,接下来进一步提升危害,看能否执行远程代码,从LFI到 RCE 的最简单方法是通过日志注入。

日志注入是一种允许攻击者篡改日志文件内容的技术,例如将恶意代码插入服务器日志以远程执行命令或获取反弹shell。

测试反弹shell失败了,因此尝试执行“ls -lsa” 这个命令,列出一个目录来证明RCE漏洞存在。

由于LFI 漏洞只允许我们读取/执行文件,而不能写入或创建新文件。那么我们将如何注入代码呢?我们可以通过将访问日志添加到服务器中的方法来实现。

首先,我们需要知道正在运行的Server:

从本地文件包含(LFI)到远程代码执行(RCE)

返回是nginx的!访问日志文件默认存储在:/var/log/nginx/access.log

首先,看看是否可以使用 Python 脚本访问日志文件:

从本地文件包含(LFI)到远程代码执行(RCE)

很好,确实有!日志每一行中都包含用户的“User-Agent”,现在,让我们看看是否可以使用标头“User-Agent”添加日志。

在Python 脚本中,修改“User-Agent”为

headers = {'User-Agent': 'Facundo Fernandez'}

从本地文件包含(LFI)到远程代码执行(RCE)

返回日志中可以看到,“User-Agent”修改成功了:

从本地文件包含(LFI)到远程代码执行(RCE)

那么修改“User-Agent”为PHP代码呢,调用system函数

headers = {'User-Agent': "<?php system('ls -lsa');?>"

远程代码执行成功!system函数执行结果被写入到日志文件中了。

从本地文件包含(LFI)到远程代码执行(RCE)

原文始发于微信公众号(薯条机器猫):从本地文件包含(LFI)到远程代码执行(RCE)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月12日17:50:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从本地文件包含(LFI)到远程代码执行(RCE)https://cn-sec.com/archives/2269002.html

发表评论

匿名网友 填写信息