CTFHUB-web-文件上传wp总结

CTFHUB文件上传总结

文件上传漏洞是指攻击者上传了一个可执行的脚本文件到服务器,并执通过此脚本文件获得执行服务端命令的能力。这里上传的文件可以是木马,病毒,恶意脚本,钓鱼图片或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。
文件上传功能本身是一个正常业务需求,而问题就在于,服务器如何处理解释这个文件,当处理逻辑不够安全,导致严重后果
CTFHUB-web-文件上传wp总结_第1张图片

文章目录

  • CTFHUB文件上传总结
    • 无验证
    • 前端验证
    • .htaccess
    • MIME绕过
    • 00截断
    • 双写后缀
    • 文件头检查

无验证

进入题目显示无限制的上传,那我们可以随意上传文件尝试后,返回上传文件的相对路径,可以直接访问,并可以执行php代码文件,那我们写一个一句话木马的php文件并上传,利用工具中国蚁剑,通过已知的URL和上传文件相对路径,构造playload的。
CTFHUB-web-文件上传wp总结_第2张图片
连上网站,在工具的文件管理界面找到目标文件获取flag
CTFHUB-web-文件上传wp总结_第3张图片

前端验证

该题目提示为js前端验证,那应该基本是前端验证文件后缀名
我们可以验证看看用burp开启抓包,上传一个php文件,这时候弹窗提示"该文件不允许上传",但我们的burp并无抓取到数据,可以推测出这里只是用前端js代码写了个前端验证文件后缀的代码
CTFHUB-web-文件上传wp总结_第4张图片
可以看网站源码有文件前端代码
CTFHUB-web-文件上传wp总结_第5张图片
文件检测类型:客户端验证(前端)- JavaScript检查
解题思路有两种
方法1:浏览器禁用JavaScript,js不会验证文件后缀名,就可以直接上传了

​方法2:burp抓包 先上传白名单文件(将带有一句话木马php文件的后缀名先改成png或其他白名单信息),再用burp抓包后修改回文件后缀为php。

当我们成功上传文件后,利用工具连接获取flag即可
CTFHUB-web-文件上传wp总结_第6张图片

.htaccess

提示:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

要点:htaccess负责网页配置,假如我们自定义一个规则,并让服务器运行我们定义的规则,覆盖服务器的.htaccess,便可绕过上传限制

访问url,上传一个php文件显示失败,上传png显示成功
说明后端进行了文件后缀名的验证,可以通过查看源代码也可以看到
进行了文件后缀黑名单的验证过滤
CTFHUB-web-文件上传wp总结_第7张图片
思路
需要构造.htaccess,来让服务器把我们上传的png当作php解析
(1)上传.htaccess(代码如下)

         
	SetHandler application/x-httpd-php

#进行文件名的正则匹配,服务器会对文件名为1.png当做php解析

PS:最开始我尝试用的是下面的,不知道为什么不行,纳闷
	AddType application/x-httpd-php .png

(2)上传带有一句话木马 1.png文件(不需要图片马,直接后缀名为png即可)
(3)工具连接获取flag
CTFHUB-web-文件上传wp总结_第8张图片

MIME绕过

要点:MIME 绕过,文件通过检测content-type字段,判断上传文件的类型,来检测上传文件是否为黑名单

思路:修改content-type,绕过content-type检测

进入页面,已经说明这里是后端的MIME验证,随意上传一个php文件,提示类型不符合 无法上传,再上传图片类型 可以上传。
CTFHUB-web-文件上传wp总结_第9张图片
上传带有一句话木马的php文件,burp抓包,修改content-type字段来尝让检测 修改成image/png ,放包,提示上传成功,利用蚁剑连接获得flag

CTFHUB-web-文件上传wp总结_第10张图片
CTFHUB-web-文件上传wp总结_第11张图片
CTFHUB-web-文件上传wp总结_第12张图片
一些常见的content-type字段内容

	image/jpeg :jpg图片格式 
    image/png  :png图片格式
    image/gif  :gif图片格式    
    text/plain :纯文本格式   
    text/xml   :  XML格式
    text/html  : HTML格式
    multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

这道题的要点就是content-type字段内容符合上传文件规则即可,当然换一种思路也可以绕过,将恶意文件先修改后缀为白名单上传,content-type字段检测是jpg格式,然后再用burp修改回php后缀,也可以上传成功
CTFHUB-web-文件上传wp总结_第13张图片

CTFHUB-web-文件上传wp总结_第14张图片

00截断

