PHP代码审计 ----- 任意文件读取 & 删除漏洞

 任意文件读取

        通过提交专门设计的输入,攻击者就可以在被访问的文件系统中读取或写入任意内容,往往能够使攻击者从服务器上获取敏感信息文件正常读取的文件没有经过校验或者不严格,用户可以控制这个变量读取任意文件

漏洞危害

任意文件读取漏洞,是web安全里高危的漏洞,它可以泄露源码数据库配置文件等等,导致网站处于极度不安全状态。

漏洞挖掘思路

        fopen()         需要php.ini开启allow_url_fopen = On 开启

        file_get_contents()

        fread

        fgets

        fgetss

        file

        fpassthru

        parse_ini_file

        readfile

        

文件结构

去访问一下1.txt ,看到内容111   正确

 

读取config目录下的文件,

 

 

第一种形式

要记住,审计的时候,进行一个全局搜索

 

这时以上,常见的 三种形式   file_get_contents()、 fopen($filename,"r")r只读 、readfile()

漏洞之所以会发生是因为攻击者可以将路径遍历序列放入文件名内,从当前位置向上回溯,从而浏览整个浏览器的的任何文件

任意文件删除

        攻击者从寻找上删除的功能,正常删除功能的文件没有经过校验或者不严格,攻击者控制这个可操作的变量配合目录遍历进行删除其他文件

文件删除 --- 代码案例

unlink()函数

$filename = $_GET['file'];
if(file_exists($filename)){
    unlink($filename);
    echo "<script>alert('删除成功')</script>";
}else{
    echo "<script>alert('删除失败')</script>";
}

file_exists() 判断代码是否存在

xxx?file=1.txt 删除了 同级目录下的1.txt

xxx?file = ./config/admin.php       就删除了 config目录下的admin.php文件

       

修复方案

        正则严格判断用户输入参数的格式

        检查使用者输入的文件名是否有“..”的目录阶层字符

        在php.ini文件中设置open basedir来限定文件访问的范围

也是前面提到的目录穿越,也要做好修复

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值