文件包含漏洞

文章介绍了PHP文件包含漏洞的原因、类型,如本地和远程文件包含,以及利用这些漏洞的攻击手段,如通过php伪协议读取文件或写入webshell。同时,提到了关键的防护措施,包括检查php.ini配置中的Allow_url_fopen和Allow_url_include选项。
摘要由CSDN通过智能技术生成

文件包含漏洞

文件包含漏洞的定义:

Php文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

产生的原因:

程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。

程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,

但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。

文件包含漏洞有哪几种类型:

1.本地文件包含漏洞

本地包含顾名思义,就是在网站服务器本身存在恶意文件,然后利用本地文件包含使用

2.远程文件包含漏洞

远程文件包含就是调用其他网站的恶意文件进行打开(指定第三方服务器上可运行的PHP木马,拿到webshell,拿到flag文件)

导致文件包含漏洞产生的四个函数

Include()

Include_once() 只包含一次

Require()

Require_once() 只包含一次

Php.ini 全局配置文件

这个文件用来查看一下两个是否开启或关闭

Allow_url_fopen= on/off 允许打开URL文件(预设启用)/ 禁止打开URL文件

Allow_url_include= on/off 允许引用URL文件,新版增加功能(预设关闭) / 禁止引用URL文件,新版增加功能

本地文件包含(解题思路)

直接包含有Flag的文件

通过php伪协议读取代码中的Flag

写入php木马获取webshell,查看Flag

直接包含flag文件

通过php伪协议读取代码中的Flag

Php伪协议(一下两种是经常用到的)

File:// 访问本地文件系统

Php:// 访问各个输入/输出流

一般url中存在参数就可以去猜想是否存在文件包含漏洞,而在不能直接使用file://的情况下(这里也不能直接去查看php.ini文件),我们则需要去查看网页源代码,而输出如下:

File =php://filter/read = convert.base64-encode/resource = index.php

Resource 指定我们要筛选的数据流

Read 可以设定过滤器的名称(就是读取Index.php的内容),并对输入流进行base64编码进行输出(这里必须进行base64编码,不然就会当作php文件进行执行,这样就看不到源码的内容了)

写入php木马获取webshell,查看Flag

将木马上传成功后就可以直接用菜刀连接木马即可查看flag文件

如何判断远程文件包含是否存在

直接查看php.ini全局配置文件

并且以下两个都要开启,才存在远程文件包含漏洞

Allow_url_fopen= on/off 允许打开URL文件(预设启用)/ 禁止打开URL文件

Allow_url_include= on/off 允许引用URL文件,新版增加功能(预设关闭) / 禁止引用URL文件,新版增加功能

远程文件包含漏洞的解题思路

先看远程文件包含漏洞是否存在

指定第三方服务器上可运行的php木马,拿到webshell,查看flag文件

注意:这里一般都是做一个Php木马,在通过url进行运行,拿到webshell,查看flag文件

webshell就是以aspphp、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。 [1]

顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作命令。webshell主要用于网站和服务器管理,由于其便利性和功能强大,被特别修改后的webshell也被部分人当作网站后门工具使用。

伪协议

?file=php://filter/read=convert.base64-encode/resource=flag.php

这里设置base64编码将flag.php给隐藏了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值