文件上传解析漏洞笔记

锦衣   ·   发表于 2020-06-21 00:47:18   ·   闲聊灌水区

Webshell:网站会话[拥有网站权限]
getshell:获取会话[比如上传网站木马获得Webshell权限,获得一个权限]
反弹shell:受害机器去访问攻击机

黑白名单机制:
黑名单:不允许上传什么
白名单:只允许上传什么

  1. 白名单比黑名单更安全

客户端验证绕过:

  1. 抓包修改文件后缀
  2. 客户端关闭JS

服务端验证绕过:

服务端检测几个常见的手段:

  • 检查Content-Type (内容类型)
  • 检查后缀 (检查后缀是主流)
  • 检查文件头

制作图片马绕过Content-Type :
cmd: copy a.jpg/b + 1.txt 123.jpg(1.txt里面放一句话木马,组合变成123.jpg图片马,图片马可以很好的绕过内容类型和文件头)

黑名单绕过:
能被解析的文件扩展名列表:

  1. jsp jspx jspf
  2. asp asa cer aspx
  3. php php3 php4 php5 phtml
  4. exe exee
  1. 文件名大小写,后缀.空绕过,构建pphphp双写绕过[后端没有二次校验]

.htaccess文件绕过: 用了伪静态的网站都会开启这个功能

  1. .htaccess文件也被称为分布式配置文件,提供了针对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
  2. .htaccess功能:
  3. 文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态化、禁止特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表
  4. 很可惜,这么一个强大的功能默认是不开启的
  5. 例如:AddType application/x-httpd-php .jpg 这个指令代表着.jpg文件会当做php来解析[把这条指令放进.htaccess文件]
  6. 改文件名:cmd: ren 17.txt .htaccess

windows文件流绕过: ::$DATA

  1. 这里利用到了NTFS交换数据流(ADS),ADSNTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上,而在资源管理器中却只能看到宿主文件,找不到寄宿文件。
  2. 1.txt = 1.txt::$DATA
  3. cmd: echo hello world >>1.txt [相当于把hello world 写进1.txt]
  4. cmd: echo hello world >>1.txt:a.txt[写进a.txt里面,a.txt寄宿在1.txt里面]
  5. cmd: notepad 1.txt:a.txt 可以打开寄宿文件 或者在cmddir /r 把寄宿文件显示出来

白名单绕过:
%00截断[GET] 和00截断[POST,抓包改hex]
php 5.3.29版本以下可以使用00截断,往上的版本就没有00截断了
上传流程: 上传到临时目录 > 拼接到要移动的目录 > 移动过去重命名
修改上传时的目录:save_path=../upload/1.php%00

条件竞争绕过: 应用于先上传再检测

  1. 先检测还是还是先上传再检测然后删除
  2. 服务器运算需要时间,当图片马上传还在检测的时候去把文件访问到了,然后在图片马里面写一个木马文让它生成一个文件。跟计算机拼手速,在它删除前访问到上传的文件,然后就可以生成一个木马文件。
  3. 访问的线程要比上传的大

file_put_contents() 函数把一个字符串写入文件中。

<?php $a = '<?php @eval($_REQUEST[\'a\'])?>';file_put_contents('1.php',$a);?>

<?php file_put_comtects('nf.php';'<?php eval($_REQUEST[1])?>');?>

a=file_put_comtects('nf.php';'<?php eval($_REQUEST[1])?>');

IIS6.0畸形解析漏洞:

  1. 扩展名为`asa、cer、cdx `都会被当做asp文件解析 [`IIS`默认配置这些扩展名会被`asp.dll`进行处理]
  1. IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:
  2. test.asp;.jpg 他将当做asp进行解析
  3. test.asp/123.jpg 他将当做asp进行解析

CGI解析漏洞:

使用范围: PHP
中间件任意: IIS7.5 Nginx[典型]

  1. 这不是Nginx特有的漏洞,在`IIS7.0、IIS7.5、Lighttpd`Web容器中也经常会出现这样的解析漏洞[直接在图片地址后面加/.php就可以了,如果乱码代表漏洞可用]

Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设SCRIPT_FILENAME
当访问 www.xx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name 被设置“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME(绝对路径)传递给PHP CGI,如果开启了cgi.fix_pathinfo=1选项(这个默认值就是1,所以没有设置过就是开启),那么就会触发在PHP中的如下逻辑:
PHP会认为SCRIPT_FILENAME(绝对路径)是phpinfo.jpg,而1.php是PATH_INFO,所以就会phpinfo.jpg作为PHP文件来解析了.
也是一个逻辑问题,所以说我们只需要在正常的.jpg后面加/.php就可以成功的绕过解析

打赏我,让我更有动力~

0 Reply   |  Until 2020-6-21 | 1163 View
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.