文件上传,最主要的漏洞是图片上传,如果能上传对应开发语言的文件,那极大可能会获取到服务器的权限,即getshell。各上传功能点多少都有做过滤,这次做个总结,也方便以后查笔记,包括各语言、中间件及稀奇古怪的方法。

0x01 常用后缀变异绕过

语言 可解析后缀
asp/aspx asp、aspx、asa、asax、ascx、ashx、asmx、cer、aSp、aSpx、aSa、aSax、aScx、aShx、aSmx、cEr
php php、php2、php3、php4、php5、pHp、pHp5、pHp4、pHp3、pHp2、html、htm、phtml、pht、Html、Htm、pHtml
jsp jsp、jspa、jspx、jsw、jsv、jspf、jtml、jSp、jSpx、jSpa、jSw、jSv、jSpf、jHtml

0x02 中间件解析漏洞上传绕过

  1. IIS6.x解析漏洞

    基于目录名,默认将*.asp/目录下的所有文件当成asp解析

    基于文件名,默认会将*.asp;jpg当成asp解析,原理是服务器默认不解析;号及后面的内容,相当于截断。

  2. IIS7.5解析漏洞

    任意文件php解析,此版本在Fast-CGI运行模式下,在任意文件后面加上/.php都能解析为php,例如test.jpg/.php

  3. Nginx配置文件错误导致的解析漏洞

    对于任意文件名,在cgi.fix_pathinfo默认开启的状态下,访问路径添加/xx.php(xx为任意字符)后,即可将该文件作为php解析,例如:test.jpg/xxx.php

  4. Apache未知扩展名解析漏洞

    Apache默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别(不在mime.types文件内),则 文 继续向左识别,直到识别到合法后缀才进行解析。比如访问phpinfo.php.xxx。

  5. Apache addhandler导致的解析漏洞

    如果在Apache的conf里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php就以php文件执行。

0x03 其他各种姿势的绕过

  1. 客户端校验

    上传即提示文件格式不支持,bp抓不到包,大多是前端JS校验,上传合法文件再改后缀即可。

  2. 服务端校验Content-Type

    bp抓包修改文件类型

  3. %00截断(php版本必须小于5.3.4php.ini中的magic_quotes_gpc设置为Off)

    截断注释,/payload/x.php%00.jpg,%00需要转化为URLencode,在有些函数执行时,会把这个字符(%00或0x00)当做结束符。GET请求使用%00,POST请求使用0x00。

  4. 服务端验证逻辑漏洞(此处有多种可能,比如后端未进行大小写转换、或只是去除关键词)

    后缀名大小写变化,如Php、asP等

    双写后缀,phphpp,asaspp等

  5. 服务端为windows环境可尝试

    在上传文件名后缀添加空格

    在上传文件名后缀添加.

    在上传文件名后缀添加::$DATA

  6. 可修改/覆盖apache解析配置文件.htaccess

    上传.htaccess,重写文件解析,可以直接上传图片自动解析成php文件

    例如:.htaccess内容写入,SetHandler application/x-httpd-php,这行配置表示将所有后缀名都解析为php

  7. .user.ini配置覆盖

    服务器脚本语言为PHP,并且使用CGI/FastCGI模式,php版本>5.3.0,上传目录下要有可执行的php文件。

    .user.ini,它会影响php.ini中的配置,从而将指定的文件内容按php来解析,影响的范围该文件所在的目录以及子目录。需要等待php.ini中的user_ini.cache_ttl设置的时间或重启Apache才能生效,且只在php5.3.0之后的版本才生效。.user.ini比.htaccess用的更广,不管是nginx/Apache/IIS,只要是以fastcgi运行的php都可以用这个办法。

    上传一个.user.ini

    auto_prepend_file = xxx.jpg
    

    然后再上传一个图片马xxx.jpg

    <script language='php'>system('whoami');</script>
    

    如果在上传目录中还有一个可执行的php文件,访问php文件,就达到了执行系统命令的效果。

    总结一下:上传目录中有一个可执行的php文件,我们先上传一个.user.ini文件,这个文件的内容为auto_prepend_file=xxx.jpg。起到的作用相当于在可执行的php文件前插入图片马中的内容。然后图片马中的恶意代码也会被当做PHP解析

0x04 测试tips

  • 实战环境下可以考虑后缀fuzz,大多数情况校验的是后缀和Content-Type
  • 多尝试组合验证,跑fuzz,验证黑白名单,逐步排查。正常内容,正常MIME;后门内容,正常MIME;伪造格式+后门内容,正常MIME等等
  • CTF环境可能还会校验文件头,可用GIF89a伪造文件头
  • 二次渲染自动去除图片马,对比上传之前和上传之后图片的十六进制代码,在保留的那部分中插入payload,应用gif文件

文件上传漏洞各种姿势分析相关推荐

  1. html文件上传漏洞,文件上传漏洞(绕过姿势)

    文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识.俗话说,知己知彼方能百战不殆,因此 ...

  2. 文件上传漏洞全面渗透姿势总结

    文件上传漏洞全面渗透姿势总结 东方健康网 https://www.9559.org/cn/ 0x00 文件上传场景 (本文档只做技术交流,切勿进行违法犯罪操作,请做一个好人,不给别人添麻烦) 文件上传 ...

  3. 某office前台任意文件上传漏洞分析

    X微e-office的那个前台任意文件上传漏洞已经被爆出一段时间了,相关的漏洞利用脚本甚至是漏洞批量利用脚本 也有很多.在这里根据系统代码结合POC来分析一下这个漏洞点. 定位漏洞点 [私信回复&qu ...

  4. 详细分析 Sonlogger 任意文件上传漏洞 (CVE-2021-27964)

     聚焦源代码安全,网罗国内外最新资讯! 概述 Sonlogger 是土耳其SFC 公司 开发的一款应用软件,兼容土耳其<第5651号法>,是一款基于 Web 的 SonicWall 防火墙 ...

  5. FireEye 红队失窃工具大揭秘之:分析复现 Zoho 任意文件上传漏洞(CVE-2020-8394)

     聚焦源代码安全,网罗国内外最新资讯! 前言 最近,全球领先的网络安全公司 FireEye 疑遭某 APT 组织的攻击,其大量政府客户信息遭越权访问,且红队工具被盗.虽然目前尚不清楚这些红队工具将被如 ...

  6. java 文件上传漏洞_文件上传漏洞(绕过姿势)

    文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识.俗话说,知己知彼方能百战不殆,因此 ...

  7. 墨者靶场 入门:WebShell文件上传漏洞分析溯源(第1题)

    墨者靶场 入门:WebShell文件上传漏洞分析溯源(第1题) 题目 背景介绍 实训目标 解题方向 解题步骤 题目 背景介绍 某公司内部资料分享平台存在一个文件上传页面,为了保证服务器的安全,现在安全 ...

  8. (php)泛微E-Office文件上传漏洞(原理分析+复现+批量检测)

    漏洞描述 泛微e-office是泛微旗下的一款标准协同移动办公平台. CNVD-2021-49104 由于 e-office 未能正确处理上传模块中的用户输入,攻击者可以通过该漏洞构造恶意的上传数据包 ...

  9. 【墨者学院】WebShell文件上传漏洞分析溯源(第2题)

    替补选手的学习日记 靶场:墨者学院 题目:WebShell文件上传漏洞分析溯源(第2题) 1.打开是一个文件上传的提交框,正常上传一个txt文件看下返回结果. 2.看情况是限制了文件上传的后缀名,显示 ...

最新文章

  1. AIX系统日志学习笔记之一
  2. sql 使用identity(int,1,1)来产生行号。
  3. 89.算数移位 -逻辑移位-循环移位
  4. 一个多功能蓝色漂亮的搜索条
  5. 百度地图SDK v3.6.0以上版本找不到PoiOverlay类的解决方法
  6. java父类转子类_java中什么是继承,和继承的接口的关系?
  7. [深度学习TF2][RNN-LSTM]文本情感分析包含(数据预处理-训练-预测)
  8. linux舵机控制程序,Linux PWM设备驱动及舵机控制
  9. 浅谈商品推荐:如何猜中用户的心思?
  10. 使用apt更新和升级系统软件
  11. 数字信号处理经典书籍
  12. 互联网运营工作需要做什么?
  13. Type-c边充边传数据应用OTG功能(LDR6028S)
  14. 关于滚动条内子控件控制问题
  15. 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
  16. uva10935卡片游戏
  17. gcc ld链接脚语法简明讲解
  18. 菜鸟学数据库——超键、候选键、主键、外键
  19. 【持续更新】SDN Software Defined Networks(Thomas D.Nadeau Ken Gray)翻译
  20. Vim快捷键(二):光标移动

热门文章

  1. 最新的安卓单机游戏下载,好玩的手机单机游戏你都玩过吗?
  2. 背靠博世,去年亏损近亿元的车联天下拿到了1.5亿元投资
  3. 各种解析度的水平及垂直参数的参考设置
  4. java计算矩形的面积和周长的方法
  5. 各国市场分析(冰岛,瑞士)
  6. PostgreSQL查询JSON中的数组
  7. 拓嘉辰丰:拼多多网店如何运营爆款产品?
  8. 计算机体系结构·指令集ISA
  9. bootstrap动态调用select下拉框
  10. 微信电脑客户端不能直接拖拽发送文件