首页 > 其他分享 >DVWA靶场之文件上传通关详解

DVWA靶场之文件上传通关详解

时间:2023-06-23 17:34:35浏览次数:41  
标签:文件 验证 DVWA 详解 木马 攻击者 靶场 php 上传

原理

文件上传漏洞是应用程序在处理用户上传的文件时没有对文件进行合理的检查和过滤,而恶意文件由攻击者伪造成合法文件,从而骗过应用程序进行上传和执行恶意代码。

存在原因

开发人员没有对用户上传的文件进行充分的验证和过滤。攻击者可以通过构造恶意文件,利用上传漏洞将其上传到服务器,从而获取敏感信息或者在服务器上执行恶意代码。

防御措施

  • 文件名过滤:对于上传的文件名进行过滤,只允许合法的字符出现在文件名中。例如,只允许使用字母、数字、下划线等字符,禁止使用"."等特殊字符。
  • 文件扩展名过滤:在上传文件时,对文件的扩展名进行验证与过滤。例如,只允许上传特定类型的文件,比如图片、文本、压缩包等,禁止上传危险的脚本文件。
  • 文件类型验证:检查上传文件的MIME类型是否合法,只允许上传符合预期的文件类型。
  • 文件大小限制:限制文件的上传大小,避免上传过大的文件,从而防止服务器资源被枯竭。
  • 权限设置:通过控制上传目录的权限来限制用户上传文件的位置和可访问性,从而确保文件上传后只能被授权用户访问。
  • 检查上传文件:对用户上传的文件进行检查,检测是否包含恶意的内容、病毒或者木马程序。
  • Web应用防火墙:通过安装Web应用防火墙(WAF)来检测上传的文件,过滤掉异常请求和非法文件上传。 

突破方式

  • 修改文件后缀名:攻击者可能会将恶意文件重命名为合法文件的后缀名,例如将.php文件改为.jpg文件,以此骗过文件类型检测。
  • 绕过客户端验证:前端验证是指在用户上传文件之前对文件类型、大小等进行验证。攻击者可以通过修改前端代码或使用开发者工具绕过前端验证,上传恶意文件。
  • 绕过服务端验证:后端验证是指在文件上传完成后,对文件进行类型、大小等检测。攻击者可以通过构造特殊的文件格式或使用一些已知漏洞进行绕过,从而上传恶意文件。
  • 空字节注入:攻击者通过在文件名中插入空字节(\0)来欺骗文件处理过程,使处理程序不识别文件扩展名,从而导致恶意文件被成功上传。

【Low】级别

通过查看该等级的源码,可以看到该等级对上传的文件没有任何限制和过滤,存在明显的上传漏洞,成功上传后就会显示出路径+successfully uploaded 上传失败则会提示your image was not uploaded。

上传一个包含一句话木马的php(<?php @eval($_POST['123456']); ?>),我们可以发现上传成功。注:@表示后面即使执行错误也不报错;eval()函数表示括号内的语句字符串什么的全都当做代码执行;$_POST['123456']表示从页面中获得123456这个参数数值,即该木马密码为123456。

然后访问dvwa文件中的uploads对应的文件位置D:\phpstudy_pro\phpstudy_pro\WWW\DVWA\hackable\uploads,就可以看到刚刚上传的muma.php已经上传成功。

使用蚁剑连接木马,显示页面如下,说明木马连接成功。

【Medium】级别

将刚刚写的一句话木马文件后缀改为png格式,然后上传,发现上传成功,接着利用工具bp抓包分析。

然后将Content-Disposition的filename文件后缀改回php,然后forward。(由于这里重新做了一次,后面就写的是muma2)

然后可以看到浏览器页面显示muma2.php。

然后打开根目录查看,可以看到刚刚上传的muma2.png文件和修改后的muma2.php文件。

最后使用蚁剑连接,出现如图所示界面,到这里,medium就完成了。

【High】级别

在dvwa中使用前面的方式上传文件,会发现传不上去,这里就需要自己去合成一个新的图片。首先需要准备后缀为png的图片和一句话木马。

在终端使用命令把一句话木马写进图片中。

然后在010中,打开合成后的新图片,拉到最后面,可以看到一句话木马已经在图片中了。

