开发者学堂课程【网络安全攻防 - Web渗透测试:文件上传漏洞渗透及防御_1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/630/detail/9897
文件上传漏洞渗透及防御_1
内容介绍
1. 实验原理
2. DVWA 文件上传漏洞
3. 低安全级别下的漏洞
一.实验原理
在实验环境准备就绪后,打开渗透测试机,本次渗透测试实验针对的是上传漏洞。
提起文件上传,大家会想到注册论坛时上传头像、文件等,最常见的是上传图像,也可能上传文件或PDF资源。
如果没有对上传信息检测,导致用户上传了代码,这就可能导致用户通过上传代码获得程序的使用权限。
1、文件上传( File Upload )是大部分 Web 应用都具备的功能,例如用户上传附件、修改头像、分享图片/视频等。最常见的是上传图像,也有可能上传 PDF 文件。
2、正常的文件一般是文档、 图片、视频等, Web 应用收集之后放入后台存储,需要的时候再调用出来返回。
3、如果恶意文件如 PHP、ASP 等执行文件绕过 web 应用,并顺利执行,则相当于黑客直接拿到了 Webshell。传统防火墙无法阻挡这些,举例说明,端口开放就像店铺开门做生意,好人坏人都可以进来。
4、一旦黑客拿到webshell,则可以拿到 Web 应用的数据,删除 web 文件,本地提权,进步拿下整个服务器甚至内网。Webshell 负责控制网站。
例:如果在上传图像的过程中没有设置过滤,会导致程序也会被轻松上传,导致 Web 应用失去控制权。
5、SQL 注入攻击的对象是数据库服务,文件上传漏洞主要攻击 web 服务,实际渗透两种相结合,达到对目标的深度控制。
二.DVWA 文件上传漏洞
首先打开靶机192.168.106.134,看到许多应用,早期应用都带有一定漏洞。
上图都是靶机,靶机只是为了让用户每一步都得到响应,用户查看的是开发人员才能看到的源码。最常用的靶机有两种,分别是 Damn Vulnerable Web Application(DVWA)和OWASP Mutillidae Ⅱ。将 DVWA 翻译成中文是糟糕的Web 应用程序,在应用 DVWA 时,注意用户名和密码都是 admin。
登陆后进入上面这一页面,页面左侧每个选项都代表一种漏洞,XSS 开头代表跨站攻击脚本,Upload 代表文件上传,SQL 代表 SQL 注入,CSRF 代表跨站请求伪造,Insecure CAPTCHA 代表文件,这个页面模拟了开发者开发出的糟糕Web程序。
首先进入 Upload,这个选项要求用户上传图像,按常理,用户只需选中图像,上传即可。但是在上传的过程中,如果像下图所示,上传一个 PHP 脚本,也会显示上传成功。
因为开发者并没有在开发程序时进行检测,导致任意文件都可以被上传上去,包括木马等病毒程序,这种问题就叫做文件上传漏洞。首先文件上传行为本身是正常的,既然开了程序,开发者就是希望用户将文件按规则上传,但如果未检测导致上传了一些木马文件就叫做漏洞,这种漏洞会导致网站数据被修改删除甚至盗用。
如果一句话木马被上传后,通过利用中国菜刀,开发者将丧失使用权限。并不是所有步骤都有这种漏洞,但主站或子站中有任何一步有这些漏洞,程序就将陷入危险。
三.低安全级别下的漏洞
使用这一应用时需注意以下几点。
1. DVWA Security 是靶机的安全级别设置,点击可以设置不同的安全级别,如下图。
高级安全级别可以适当过滤文件,但仍有风险
1. View Source 为查看低安全级别时的源代码。
这种源码在正常网页是无法看到的,只是靶机配合查看漏洞。
可以看出,第一第二行源代码中并没有做任何检测,只有上传与提交步骤,是一个非常糟糕的程序。
在这种情况下,将文件路径上传到浏览器,得到一个“密码”在中国菜刀中添加 ARL,ETC 与文件数据都可以清晰得出,右键选择虚拟终端后,甚至可以链接本机的服务器。
在低安全级别下,可以上传任何形式,任何大小的文件,开发人员在低安全情况下甚至会丧失权限。
而前端源码与后端不同,这种架构过程中,用户只能查看到前端源码,DVWA 中的后端源码是为了方便用户直观查看漏洞而设置的,正常网页源码与 DVWA 不同。
一个客户端请求网站,访问的是静态资源,客户端浏览器进行渲染后会得到各种页面。在 PAP 程序下,收到请求的是NJX,在遇到后缀为 PAP 的程序时,执行后将结果交给 NJX,将 NJX 交给客户端,所以客户端永远看不到动态代码,只能看到静态结果。
总之,客户端无法看到动态结果,在正常情况下右键查看源码只能看到结果,在使用时要注意区分靶机与正常情况。