Web安全深度剖析(一)

上传漏洞基础

0x00 解析漏洞

IIS,Apache,PHP CGI均存在解析漏洞

  • IIS解析漏洞
    1. 当建立.asa、.asp格式的文件夹时,其目录下的任意文件都将被IIS当作asp文件进行解析,如http://127.0.0.1/test.aps/shell.txt
    2. 当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行,如http://127.0.0.1/test.aps;1.jpg
  • Apache解析漏洞(版本1.,2.)
    Apache解析原则,当遇到不认识的扩展名时,将会从后向前解析,知道遇到有认识的扩展名为止,如果都不认识,则会暴露源码。Apache可识别扩展名请查看Apache安装目录下“/conf/mime.types”。
    如shell.php.rar.asuri,它便会解析为php文件.
  • PHP CGI解析漏洞/Nginx解析漏洞
    前提:php配置文件中 cgi.fi: x_pathinfo为开启状态

    IIS7.0,IIS7.5,Lighttpd也有此漏洞

    当放问目标网站文件时,在url后面加上/1.php,便能将此文件当作php脚本执行.
    如:1.jpg是上传的shell,url为http://127.0.0.1/1.jpg,当使用http://127.0.0.1/1.jpg/1.php便能执行shell

0x01上传绕过

  • 客户端检测绕过
    这个较为简单,前端脚本公开,可以对方代码灵活调整,可以通过burp修改上传数据绕过或使用firebug修改前段js验证
  • 服务器端绕过
    1. MIME类型验证
      通过burp修改MIME类型可绕过
    2. 黑/白名单过滤
      • 黑名单
        1. 可以寻找”漏网之鱼”,如.cer
        2. 后缀掺杂大小写试图绕过,如.pHp
        3. Windows服务器会自动删掉扩展名后的小数点或空格
      • 白名单
        配合解析漏洞上传shell.php;1.jpg可尝试绕过(仅适用于IIS6.0)
    3. 目录验证
      有时服务器会通过上传的信息,来为上传的文件选择文件夹,而这个文件夹名通常是前端控制,因此可修改文件夹名(结合解析漏洞)绕过。如文件夹名test.asp
    4. 截断上传攻击
      00截断,上传文件1.php%00jpg,服务器在存储文件时会将00后的扩展名自动省去,这样就达到绕过效果.