[8]-文件上传漏洞-服务器关联型漏洞

学习服务器关联型漏洞以及其他更高阶上传漏洞的绕过和利用技巧,讲解足够多并且比较高级的绕过技巧的同时,积累漏洞利用方式,引发思考,希望能从量变到质变,一方面是实战利用;另一方面,漏洞挖掘、检测时启发式思考。

一、与webserver有关漏洞

1、IIS解析漏洞

  1. 存在版本
    ISS 5.x/6.0
  2. 漏洞触发原理
    • 当创建.asp的文件目录的时候,在此目录.asp/下的任意文件,服务器都解析为asp文件
    • 服务器默认不解析;以后的内容
  3. 漏洞利用形式:
    • www.xxx.com/xx.asp/xx.jpg会被解析成asp文件
    • www.xxx.com/xxx.asp;.jap会被解析为asp文件
  4. 具体细节
    • windows平台下,所有的程序会去调用很多的外部动态链接库
    • ISS解析asp文件时
    • 在5.x-6.0的版本中,会调用asp.dll,去解析所访问的文件资源
    • 而在解析所访问的目录时,代码有处理不完善的地方,从而触发漏洞
    • 此外由于微软嘴硬,不承认其为漏洞,故至今未曾修复。
  5. 深入探究漏洞
    逆向常用且较好用的工具:IDA以及F5插件,组合逆向asp.dll就可以找到相关的代码段

2.Nginx解析漏洞

  1. 触发条件
    低版本nginx
  2. 原理
    低版本Nginx中存在一个由PHP-CGI导致的web解析漏洞
    PHP的配置文件中一个关键选项cgi.fix_pathinfophp.ini配置文件中,默认是开启的
    当URL中有不存在的文件时,PHP就会默认向前解析
  3. 漏洞利用流程
  • 访问:www.xx.com/phpinfo.jpg/1.php(注:1.php不存在)
  • 此时就会解析phpinfo.jpg文件,但按照php格式解析
  1. 具体细节
  • 访问后端托管在Nginx服务
  • 用户访问后端托管在Nginx的服务时
  • 如果URL中有不存在的文件,则PHP默认就会向前解析
  • 直到解析到能够解析的文件为止。
  1. 内容检测绕过方式
    通过内容检测的一个jpg文件执行php,见后续

3.Apache解析漏洞

  1. 触发条件
    1.x和2.x版本中
  2. 原理
    Apache 1.x和2.x版本中,Apache从右至左开始判断后缀,跳过非可识别后缀,直到找到可识别后缀为止,然后将该可识别后缀进行解析。
  3. 漏洞利用流程:
    • 上传shell.php.test
    • 访问shell.php.test,服务器解析时,按照php格式解析

二、典型绕过及利用方式

1.前端验证绕过

  1. 前端输入不可信---web安全根本性原因
    对于前端而言,非常好绕过,方式非常多。
  2. 漏洞成因:
    只在前端利用JS进行校验,而未曾在后端校验
  3. 漏洞利用方式
    • 使用Burp Suite抓包,修改发送至后端的数据包内容,然后发送至服务器
    • 通过浏览器禁止/删除JavaScript代码

2..htaccess绕过

  1. .htaccess概念
    .htaccess文件即:分布式配置文件,
  2. 该文件作用
    提供一种方式,使得web服务器能对整个网站的配置来做一个灵活的调整,使得配置文件可以随文件夹不同而不同,其所放置的文件夹及所有的子文件夹都会受此影响。
    其语法同apache主配置文件
  3. 如何利用
    场景:启用了.htaccess文件的网站,
    利用:使用此文件类型来绕过限制较全面的黑名单过滤
    原理:告知,可以某文件夹目录下可以去解析我们指定的某一类文件。
  4. 实战场景流程
    • 上传.htaccess文件,文件内容设置为AddType application/x-httpd-php .test,即:将.test文件解析为php文件类型
    • 上传一句话木马,文件名称为shell.test
    • 访问shell.test即可执行一句话木马
  5. 思考:
    为什么shell.test会执行?

3.大小写绕过

  1. 基础
    与操作系统有关,windows操作系统对于大小写不敏感,而Linux对大小写敏感的特性
    针对黑名单过滤
    利用对url处理,对大小写不敏感特性
  2. 场景
    黑名单禁止上传.php文件,则我们可以尝试上传.pHpPHP等等此类文件,利用其对大小写敏感特性
  3. 注意
    虽然Linux对于大小写敏感,但事实上,也可以完成大小写绕过。
  4. Linux绕过成因
    Linux服务器的URL区分大小写,对用户不友好,因此一般都会手动配置部署在Linux的webapp对大小写不敏感。

posted @ 2023-01-25 00:08  缪白(Miubai)  阅读(54)  评论(0编辑  收藏  举报