在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 。
3.7.1.6. WAF绕过
有的waf在编写过程中考虑到性能原因,只处理一部分数据,这时可以通过加入大量垃圾数据来绕过其处理函数。
另外,Waf和Web系统对 boundary 的处理不一致,可以使用错误的 boundary 来完成绕过。
3.7.1.7. 竞争上传绕过
有的服务器采用了先保存,再删除不合法文件的方式,在这种服务器中,可以反复上传一个会生成Web Shell的文件并尝试访问,多次之后即可获得Shell。
3.7.2. 攻击技巧
3.7.2.1. Apache重写GetShell
Apache可根据是否允许重定向考虑上传.htaccess
内容为
AddType application/x-httpd-php .png php_flag engine 1
就可以用png或者其他后缀的文件做php脚本了
3.7.2.2. 软链接任意读文件
上传的压缩包文件会被解压的文件时,可以考虑上传含符号链接的文件 若服务器没有做好防护,可实现任意文件读取的效果,如果觉得防护做的不到位 不放心的话,可以找专业的网站安全公司来处理解决,毕竟术业有专攻,国内做的比较好的公司如:Sinesafe,绿盟,启明星辰等等。
3.7.3. 防护技巧
使用白名单限制上传文件的类型
使用更严格的文件类型检查方式
限制Web Server对上传文件夹的解析