Web前端黑客技术②——挖掘XSS漏洞
来源:互联网 发布:淘宝宝贝分类在哪里 编辑:程序博客网 时间:2024/05/24 03:20
这篇文章只谈论反射型XSS和存储型XSS漏洞挖掘的方法。
XSS漏洞挖掘概述
一般情况下,我们利用反射型XSS漏洞的方式是基于URL的,而利用存储型XSS漏洞是基于表单提交的。
看起来两漏洞利用点大相径庭,但其实两漏洞利用方式大同小异。
反射型XSS
我们知道反射型XSS的输入点在URL上,所以首先要对URL有个基本的认识。
URL的一般形式如下:
显而易见,、我们是无法改变的(如果改变,那么就不是原始网站)。
那么对我们而言,能够控制的输入点只有、、。
此外,除了Web2.0的网站,一般不会出现在服务器端解析。
那么对我们而言,能够控制的输入点只有、。
此外,和的利用情况很类似。
在一般情况下,我们都是利用挖掘反射型XSS漏洞。
存储型XSS
与反射型XSS相比,存储型XSS漏洞挖掘的差别在于:存储型XSS一般都是基于表单的提交,然后进入服务端存储,最终在某个页面输出。
但是存储型XSS漏洞挖掘也有自己的特色,即与反射型XSS的输入输出都在一个页面相比,对于存储型XSS输出点,我们根本不是到在哪里。
一般情况下,存储型XSS表单提交之后的输出点有以下几种可能:
- 表单提交后跳转到的页面可能是输出点。
- 表单所在的页面可能是输出点。
- 表单提交后不见了,整个网站的每个源文件都可能是输出点。
我们只讨论前面两种情况下的存储型XSS漏洞挖掘。
XSS漏洞挖掘步骤
无论是反射型XSS还是存储型XSS,我们都可以按照如下步骤或方法来利用挖掘XSS漏洞
步骤一 发起探子请求
在真正的payload攻击请求之前,我们发出一次无危害(不包含任何特殊符号)的探子请求,此请求不会被网站的过滤机制发现,就像一次正常的请求。
“探子”的目的有以下两个:
- 探寻目标参数值是否会出现在响应上。如果不出现,就完全没有必要进行后续的payload请求和分析,因为这些payload请求与分析可能会进行很多次,浪费请求资源。
- 探寻目标参数值出现在HTML的哪个部分。不同的HTML部分对待XSS的机制是不一样的,请求的payload当然也不一样。
一般情况下,我们够着的探子请求是一个8位左右的随机字符串,且不与响应的HTML中已经存在的字符串重复。
步骤二 查看源码
在我们输入了探子请求之后,我们就要思考一个问题:我们输入的探子请求输出在哪里?
这时候,我们唯一的办法就是查看网页的源代码,查找探子请求的位置。
这也是为啥我们之前构造探子请求的时候要保证其唯一性,就是为了便于我们的查找。
探子请求输出的位置可能有一下几种可能:
- HTML标签之间。例如:
<div id = "body">【输出】</ div>
- HTML标签之内。例如:
<input type = "text" value = "【输出】"></ input>
- 成为javascript代码的值。例如:
<script>a = "【输出】";</ script>
- 成为CSS代码的值。例如:
< style>body{font-size:【输出】px;}</ style>
步骤三 构造payload
这里我们假设浏览器没有任何的过滤机制。
针对步骤二的四种可能,我们可以分别构造不同的payload。
Part 1 HTML标签之间
情形一:
如果输出点位置出现在<div id = "body">【输出】</div>
中,那么我们直接构造<script>alert(1)</script>
提交,即能让浏览器实现弹窗。
情形二:
如果输入点出现在如下几个标签的位置:
那么,我们构造的<script>alert(1)</script>
并不能让浏览器实现弹窗。
这个时候,我们构造payload的关键在于闭合标签(核心思想)。
例如,我们可以构造如下的payload:</title><script>alert(1)</script>
,这样,即能保证浏览器实现弹窗。
Part 2 HTML标签之内
对于输出点出现在HTML标签之内的情况:<input type = "text" value = "【输出】"></input>
。
我们有以下两种方法触发XSS:
- 闭合属性。构造payload:” onmouseover=alert(1) x=”,使用on事件来触发脚本。
- 闭合标签和属性。构造payload:
"><script>alert(1)</script>
,直接执行脚本。
Part 3 成为javascript代码的值
对于我们输入的请求成为javascript代码的值的情况:
<script>a = "【输出】";</script>
我们可以构造如下的payload:
</script><script>alert(1);//
其中,前面的</script>
直接闭合了之前的<script>
标签,后面的//是javascript的注释,保证了javascript语法的正确性。这样即能触发XSS。
Part 4 成为CSS代码的值
- Web前端黑客技术②——挖掘XSS漏洞
- web前端黑客技术揭秘学习笔记-XSS漏洞挖掘
- web前端黑客技术揭秘学习笔记-CSRF漏洞挖掘
- 《Web前端黑客技术揭秘》学习笔记-XSS
- web前端黑客技术揭秘学习笔记-漏洞的产生因素
- 前段黑客技术学习①——XSS
- Web前端黑客技术揭秘
- web前端黑客技术之数据与指令【sql注入、xss跨站脚本攻击】
- Web安全测试之——XSS漏洞
- web渗透—xss之基于DOM漏洞
- XSS(跨站漏洞)挖掘
- web漏洞 XSS
- Web安全 -- XSS漏洞
- Web前端安全——XSS攻击与防御
- 浅谈web漏洞挖掘—特殊变量fuzz
- Web前端黑客技术揭秘试读样章
- 图书推荐:《Web前端黑客技术揭秘》
- Web前端黑客技术揭秘 笔记1
- 还是关于vcenter server
- 文章标题
- 【log】slf4j 使用手册
- 数据存取之Preference浅析
- 二叉树的非递归中序遍历
- Web前端黑客技术②——挖掘XSS漏洞
- CentOS---网络配置详解
- Ra
- reading environment variable python
- HDU 4283 You Are the One(区间dp)
- JAVA字符串格式化
- Iterator使用及ArrayList遍历注意事项
- 【封装】WriteToFile——数据写入文件
- 迁移学习资源整理