漏洞类型:注入
影响范围:主站
URL:http://localhost/bWAPP/htmli_get.php
描述:HTML 注入漏洞是指在用户输入的地方,输入 HTML 文本,被当作 GET 参数传到服务器,服务器以原始格式存储,未采用 HTML 编码,导致 HTML 的特性被浏览器解析执行。这种编码必须在服务器端存储参数的时候进行。
威胁程度:严重
POC:
1、在浏览器界面登录进去,然后选择 HTML INJECTION - REFLECTED GET。
2、在 First name 和 Last name 的文本框内输入 HTML 代码:
and
3、点击 Go,会得到如下效果。前提是 hacked.jpg 放在服务器端 /var/www/bWAPP 目录下。
解决方案:
1、查看服务端响应处理表格参数的脚本如下 ( htmli_get.php ):
2、在服务端对表格参数进行检查并进行编码然后输出
3、设置安全等级为 high 后,在此测试,可以发现漏洞不复存在。
影响范围:主站
URL:http://localhost/bWAPP/iframei.php?ParamUrl=robots.txt&ParamWidth=250&ParamHeight=250
描述:网页中包含 IFRAME 标签,并且暴露了 URL 中 IFRAME 的参数,导致网页中存在该漏洞。这使得攻击者可以利用 XSS 在流行网站中注入恶意网站连接。注入的内容可以从低危的广告到高危的键盘记录和恶意下载站点。
威胁程度:中危到高危
POC:
1、访问 URL:http://localhost/bWAPP/iframei.php?ParamUrl=robots.txt&ParamWidth=250&ParamHeight=250
2、IFRAME 源 URL 是 robots.txt,并且作为参数暴露在 URL 中。
3、用其他链接替换掉地址栏中的 ParamUrl,就会展现其他地址的页面。比如访问
http://192.168.211.131/bWAPP/iframei.php?ParamUrl=http://www.baidu.com&ParamWidth=1000&ParamHeight=250
解决方案:
1、查看服务端响应处理表格参数的脚本如下 ( iframei.php ):
2、通过抓包可以发现 IFRAME 标签中的 URL 被当作新的 http 请求头发起请求,通过如下的 header 函数发送 http 请求头:
3、在 IFRAME 标签中作如下图所示的修改就能避免该问题,直接指定参数为固定值,不会接收用户的输入作为参数,并且注销掉 header 函数那段代码,这就直接避免了这一问题。
medium:
//addslashes-返回一个字符串,该字符串的反斜杠位于需要在数据库查询等中引用的字符之前。
//这些字符是单引号(“)、双引号(“)、反斜杠(\)和nul(空字节)。
//不要将其用于XSS或HTML验证!!!!
high:
漏洞类型:注入
影响范围:主站
URL:http://192.168.102.134/bWAPP/commandi.php
描述:漏洞产生的原因是 shell 命令能够通过 ‘;’、’|’、’&&’ 这些符号串联起来执行,操作系统本身就支持这种操作。这种漏洞导致恶意 shell 命令可以被执行,比如后台监听某端口或者导致系统崩溃的 fork 炸弹。
威胁程度:高危
POC:
1、访问网址:http://192.168.102.134/bWAPP/commandi.php
2、发起正常的 DNS 请求,返回的结果如下:
3、在输入框中输入 ‘www.baidu.com;cat /eta/passwd’,得到如下内容:
4、从中可以看出返回了 shell 命令被执行,并且返回了相应的结果。从开发者的角度,明显不希望这样的 shell 命令被执行。
解决方案:
1、查看服务器端响应的脚本 ( commandi.php ):
2、进一步能够发现服务器在送去执行前未对接收到的输入内容进行检测:
3、修复这个漏洞,通过 escapeshellcmd 函数对特殊字符进行转义,把输入当作一个字符串直接导入 shell 函数,并且只当作单个安全的命令。该函数用来转义来自用户输入的针对 shell 函数的单个参数,shell 函数包括 exec()、system() 和反引号操作符。或者直接去掉输入中的 ‘;’、’|’、’&&’。
可知,medium增加了过滤&&与;字符
但是可以用&;&,因为过滤;,形成&&,也可以只用&,&与&&区别是前者是不管前一个命令是否执行都执行后面命令,而&&是只有前一个命令执行才执行后一个命令,也可以用 | 、 ||执行,| 和|| 与&之间刚刚好相反,||是前面没执行下,执行后面命令。
漏洞类型:代码注入
影响范围:主站
URL:http://192.168.211.131/bWAPP/phpi.php
描述:代码注入是一种常见的攻击类型,主要是让应用程序识别为代码并执行。这类漏洞主要是由于未对不可信的输入输出数据进行检查所致。如果攻击者能够将代码注入应用程序并得到执行,那就仅仅是被PHP代码的能力限制,而未被应用程序限制。此例中,可以添加PHP代码在对URL的请求上,并得到执行。
威胁程度:严重
POC:
1、访问 URL:http://192.168.211.131/bWAPP/phpi.php
2、请求 URL 的页面允许添加参数,称为 message,这里未进行适当的检查,就可以被利用。
3、此例中,设置 message 参数为 message=a; f p = f o p e n ( " / e t c / u c f . c o n f " , " r " ) ; fp = fopen("/etc/ucf.conf","r"); fp=fopen("/etc/ucf.conf","r");result = fread($fp,1024); echo $result。
这将列出 /etc/ucf.conf 文件的内容。(根据实际情况来选择文件,有的文件为空,什么都没有,就会导致没有列出任何内容,避免踩坑)
解决方案:
1、查看后台服务器响应的脚本 ( phpi.php )。
2、message 参数通过 eval 函数的时候未对其内容进行任何检查,并且 eval 函数可以执行任意 PHP 代码。
3、为避免执行 message 中的内容,可以利用 htmlspecialchars 函数复写可能被当作代码执行的参数,并且移除 eval 函数,因为 eval 函数非常危险,能够执行任意代码。
4、最终,攻击者注入的代码不会被执行,这就修复了该漏洞。
漏洞类型:注入
影响范围:主站
URL:http://192.168.211.131/bWAPP/xmli_1.php
描述:XPath 注入是利用了应用支持用户输入,构建相应的语句查询或者访问 XML 文档。XPath 的语法和 sql 查询语法比较相似,构造类似 sql 查询语句能够实现 XML 文档的查询。此处漏洞产生在用户名和密码输入的地方,可以同时设置为 1’ or ‘1’ = '1,来获得进一步的信息。
威胁程度:严重
POC:
1、访问 URL:http://192.168.211.131/bWAPP/xmli_1.php。
2、设置用户名和密码为1’ or ‘1’ = '1。
3、获得了账户的权限。
解决方案:
1、查看服务器端响应的脚本文件 ( xmli_1.php )。
2、数据在送入 xpath 函数之前未经任何检验。假设只有字母和数字才是正确的用户名密码格式,通过检测输入数据是否存在非字母数字的字符来正确避免这一问题。代码中采用了白名单进行过滤。
3、这样一来,网页就能安全地避免了 xpath 注入攻击。结果如下所示: