Insecure CAPTCHA(不安全的验证码)
验证码验证可以被绕过,一般都是验证码的验证和最终修改的验证分离,导致了中间过程(验证码的验证结果)可以被篡改
看到需要配置,更改配置

low
查看源码发现服务器仅仅通过检查Change、step 参数来判断用户是否已经输入了正确的验证码。

所以通过抓包来更改step的值来绕过,源码发现step值由1变为2



medium
查看源码增加了对参数passed_captcha的检查

抓包,更改step参数,增加passed_captcha参数,绕过验证码

high
查看源码,发现参数g-recaptcha-response不等于hidd3n_valu3(或者http包头的User-Agent参数不等于reCAPTCHA)时,就认为验证码输入错误,反之则认为已经通过了验证码的检查。


SQL Injection(盲注)
low
输入1,返回成功
输入1 and 1=2,返回成功,说明没有执行后面语句,不是数字型
输入1’ and ‘1’ =‘1,返回成功,1’ and ‘1’ ='2,返回失败判断为

XSS(跨站脚本攻击)
恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
DOM型
low
在url输入选择的语言,查看执行的内容

发现会发生改变,可以往后面写脚本,添加一个脚本运行
<script>alert('123')</script>
<script> 标签用于定义客户端脚本,比如 JavaScript。
script 元素既可以包含脚本语句,也可以通过 src 属性指向外部脚本文件。
必需的 type 属性规定脚本的 MIME 类型。
js标签,alert是弹出一个窗口的意思,如alert(‘123’);就是弹出一个123的弹窗

medium
查看源码发现限制了script标签

(1)我们使用#的注释后边内容来绕过服务器端直接本地出现、

(2)使用svg标签执行代码
default=</option></select><svg onload=alert('123')>

high
查看源码,限制必须选择四个语言中的一个。所以先选择语言在注释内容绕过服务端

使用img标签执行
default=English#</option></select><img src=1 οnerrοr=alert('123')>
使用svg标签执行
default=English#</option></select><svg οnlοad=alert('789')>
完成
Reflected(反射型)
low
url输入1查看内容:

查看源码发现没有过滤内容。直接添加script脚本

medium
查看源码发现限制了script标签,使用双写来绕过


也可以使用大小写绕过

high
查看源码,过滤了脚本

使用插入图片来执行脚本

Stored(储存型)
low
查看源码没有过滤,直接在留言处写入脚本(用户名有限制)

medium
留言板过滤了script标签,抓包在名字修改使用双写绕过或者使用大小写绕过


high
和反射性限制一样,抓包后再名字修改为图片类型,在放包即可


CSP Bypass(内容安全策略)
开发者在开发过程中设置了一个类似于白名单的策略,要信任某个页面,哪些外部资源可以执行,哪些不可以,这可以从根本上防御XSS,如果CSP配置的好,可以从根本上杜绝XSS
low
查看源码和发现网络响应头寻找里边的信任网址查询该网站

在信任网站中写入alert(1),使用raw方式显示记录下url,输入框中。成功弹窗

medium
查看源码,合法来源发生了变化,直接输入代码,成功弹窗

high
查看源码发现CSP 头, 只有 script-src ‘self’,只能引用允许self 的脚本执行

include作为参数,注入

JavaScript (js攻击)
low
查看源码,知道post方式phrase和token值相同且token值正确的话为well done

发现token的值由md5(rot13(parase));之后post提交,将token修改正确


medium
查看源码和js源码


分析源码发现代码为将phrase的值逆序就是sseccus即token的值为xxsseccusxx,则可成功

Weak Session IDs(弱会话ids)
当用户登录后,在服务器就会创建一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带Sesion去访问。sessionID作为特定用户访问站点所需要的唯一内容。如果能够计算或轻易猜到该sessionID,则攻击者将可以轻易获取访问限,无需录直接进入特定用户界面,进而进行其他操作。用户访问服务器的时候,在服务器端会创建一个新的会话(Session),会话中会保存用户的状态和相关信息,用于标识用户。服务器端维护所有在线用户的Session,此时的认证,只需要知道是哪个用户在浏览当前的页面即可。为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。用户拿到session id就会加密后保存到 cookies 上,之后只要cookies随着http请求发送服务器,服务器就知道你是谁了。SessionID一旦在生命周期内被窃取,就等同于账户失窃。
low
查看源码,发现没有过滤,直接使用hackbar的cookie方式提交,然后dvwa既不用账号密码登录


medium
查看源码发现是基于时间戳生成dvwaSesion的,关于时间戳转换,直接查找转换器进行转换即可


通过hackbar的cookie方式的session改为转换的时间戳,就可以成功

high
查看源码发现使用了PHP setcookie()函数,来设置cookie

抓包发现,dvwaSesion值很像md5加密,使用md5解密,发现是对从零开始的整数进行加密,构造payload提交

本文详细介绍了DVWA靶场中包括不安全验证码、SQL注入、XSS攻击、CSP Bypass、JavaScript攻击和弱会话ID等各种安全漏洞。针对每个漏洞,分别阐述了低、中、高三个安全级别的绕过方法,提供了攻击者可能利用的手段,有助于理解网络安全防护的重要性。

2912

被折叠的 条评论
为什么被折叠?