这时再去dvwa中上传合成后的图片,会看到在dvwa中已经把图片成功上传上去了。

最后同之前一样的使用蚁剑连接即可。

标签:文件,验证,DVWA,详解,木马,攻击者,靶场,php,上传
From: https://www.cnblogs.com/yeahh/p/17499406.html

相关文章

  • JVM内存模型及CMS、G1和ZGC垃圾回收器详解
    1.JVM内存模型JVM内存模型主要指运行时的数据区,包括5个部分,如下图所示。栈也叫方法栈,是线程私有的,线程在执行每个方法时都会同时创建一个栈帧,用来存储局部变量表、操作栈、动态链接、方法出口等信息。调用方法时执行入栈,方法返回时执行出栈。本地方法栈与栈类似,也是用来......
  • ArrayList和LinkedList的区别详解
    感谢巨人的肩膀,原作者:https://blog.csdn.net/qing_gee/article/details/108841587/ArrayList和LinkedList有什么区别,是面试官非常喜欢问的一个问题。可能大部分小伙伴和我一样,能回答出“ArrayList是基于数组实现的,LinkedList是基于双向链表实现的。”关于这一点,我之前的......
  • Java四大引用详解:强引用、软引用、弱引用、虚引用
    原文链接:https://blog.csdn.net/ChenRui_yz/article/details/126315260Java引用从JDK1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期,这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。强引用强引用是最普遍的引用,一般把一个对象赋......
  • DVWA靶场之CSRF通关详解
    原理CSRF漏洞是指利用受害者尚未失效的身份认证信息(cookie、会话等信息),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下,以受害者的身份向服务器发送请求,从而完成非法操作(如转账、改密、信息修改等操作)。形成原因CSRF的形成原因主要是由于Web应用程序没有......
  • DVWA靶场之XSS通关详解
    原理XSS漏洞是攻击者将恶意代码注入到合法网页中,当用户浏览该页面时,恶意代码会被执行,从而获取用户敏感信息或进行其他攻击。形成原因网站对用户输入数据的过滤不严格或不完备,攻击者可以根据这个漏洞向网站提交恶意代码,然后再将这些代码传播给其他用户,从而造成危害。防御措施......
  • IntStream的用法详解
    IntStream是一种特殊的Stream,用来提供对int类型数据进行相关的stream操作,下面我们一起来看下。1生成IntStream1.1IntStream.generate用来生成无限个数整数对应的stream,对于需要持续获取随机值的场景可以考虑使用这种方式。publicvoidtestGenerate(){Randomrand......
  • DVWA-环境搭建
    前言在学习web安全的过程中,靶场是必不可少的,毕竟在计算机界,任何理论知识都不如实操同时也不可能提供真实企业环境去练习,这个时候靶场就起到极其重要的作用。靶场就是人为提供的带有安全漏洞的服务,每一个学习者都可以在本地快速搭建来实操,回溯漏洞的发生原理以及操作方式。DVWA靶......
  • @interface 注解详解
    @interface用来定义一个自定义注解在Java中,定义注解其实和定义接口差多不,只需要在interface前添加一个@符号就可以,即@interfaceZhujie{},这就表明我们定义了一个名为@Zhujie的注解。注解中的方法即为注解的元素,元素中不能包含参数,返回值只能为简单数据类型、String、Clas......
  • Java Web自定义MVC框架详解
    最近给学生讲JavaWeb,希望他们能够在学完这部分内容后自己实现一个MVC框架。但是突然发现百度上能搜索到的靠谱的资料并不是很多,有些只是原理没有代码实现,有些有代码实现但是对于初学者来说理解起来还是比较困难,于是决定把自己讲自定义MVC框架的内容放在这里分享给大家,不仅仅是代码......
  • MYSQL中find_in_set函数用法详解
    感谢参考:https://blog.csdn.net/carefree31441/article/details/1195636851、官方涵义(MySQL手册中语法说明)FIND_IN_SET(str,strlist):str要查询的字符串,strlist需查询的字段,参数以”,”分隔,形式如(1,2,6,8,10,22);该函数的作用是查询字段(strlist)中是否包含(str)的结果,返......