21、渗透测试笔记_文件上传&&解析漏洞_20191118

1、文件解析漏洞

  • 解析漏洞主要说的是一些被IIS、Apache、nginx在某种情况下解释成脚本文件格式的漏洞

1.1、IIS 5.x/6.0解析漏洞(两种解析)

  • 1)目录解析 /xx.asp/xx.jpg

    在网站下建立文件夹的名字为.asp、.asa的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行;

  • 2)文件解析 a.asp;.jpg

    在IIS6.0下,分号后面的不被解析,也就是说a.asp;.jpg会被服务器看成是a.asp,还有默认的可执行文件除了asp还有三种:a.asa、a.cer、a.cdx

1.2、Apache解析漏洞

  • Apache是从右到左开始判断解析,如果为不可识别解析,就在往左判断,如a.php.owf.rar “.owf”和“.rar”这两种后缀是apache不可识别解析,apache就会把a.php.owf.rar解析为php.
  • 如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个a.php.rara.jpg.png…(把你知道的后缀都写上…)去测试后缀是否是合法后缀,任意不识别的后缀,逐级向上识别

1.3、Nginx<8.03空字节代码执行漏洞

  • 影响版本:0.5.,0.6.,0.7<=0.7.65,0.8<=0.8.37
  • Nginx在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码

1.4、htaccess文件解析

  • 如果在Apache中的.htaccess可被执行,且可被上传。那可以尝试在.htaccess中写入:

    <FilesMatch "shell.jpg">SetHandler application/x-httpd-php
    </FilesMatch>
    
  • 在上传shell.jpg的木马,这样shell.jpg就可以解析为php文件

2、检测绕过

2.1、客户端检测绕过(javascript 检测)

  • 首先判断JS本地验证
  • 通常可以根据它的验证警告弹框的速度可以判断,如果你电脑运行较快,那么我们可以用burp抓包,在点击提交时候burp没有抓到包,就已经弹框那么说明这个就是本地js验证。
  • 绕过方法:
    1. 使用burp抓包改名
    2. 使用firebug直接删除掉本地验证的js代码
    3. 添加js验证的白名单如将php的格式添加进去

2.2、服务端检测绕过(MEME类型检测)

  • MIME的作用:

    使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件

  • web服务器使用MIME来说明发送数据的种类,web客户端使用MIME来说明希望收到的数据种类

  • tomcat的安装目录\conf\web.xml中就定义了大量MIME类型;

  • 绕过方法:

    直接使用burp抓包,得到post上传数据后,将Content-Type:text/plain改成Content-Type:image/gif

2.3、服务端目录绕过

  • 当/a/1.php的目录a没有权限时,可以使用…/.php的形式,(…/是到上层目录),这样文件即可上传到和a同级的目录

2.4、服务器检测绕过(文件扩展名检测)

  • 黑名单检测

    黑名单的安全性比白名单的安全性低很多,攻击手法自然也比白名单多一般有个专门的blacklist文件,里面会包含常见的危险脚本文件例如fckeditor2.4.3或之前版本的黑名单

  • 白名单检测

    白名单相对来说比黑名单安全一些,但也不是绝对安全

2.5、绕过黑名单

  1. 文件名大小写绕过
    • 用像Asp、pHp之类的文件名绕过黑名单检测
  2. 名单列表绕过
    • 用黑名单里没有的名单进行攻击,比如黑名单里没有asa或cer之类
  3. 特殊文件名绕过
    • 比如发送的http包里把文件名改成test.asp.或test.asp_(下划线为空格),这种命名方式在windows系统里是不被允许的,所以需要在burp之类里进行修改,然后绕过验证后,会被windows系统自动去掉后面的点和空格,但要注意Uinx/Linux系统没有这个特性
  4. 0x00截断绕过
    • 扩展名检测中,目前我只遇到过asp的程序有这种漏洞,给个简单代码
    • name=getname(http request)//假如这时候获取到的文件名是test.asp.jpg(asp后面为0x00)
    • type=gettype(name)//而在gettype()函数里处理方式是从后往前扫描扩展名,所以判断为jpg
    • if(type==jpg)

2.6、绕过白名单

  1. 0x00截断绕过

    • 用test.asp%00.jpg的方式进行截断,属于白名单文件,再利用服务端代码的检测逻辑,漏洞进行攻击,目前我只遇到过asp的程序有这种漏洞
  2. 解析调用/漏洞绕过

    • 这类漏洞直接配合上传一个代码注入过的白名单文件即可,再利用解析漏洞/调用
  3. htaccess文件攻击

    • 通过一个.htaccess文件调用php的解析器去解析一个文件名中只要包含"haha"这个字符串的任意文件,所以是无论文件名是什么样子,只要包含"haha"这个字符串,都可以被以php的方式解析;一个自定义的.htaccess文件就可以各种各样的方式去绕过很多上传验证机制

    • 建立一个.htaccess文件,里面内容如下:

    • <FilesMatch "haha">
      SetHandler application/x-httpd-php </FilesMatch>
      
    • 同目录有个我们上传一个只有文件名并包含字符串的“haha”,但是却无任何扩展名的文件,里面的内容是php一句话木马

2.7、绕过检测文件头

  • 主要是检测文件内容开始处的文件幻数,比如图片类型的文件幻数如下

  • 要绕过jpg文件幻数检测就要在文件开头写上以下的值

    Value=FF D8 FF E0 00 10 4A 46 49 46
    
  • 要绕过gif文件幻数检测就要在文件开头写上以下的值

    Value=47 49 46 38 39 61
    
  • 要绕过png文件幻数检测就要在文件头写上以下的值

    Value=89 50 4E 47
    
  • 然后再文件幻数后面加上自己的一句话木马代码即可

3、IIS解析漏洞目录解析

  1. 在网站根目录下创建aaa.asp,并将图片马复制到文件夹在这里插入图片描述
  2. 使用浏览器访问此图片,发现已经解析为asp文件
    在这里插入图片描述
  3. 打开菜刀,输入密码1进行连接
    在这里插入图片描述
  4. 连接成功如下
    在这里插入图片描述

4、IIS解析漏洞文件解析(含爆破可上传文件)

  1. 打开目标网站,注册个账号进行登录
    在这里插入图片描述
  2. 登录后找到文件上传位置
    在这里插入图片描述
  3. 同时将浏览器配置代理,打开burpsuite进行抓包
    在这里插入图片描述
  4. 点击上传文件,选择要上传的文件,点击上传,看到burp抓到的数据包
    在这里插入图片描述
  5. 由于管理员对上传文件类型进行了限制,故可以使用burpsuite爆破,查看可上传的文件类型,右键将数据包发给Intruder
    在这里插入图片描述
  6. 点击Intruder–>Positions–>点击clear$–>选中cmd.asp中的asp–>点击add
    在这里插入图片描述

在这里插入图片描述

  1. 点击Payloads–>选择load …–>选择上传的词典(词典中为常用的webshell后缀名)
    在这里插入图片描述
  2. 将最下方的Payload Encoding的勾去掉,点击右上角的Start attack
    在这里插入图片描述

在这里插入图片描述

  1. 点击length,按照长度排序,发现cer;.txt和asp.txt长度不同可以进行上传
    在这里插入图片描述
  2. 将木马名改为cmd.cer;.txt和cmd.asp.txt进行上传(爆破的时候木马已经上传,这里可以进行重新上传进行覆盖)
    在这里插入图片描述
  3. 点击文件进行浏览

在这里插入图片描述
在这里插入图片描述

  1. 打开菜刀进行连接(虽然cmd.asp.txt已经上传,但是无法进行解析,故使用cmd.cer;.txt)
    在这里插入图片描述
  2. 成功连接

在这里插入图片描述

发布了38 篇原创文章 · 获赞 135 · 访问量 2790

猜你喜欢

转载自blog.csdn.net/weixin_44023693/article/details/103118117