《白帽子讲web安全》学习笔记 (1)

xss是什么?

cross site script:跨站脚本攻击
 

 XSS的危害

xss payload

用以完成各种具体功能的恶意脚本
 

cookie劫持

拿到cookie就可以模拟登录
 

构造get post请求

可以是异步请求,img标签,或者iframe
 

XSS钓鱼

如模拟一个假的登录框,骗取用户登录。
 

识别用户的浏览器

用于做更精准的攻击
 

识别用户安装的软件

     如检测ActiveX的classid是否存在
     flash中有一个system.capabilites对象,可以得到用户电脑的信息
     FF的插件信息,直接存在在dom对象中。可以轻松获得
 

css history hack

发现用户曾经访问过的网站 。
     原理:利用style的visited属性,如果用户曾经访问过某个链接,那么颜色会不一样。
 

获取用户的真实IP地址

     有时得到的是出口IP,或者代理服务器的IP。
     可以通过Java Applet的接口获取客户端的IP

XSS worm  蠕虫

两个case: mystorm baidu
都是通过在css里添加XSS实现。

XSS的攻击技巧

利用字符编码

     百度收藏的一个case
     var redirectUrl = "\";alert(/XSS/);";
     由于百度的页面是gbk编码,因些"%c1\"这两个字符组合在一起后,会成为一个unicode字符,在firefox下会认为这是一个字符,然后就把转义符号"\"给吃了。
     如发送如下请求
  就成功实施了xss攻击
 

使用base标签

window.name的妙用

window.name是一个神奇的东西,没有行列字符的限制,window对象是浏览器的窗体,而并非document对象。因为,它不受同源策略的限制。

apache head xss

有一个Exprect,服务器会不经过任何处理,直接写入到页面中。这样就被正常解析了。同时也也要要求head需要模拟。变得很鸡肋。
通过flash构造请求就很方便,不过目前flash已经修复,但是还是可以使用applet等第三方插件实现。 

flash xss

所以一般是要禁止<embed> <object>等标签。    

XSS的防御

HttpOnly

浏览器将禁止页面的Javascript访问带有HttpOnly属性的cookie.
可以只给某个cookie设置。

输入检查

白名单

输出检查

安全的函数

要注意不同场景下
          HTML标签
          HTML属性下
          script标签
          事件中
          css中
          地址中
          innerHTML

处理富文本

          使用htmlparse可以解析出html的
          1. 事件严格禁止
          2. 标签使用白名单
          3. 尽可能禁止自定义css 与style
 
 

一个有意思的ie8的css跨域漏洞

 
 
<body>
 
{}body{font-family:
aaaa
 
</body>
 
 
<style>
@import url("http://www.a.com/test.html")
 
<script>
 
document.body.currentStyle.fontFamily  // 这里可以读到了。

 

原文地址:https://www.cnblogs.com/well1010/p/websave.html