文件上传漏洞实战靶场笔记

记录下自己写的文件上传漏洞靶场的write up,包括了大部分的文件上传实战场景,做个笔记。

 0x01 客户端js验证绕过上传

只是客户端验证 关闭js或者抓包上传即可。

 

0x02 MIME类型验证绕过上传

验证了Content-Type 改成图片的MIME类型即可

 

 

0x03 黑名单后缀名(php3、phtml)绕过上传

这关检测了文件后缀名,禁止了常见动态脚本后缀

不过php3 和pthml没有禁止,在apache配置文件中当php解析 

 

 

 

注意php的版本 非线程安全版本的php是解析不了的

 

0x04 .htaccess配置文件绕过上传

这关把所有动态后缀都禁用了,包括php3、phtml,但是目录下没有.htaccess配置文件

我们可以通过上传这个配置文件达到以php解析的目的

 

 

 0x05 黑名单后缀名(大小写)绕过上传

这关已经有.htaccess配置文件,不过可以通过文件后缀大小写来绕过。例如PHp,测试尝试即可。

 

 

 

 

0x06  

黑名单后缀名(空格)绕过上传

黑名单后缀名(点)绕过上传

黑名单后缀名(::$DATA)绕过上传

 这三关都是通过在文件后缀后面加相应的字符,绕过服务端对于文件后缀的检测,执行的时候又以php执行,达到上传木马的目的。

这里利用的都是windows系统的特性,文件后缀有空格、点、::$DATA、<>,>>>,0x81-0xff等但不限于这些字符时,windows会自动去除这些字符。

例如1.php::$DATA     保存的时候就是1.php

 

 

 

 

 

0x07  黑名单后缀名(后缀点+空格+点)绕过上传

这关单纯去除了末尾的点和空格,所以 点+空格+点 第一次过滤后剩 点,又达到我们前面几关类似的情况,造成上传。

 

 0x08 黑名单后缀名(双写后缀)绕过上传

这关是个逻辑代码问题,使用str_replace函数对文件中动态脚本名替换为空,我们可以双写后缀

例如1.phphpp 去除了中间的php变成1.php,同样达到我们的目的。

 

 

0x09 get类型%00截断绕过上传

这关报错的路径在get参数里 可以直接%00绕过 ,00截断版本只限于5.3之前哦~

 

 

0x0A POST类型%00截断绕过上传

这关报错的路径在post参数里 可以直接00截断绕过 ,唯一不同的是post中内容不会给你直接url编码,所以我们需要改一下hex,00截断版本只限于5.3之前哦~

 

在后面加上hack.php+空格  然后切换hex选项卡,找到hack.php后面这个空格的hex,对应是20,我们改成00

 

 即可上传

 

 

 

0x0B 图片内容伪造绕过上传

这关检测了内容 我们使用cmd合成图片马或者加上图片文件头(列如GIF89A)进行欺骗即可

 

 

 

0x0C 竞争条件绕过上传

这关利用的是竞争条件,服务器先允许你上传文件,然后检测是否合法,不合法再删除,我们要利用的就是在服务器删除前,访问到我们上传的php。

例如这里我准备一个tj.php,内容为

<?php
$myfile = fopen("qing.php", "w");
$txt = "<?php phpinfo();?>";
fwrite($myfile, $txt);
fclose($myfile);
?>

条件竞争中burp需要线程设置偏大

这里我上传我的tj.php,然后不停的访问tj.php上传后的地址,即http://www.hack_upload.com/upload/tj.php

这里使用两个发包器,一个包是上传我们tj.php的包,一个是访问我们上传tj.php后的地址

 

 

 利用条件竞争,访问tj.php成功,所以新建了一个qing.php

 

 

 

 0x0D CVE-2015-2348绕过上传

这关利用的是CVE-2015-2348 move_uploaded_file() 00截断,这里需要提交一个文件名作为保存文件的名称

看源码发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过:

 

posted @ 2019-06-11 12:39  卿先生  阅读(1174)  评论(0编辑  收藏  举报