• eval
    • php4,5,7
    • evaluate string as php code
  • 一句话
    • <?php @eval($_POST['hacker']); ?>
  • 通过curl执行”一句话”(bwapp)
    • curl -d “hacker=echo get_current_user();” http:127.0.0.1/images/shell.php
    • -d:(–data)HTTP post data

IIS5.X/6.0解析漏洞

  • 1、当创建.asp的文件目录时,在此目录下的任意文件,服务器都解析为asp文件
  • 2、服务器默认不解析分号”;”后的内容
  • 利用形式
  • 在低版本Nginx中存在 PHP-CGI 导致的解析漏洞
  • php.ini中的cgi.fix_pathinfo是默认开启的
  • 当URL中有不存在的文件时,php就会默认向前解析
  • 利用形式
  • apache在1.x和2.x版本中存在解析漏洞
  • apache从右至左判断后缀,路过非可识别后缀
  • 利用形式
    • 上传 shell.php.test
    • 访问 shell.php.test,服务器会解析shell.php.test文件,按照php文件格式解析

      前端验证绕过

  • 网站在前端用javascript来做校验
  • 利用形式
    • 通过burp suite抓包,然后修改放行
    • 或 ,删除,禁止js代码

      .htaccess绕过

  • 分布式配置文件,使得配置文件可以随文件夹不同而不同
  • 启用了.htaccess文件的网站,使用此文件类型来绕过限制较全的 黑名单 过滤
  • 利用形式
    • 上传一个.htaccess文件,文件内容设置为 AddType application/x-httpd-php .test
    • 上传一句话,文件名设置为shell.test
    • 在浏览器访问shell.test即可执行

      大小写绕过

  • 比较简单的绕过方式,针对黑名单
  • 和windows大小写不敏感有关
  • linux平台为了用户体验,配置了大小不敏感

    windows文件流特性绕过

  • NTFS实现了多文件流特性
    • 默认使用未命名的文件流
    • 默认不显示文件的命名文件流
    • 命名的文件流在功能上和默认使用的未命名文件流一致,甚至可以用来启动程序
  • 测试
    • echo 111 > test.txt:111.txt
      • 将111写入test.txt,指定文件流是111.txt
    • echo test > test.txt
    • echo 222 > test.txt::$data
      • 将222写入test.txt,使用默认数据流
  • 利用形式
    • 利用文件流特性构建一个文件类型符合我们要求,又能达到解析目的的文件

      %00截断绕过

  • 属于编码绕过
  • 路径以拼接的形式从前端获取,我们就可以在路径上截断
  • %00是URL的结尾符,如果不是通过URL传输,则写成其它形式
    • 想要输入%00,通过BP截断后,在Hex中更改
  • 截断攻击生效的原因
    • 我们能分别控制:存储路径,文件名
  • 利用形式
    • 设置save_path=../upload/a.php%00
    • 上传内容为”一句话”的jpg文件

      文件头检测绕过

  • 工具:UltraEdit
  • 常见图片文件头
    • png: 89 50 4E 47
    • jpg: FF D8 FF DB
    • gif: 47 49 46 38
  • 将代码聚合到图片中

    源代码审计

  • 代码逻辑是否足够严谨
  • 函数调用是否足够安全