要点:在针对上传文件的检查中,很多应用都是通过判断文件名后缀的方法来验证文件的安全性的,但再某些时候,攻击者通过手动修改上传的POST包,添加0x00,来截断某些函数对文件名的判断在许多语言的函数中,%00被认为终止符,当函数碰到%00,就会停止对后面的判断,00截断就是基于这种逻辑漏洞来绕过检测。

php 版本<5.3.4 才有可能存在此漏洞

访问,页面提示00截断
CTFHUB-web-文件上传wp总结_第15张图片
我们先对可上传的文件进行一遍测试

test.php ->上传失败
test.jpg ->上传成功
test.png ->上传成功
test.png.php ->上传失败
test.php.png ->上传成功
上传test.php 修改后缀成为 test.jpg ->上传成功

我们大致可以判断出,后端在上传时,只是通过获取上传的文件的最后的后缀,来判断是否可以上传。但上传的内容并无返回url路径,但 且url返回了?road=/var/www/html/upload/ 。根据之前几题的路径去尝试访问也无法访问,说明他的访问方式不对,这时候我们看一下源码,它提供了一部分主要后端代码,简单的解释了一下代码
CTFHUB-web-文件上传wp总结_第16张图片
根据前面的一系列判断,构造恶意代码,上传一句话木马文件(要求后缀必须为白名单),修改原 ?road=/var/www/html/upload/ 的内容为下图的playload,结合上面的代码大致意思就是将上传的文件保存为1.php文件(源码构造的内容会因为%00截断不执行),放包显示上传成功,然后访问1.php可以访问,于是可以利用蚁剑工具连接成功
CTFHUB-web-文件上传wp总结_第17张图片
这里,我们连上后也可以看到之前上传的文件,看到文件名再联系之前源代码应该能大概知道了吧
CTFHUB-web-文件上传wp总结_第18张图片
获取flag
CTFHUB-web-文件上传wp总结_第19张图片

双写后缀

访问网站 提示双写绕过
CTFHUB-web-文件上传wp总结_第20张图片
尝试上传php文件,提示上传成功,但返回的内容文件名的后缀被去除了,根据题目名,应该要双写绕过。
CTFHUB-web-文件上传wp总结_第21张图片
查看源码是黑名单检测,那就有很多的绕过姿势了(对于上传文件的安全检测,利用黑名单检测是非常不安全的行为,这可以导致非常多的绕过文件,应该使用白名单来严格检测文件后缀名)
在这里插入图片描述
利用burp抓包,对php进行双写,放包
CTFHUB-web-文件上传wp总结_第22张图片
显示上传成功文件后缀为php,使用蚁剑工具连接
CTFHUB-web-文件上传wp总结_第23张图片

获得flag
CTFHUB-web-文件上传wp总结_第24张图片

文件头检查

访问,页面提示是文件头检测
CTFHUB-web-文件上传wp总结_第25张图片
(1)先进行一波简单的测试 发现他的前端 js 代码会先对上传文件后缀进行一波检测。 通过修改文件名后缀或者禁用 js脚本可以绕过了(为了方便测试 我直接禁用了)
CTFHUB-web-文件上传wp总结_第26张图片
(2)当我们绕过前端后,发现后端还会MIME验证 根据文件头的content-type字段判断上传文件类型 ,修改成 image/jpg可以绕过
CTFHUB-web-文件上传wp总结_第27张图片
(3)绕过content-type后发现提示是文件错误,按照题目这里应该就是对文件头的检测了 ,在文件内容的最前面加个白名单的文件头内容就可以绕过了。
CTFHUB-web-文件上传wp总结_第28张图片
CTFHUB-web-文件上传wp总结_第29张图片

常用文件头

.gif
GIF89a

JPEG .JPE .JPG
JPGGraphicFile

.zip
ZipCompressed

.doc .xls .xlt .ppt .apr
MS Compound Document v1 or Lotus Approach APRfile

当然也可以直接做一张图片马来上传,只有注意上传后将后缀名改为PHP即可(图片马制作流程见下方)

利用蚁剑连接 获得flag
CTFHUB-web-文件上传wp总结_第30张图片

PS:
图片马制作
在cmd里执行 copy logo.jpg/b+test.php/a test.jpg
logo.jpg为任意图片
test.php为我们要插入的木马代码
test.jpg为我们要创建的图片马
名字可任意 格式图片必须在php文件前面
注意 图片的内容要尽量简短,以防内容过于复杂存在的一些字符会影响到原来的php内容(可以用画图工具直接新建一个画图然后保存)

你可能感兴趣的:(CTF)