在现代互联网的web应用程序中,上传文件是一种常见的功能,因为它有助于提高业务效率,比如社交网站中,允许用户上传图片、视频、头像和许多其他类型的文件。然而向用户提供的功能越多,web应用受到攻击的风险就越大,如果web应用存在文件上传漏洞,那么恶意用户就可以利用文件上传漏洞将可执行脚本程序上传到服务器中,获取网站的权限,或者进一步危害服务器。
上传文件时,如果服务器代码未对客户端上传的文件进行严格的验证和过滤,就容易造成可以上传任意文件的情况,包括上传脚本文件(asp、aspx、php、jsp等格式的文件)。
非法用户可以利用上传的恶意脚本文件控制整个网站,甚至控制服务器。这个恶意的脚本文件,又称之为webshell,也可将webshell脚本称为一种网页后门,webshell脚本具有强大的功能,比如查看服务器目录,服务器中的文件,执行系统命令等。
文件上传漏洞原理和代码分析主要借助upload-labs进行讲解
我们在这里可以看到这个地方限制了后缀。
查看源码
分析页面
记住一句话: 前端校验,等于没有校验。
这个时候我们只需要将这个
onsubmit
事件删除就可以了。
![](https://img-blog.csdnimg.cn/direct/4a6c8f4f364d4fd48805cc970cc7e8c1.png)
再次提交即可。
需要注意的是,有些浏览器,直接像上面那样修改之后还是会有校验的作用,怎么办呢?
可以利用burp抓响应包,然后修改响应包。
![](https://img-blog.csdnimg.cn/direct/fc25ae1cc65f4234b86b125e0cbc3ad2.png)
![](https://img-blog.csdnimg.cn/direct/52e0cf7f70e94f25a6a153bf868f60c7.png)
再次提交即可拿到
shell
。
黑名单-.htaccess-Pass-04
![](https://img-blog.csdnimg.cn/direct/0672f454d34d41ddafbade9645a90c3f.png)
应该是后端做了校验。
直接看源码:
![](https://img-blog.csdnimg.cn/direct/14543b7050dc4e2594b52e3a0859f3c9.png)
也是一个典型的黑名单机制,那么就要找黑名单里面不存在的来进行绕过。
这里我们想到了
.htaccess
文件。
.htaccess
文件是
Apache
服务器中的一个配置文件,用于实现:网页
301
重定向、自定义
404
错误页面、
改变文件扩展名、允许
/
阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
.htaccess
可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩
展名、封禁特定
IP
地址的用户、只允许特定
IP
地址的用户、禁止目录列表,以及使用其他文件作为
index
文件等一些功能。
准备一个
.htaccess
文件
,内容为:
AddType application/x-httpd-php .png
或者
<FilesMatch
"
文件名
"
>
SetHandler application/x-httpd-php
</FilesMatch>
将这个文件上传:
![](https://img-blog.csdnimg.cn/direct/5d0ab31aeb364eecb102f0067f4662c6.png)
接下来随意写个一句话木马,然后将后缀修改为
.png
,上传即可。
![](https://img-blog.csdnimg.cn/direct/f0022d6a854c42ef81d5b5070464539f.png)
这个地方还是得需要
apache
打开重写规则才可以。
大小写:
直接上传PHP文件
后端肯定做了校验,和上一关的提示有点像,查看源码:
![](https://img-blog.csdnimg.cn/direct/cc875e159aec47358d0cacf206e77770.png)
![](https://img-blog.csdnimg.cn/direct/18236e6114684a3a8c29e2c2b57feee7.png)
仔细看红框内没有对大小写进行限制
所以进行大小写绕过。
结合黑名单:
![](https://img-blog.csdnimg.cn/direct/47e238ff5f2c405684819345a7601d88.png)
这里创建一个
shell.Php
进行上传。
![](https://img-blog.csdnimg.cn/direct/a9e9c17cab254e4896c15a29a1c93657.png)
成功拿到
shell
![](https://img-blog.csdnimg.cn/direct/dbbba190994647b885b15f1a7ed6141d.png)