PHP代码审计------文件上传攻击

本文详细探讨了PHP代码审计中的文件上传攻击,包括后缀绕过、系统命名绕过和.user.ini利用。文章阐述了上传攻击的原理、条件及防御总结,讲解了各种绕过技术,如客户端JavaScript检测、服务端MIME防护、文件扩展名检测和内容检测的防御手段及绕过方法。同时,介绍了文件解析攻击,如Apache和IIS的解析漏洞,以及如何通过服务器设置加强防御。
摘要由CSDN通过智能技术生成

一.原理

攻击者利用服务器端没有对用户上传的文件进行正确的处理,导致攻击者可以向某个可通过 Web 访问的目录上传恶意文件,并且该文件可以被Web服务器解析执行。

move_uploaded_file(file,newloc):

• move_uploaded_file() 函数将上传的文件移动到新位置, 若成功,则返回 true,否则返回 false
在这里插入图片描述

1. 后缀绕过

部分服务仅根据后缀、上传时的信息或Magic Header来判断文件类型,此时可以绕过。

php由于历史原因,部分解释器可能支持符合正则 /ph(p[2-7]?|t(ml)?)/ 的后缀,如 php / php5 / pht / phtml / shtml / pwml / phtm 等 可在禁止上传php文件时测试该类型。

jsp引擎则可能会解析 jspx / jspf / jspa / jsw / jsv / jtml 等后缀,
asp支持 asa / asax / cer / cdx / aspx / ascx / ashx / asmx / asp{80-90} 等后缀。

除了这些绕过,其他的后缀同样可能带来问题,如 vbs / asis / sh / reg / cgi / exe / dll / com / bat / pl / cfc / cfm / ini 等。

2. 系统命名绕过

在Windows系统中,上传 index.php. 会重命名为 . ,可以绕过后缀检查。 也可尝试 index.php%20 , index.php:1.jpg index.php::$DATA 等。 在Linux系统中,可以尝试上传名为 index.php/../aa/../index.php/. 的文件

3 .user.ini

在php执行的过程中,除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。 .user.ini 中可以定义除了PHP_INI_SYSTEM以外的模式的选项,故可以使用 .user.ini 加上非php后缀的文件构造一个shell,比如 auto_prepend_file=01.gif

二.流程与攻击防御总结

在这里插入图片描述

三.上传攻击的条件

攻击者要想成功实施文件上传攻击,必须要满足以下四个条件:
1.网站有上传功能
2.上传的文件能够被Web服务器解析执行,特定的后缀名。并且存放上传文件的目录要有执行脚本的权限。
3.用户能够通过Web访问这个文件。如果文件上传后,不能通过Web访问,那么也不能成功实施攻击。
4.要知道文件上传到服务器后的存放路径和文件名称。

因为许多Web应用都会修改

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值