渗透测试之文件上传


一)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。