shacker_shen

导航

渗透测试之文件上传

一)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  阅读(463)  评论(0编辑  收藏  举报