CTFHUB-web-文件上传wp总结

CTFHUB文件上传总结

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

一、无验证

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


二、前端验证

该题目提示为js前端验证,那应该基本是前端验证文件后缀名
我们可以验证看看用burp开启抓包,上传一个php文件,这时候弹窗提示"该文件不允许上传",但我们的burp并无抓取到数据,可以推测出这里只是用前端js代码写了个前端验证文件后缀的代码
在这里插入图片描述
可以看网站源码有文件前端代码
在这里插入图片描述
文件检测类型:客户端验证(前端)- JavaScript 检查

解题思路有两种
方法1:浏览器禁用 JavaScript,js 不会验证文件后缀名,就可以直接上传了

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

当我们成功上传文件后,利用工具连接获取 flag 即可。
在这里插入图片描述


三、 .htaccess

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

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

访问url,上传一个php 文件显示失败,上传png显示成功
说明后端进行了文件后缀名的验证,可以通过查看源代码也可以看到
进行了文件后缀黑名单的验证过滤
在这里插入图片描述
思路:
需要构造.htaccess,来让服务器把我们上传的png当作php解析
(1)上传.htaccess (代码如下)

<FilesMatch "1.png">         
	SetHandler application/x-httpd-php
</FilesMatch>
#进行文件名的正则匹配,服务器会对文件名为1.png当做php解析

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

(2)上传带有一句话木马 1.png文件(不需要图片马,直接后缀名为png即可)
(3)工具连接获取flag
在这里插入图片描述


四、MIME绕过

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

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一些常见的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后缀,也可以上传成功
在这里插入图片描述

在这里插入图片描述


五、00截断

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

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

访问,页面提示00截断
在这里插入图片描述
我们先对可上传的文件进行一遍测试

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

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


六、双写后缀

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

获得flag
在这里插入图片描述


七、文件头检查

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

常用文件头

.gif
GIF89a

JPEG .JPE .JPG
JPGGraphicFile

.zip
ZipCompressed

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

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

利用蚁剑连接 获得flag
在这里插入图片描述


补充:图片马的制作
在cmd里执行 copy logo.jpg/b+test.php/a test.jpg

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

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值