bWAPP / A1 - Injection /

本文深入探讨了多种Web安全漏洞,包括HTML注入、XSS、命令注入、PHP代码注入及XPath注入,提供了详细的POC和解决方案。
1.HTML 注入—反射型 GET

漏洞类型:注入
影响范围:主站
URL:http://localhost/bWAPP/htmli_get.php
描述:HTML 注入漏洞是指在用户输入的地方,输入 HTML 文本,被当作 GET 参数传到服务器,服务器以原始格式存储,未采用 HTML 编码,导致 HTML 的特性被浏览器解析执行。这种编码必须在服务器端存储参数的时候进行。
威胁程度:严重

POC:

1、在浏览器界面登录进去,然后选择 HTML INJECTION - REFLECTED GET。

2、在 First name 和 Last name 的文本框内输入 HTML 代码:

<marquee><h2>You just got hacked!!</h2></marquee> and <img src="hacked.jpg">

3、点击 Go,会得到如下效果。前提是 hacked.jpg 放在服务器端 /var/www/bWAPP 目录下。

4、结果显示 HTML 文本被嵌入到页面底部。
在这里插入图片描述

解决方案:

1、查看服务端响应处理表格参数的脚本如下 ( htmli_get.php ):
在这里插入图片描述
2、在服务端对表格参数进行检查并进行编码然后输出
在这里插入图片描述在这里插入图片描述
3、设置安全等级为 high 后,在此测试,可以发现漏洞不复存在。

2.跨站脚本攻击( XSS )—— IFRAME 注入

影响范围:主站
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:
在这里插入图片描述

3.系统命令注入

漏洞类型:注入
影响范围:主站
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增加了过滤&&与;字符
但是可以用&;&,因为过滤;,形成&&,也可以只用&,&与&&区别是前者是不管前一个命令是否执行都执行后面命令,而&&是只有前一个命令执行才执行后一个命令,也可以用 | 、 ||执行,| 和|| 与&之间刚刚好相反,||是前面没执行下,执行后面命令。

在这里插入图片描述

4.代码注入( PHP 代码注入)

漏洞类型:代码注入
影响范围:主站
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 ( &quot; / e t c / u c f . c o n f &quot; , &quot; r &quot; ) ; fp = fopen(&quot;/etc/ucf.conf&quot;,&quot;r&quot;); 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、最终,攻击者注入的代码不会被执行,这就修复了该漏洞。

5. XML/XPATH注入——登录表单

漏洞类型:注入
影响范围:主站
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 注入攻击。结果如下所示:

Editorial Reviews Product Description Dependency Injection is an in-depth guide to the current best practices for using the Dependency Injection pattern-the key concept in Spring and the rapidly-growing Google Guice. It explores Dependency Injection, sometimes called Inversion of Control, in fine detail with numerous practical examples. Developers will learn to apply important techniques, focusing on their strengths and limitations, with a particular emphasis on pitfalls, corner-cases, and best practices. This book is written for developers and architects who want to understand Dependency Injection and successfully leverage popular DI technologies such as Spring, Google Guice, PicoContainer, and many others. The book explores many small examples of anchor concepts and unfolds a larger example to show the big picture. Written primarily from a Java point-of-view, this book is appropriate for any developer with a working knowledge of object-oriented programming in Java, Ruby, or C#. About the Author Dhanji R. Prasanna is an Enterprise Java consultant for technologies such as EJB3, JBI, JSF, Guice, Spring, HiveMind, and PicoContainer. He is a co-author of the Bean Validation (JSR-303), JAX-RS (JSR-311), Servlet 3.0 (JSR-315), and JavaServerFaces 2.0 (JSR-314) specifications. He is also co-author of the Java EE 6.0 (JSR-316) platform specification, which is the next edition of J2EE. Product Details * Paperback: 352 pages * Publisher: Manning Publications; 1 edition (August 28, 2009) * Language: English * ISBN-10: 193398855X * ISBN-13: 978-1933988559 * Product Dimensions: 9.1 x 7.4 x 0.8 inches
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值