文件上传绕过(姿势大全)

*文章来源:https://blog.egsec.cn/archives/476

*本文将主要说明:Web漏洞中的文件长传绕过姿势大全

在鹅厂复试中,面试官问到了web漏洞中的文件上传绕过

要求:总结文件上传的各种姿势,以及方法。

本人菜鸡一枚,支吾半天竟没回答完整,目测紧张过度了。呜呜~

之后百度一搜,所谓一图解忧愁啊!

上图:

总结起来,文件上传漏洞分两种:

客户端

原理:通过javascript来校验上传文件的后缀是否合法,可以采用白名单,也可以采用黑名单的方式。

判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。

客户端的校验绕过:直接修改js代码或者使用抓包的方法修改请求内容绕过,可以先上传一个gif木马,通过抓包修改为jsp/php/asp,只用这种方法来检测是肯定可以绕过的。

服务端

原理:校验请求头 content-type字段,例如用PHP检测。

通过自己写正则匹配来判断文件幻数(文件头)内容是否符合要求,一般来说属于白名单的检测,常见的文件头(文件头标志位)如下:

文件加载检测:一般是调用API或函数去进行文件加载测试,例如图像渲染测试,当测试结果正常的时候才允许上传

1、一次渲染(代码注入)

2、二次渲染

后缀名黑名单校验

后缀名白名单校验

自定义:WAF校验,即使用不同的WAF产品来进行过滤,通常是独立与服务程序的一段中间程序或者硬件

服务端的验校绕过:校验请求头content-type字段绕过,通过抓包来修改Http头的content-type即可绕过。

  • 文件幻数(文件头)检测绕过:在木马内容的前面插入对应的文件头内容,例如:GIF89a ,更保险的方法是在可上传的文件中插入木马代码,然后修改后缀
  • 文件加载检测:通过例如加载文件进行图像渲染的方式来测试,这个时候就一般需要在正常的文件中插入木马代码了,例如图像,那么插入的代码一般会放在图像的注释区,因此不会影响图像正常渲染绕过这种检测,此时可以使用工具(称为插马器)来进行插入,例如edjpgcom,或者直接用copy命令来合成也可以。当然这种检测不一定能够完全绕过
  • 后缀名检测后缀黑名单检测:找查blacklist(黑名单列表)的漏网之鱼,例如
    • 大小写:如果检测的时候不忽略大小写,那么可以改变后缀名的大小写绕过
    • 扩展名:列表中如果忽略了某些后缀
    1. 能被解析的文件扩展名列表:
    2. jsp jspx jspf
    3. asp asa cer aspx
    4. php php php3 php4 pht
    5. exe exee
  • 后缀白名单检测:白名单检测还是会比黑名单强一点,常见的绕过方法有%00截断,还有服务器的解析漏洞
  • %00截断漏洞:如果存在这类漏洞,那么后缀名的检测都可以绕过,此时我们可以如下命名一个上传文件

解析漏洞:这类漏洞是本身服务器的中间件产生的,例如apache,nginx都被爆出过存在解析漏洞,存在解析漏洞的话,上传的安全性几乎就完全失去了

例如:
IS5.x-6.x解析漏洞
apache解析漏洞
nginx解析漏洞
IIS7.5解析漏洞
等等,后期再说吧

还有就是防火墙(WAF)的众多绕过姿势,后期再说。

文件上传漏洞可以自己搭建靶机去实战一下:

https://github.com/c0ny1/upload-labs

文件上传绕过(姿势大全)

猜你喜欢

转载自www.cnblogs.com/egsec/p/12581818.html