## 一、XSS的测试技巧和工具:
### 测试方法
1. 工具扫描:APPscan、awvs、burpsuite、XSSER XSSF
2. 手动测试:Burpsuite、firefox(hackbar)
1)在目标站点上找到输入点,比如查询接口,留言板等;
2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;
3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞;
**第一种情况:可得知输出位置**
输入一些敏感字符,例如、"、'、()等等,在提交请求后去查看HTML源代码,看这些输入的字符是否被转义。
在输出这些敏感字符的时候,很有可能程序已经做过了过滤,那么你在寻找这些字符的时候就不是那么容易了,这时候你可以直接输入`XXSER<>"'&`,然后在查找源代码的时候直接进行查找XXSER或许比较方便一些。
**第二种情况:无法得知输出位置**
非常多的Web应用程序源代码是不对外开放的,这时在进行测试XSS时就有可能无法得知输入数据到底在何处显示,比如测试某留言本是否存在XSS,那么在留言之后,你必须要经过管理员的审核才能进行显示,这时你是无法得知,你输入的数据在后台管理页面处于何种状态。
### 万能XSS漏洞payload
~~~
"/></textarea><script>alert(1)</script>
~~~
**三种弹窗函数**
仅弹窗:alart
弹输入框:prompt
弹是否:confirm
### XSS辅助工具
1. beef:https://beefproject.com/
一个xss攻击框架,参考https://www.freebuf.com/articles/web/175755.html
2. xssor:http://xssor.io
免费的JavaScript在线入侵工具
3. xss平台:
在线的xss平台,有很多,自行搜索
4. ie tester:http://www.ietester.cn/
可以模拟测试各种版本的老IE浏览器
## 二、三种xss实战
### A、 存储型xss实战
1. 存储型xss原理
攻击者在页面上插入xss代码,服务端将数据插入数据库,当用户访问到xss漏洞的页面时,服务端从数据库中取出数据展示到页面上,导致xss代码执行,达到攻击效果
2. 可能存在存储型xss的功能点
在页面上所有可以输入并保存数据的地方,都可以尝试使用xss代码进行测试
3. 存储型xss漏洞的挖掘方法
尝试在输入的内容中加入如下字段,如果保存后的页面,打开弹出提示xss提示框,就表示有xss漏洞
```
<img scr=x onerror=alert(1)>
```
4. 存储型xss部分场景修复
使用过滤函数,过滤输入内容中的html标签等
### B、反射型xss
1. 反射型xss原理
攻击者在url中插入xss代码,服务端将url中的xss代码输出到页面上,攻击者将带有xss代码的url,想办法欺骗用户点击,用户打开后收到xss攻击
2. 可能存在反射型xss的功能
url地址中带有参数的网页,是重点关注的区域、页面的搜索框是重中之重
3. 反射型xss漏洞挖掘方法
以某页面的搜索功能为例,在搜索框中输入任意字符,如“aaaaa”,然后在浏览器源码中搜索输入的 关键字,找到关键字所在的标签,使用闭合标签的方式闭合掉标签,并插入xss代码,看是否会有xss漏洞,如:
```html
url=xxxx/search.html?ks=aaaa
关键字在title中,如<title>aaaa</title>,可以将url如下闭合并测试xss
url=xxxx/search.html?ks=aaaa</title><script>alert(1)</script>
关键字在imput中,如<input placeholder="搜索" type="texg" name="ks" value="aaaa">,可以如下闭合
url=xxxx/search.html?ks=aaaa"<script>alert(1);</script>
```
4. 反射型xss部分场景的修复
使用函数转义输入内容中的html代码
### C、DOM型xss
攻击者在url中插入xss代码,前端页面直接从url中获取xss代码输出到页面上,攻击者将带有xss代码的url,想办法欺骗用户点击,用户打开后收到xss攻击
其他和反射型类似(略)
## 三、XSS的防御策略:
* * *
**只要有输入数据的地方,就可能存在 XSS 危险。永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。**
**XSS防御的总体思路是:** 对输入进行过滤,对输出进行编码
1. httpOnly:在 cookie 中设置 HttpOnly 属性后,js脚本将无法读取到 cookie 信息。
2. 输入过滤:一般是用于对于输入格式的检查,例如:邮箱,电话号码,用户名,密码……等,按照规定的格式输入。
不仅仅是前端负责,后端也要做相同的过滤检查。因为攻击者完全可以绕过正常的输入流程,直接利用相关接口向服务器发送设置。
3. 转义 HTML:如果拼接 HTML 是必要的,就需要对于url中的引号,尖括号,斜杠进行转义,但这还不是很完善.想对 HTML 模板各处插入点进行充分的转义,就需要采用合适的转义库。
例如:·htmlspecialchars()·函数把一些预定义的字符转换为 HTML 实体
~~~
#预定义的字符是:
& (和号) 成为 &
" (双引号) 成为 "
’ (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
~~~
4. 白名单:对于显示富文本来说,不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。
这种情况通常采用白名单过滤的办法,当然也可以通过黑名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式。
- src导航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查询
- 备案信息查询
- 信用信息查询
- IP反查站点的站
- 浏览器插件
- 收集子域名信息
- 在线平台
- 工具枚举
- ssl与证书透明度
- DNS历史解析
- DNS域传送漏洞
- C段探测
- JS文件域名&ip探测
- 搜索引擎&情报社区
- google黑客
- 威胁情报
- 钟馗之眼
- 收集相关应用信息
- 微信公众号&微博
- APP收集&反编译
- 收集常用端口信息
- 常见端口&解析&总结
- 扫描工具
- 网络空间引擎搜索
- 浏览器插件
- nmap扫描
- 收集敏感信息
- 源码泄露
- 邮箱信息收集
- 备份文件泄露
- 目录&后台扫描
- 公网网盘
- 历史资产
- 指纹&WAF&CDN识别
- 指纹识别
- CDN识别
- 绕过CDN查找真实IP
- WAF识别
- 漏洞资源和社工
- 漏洞公共资源库
- 社会工程
- 资产梳理
- 各种对渗透有帮助的平台
- 扫描器
- 扫描器对比
- AppScan(IBM)_web和系统
- AWVS_web扫描
- X-Scan_系统扫描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_绿盟_web
- 安恒明鉴
- Nessus_系统
- nexpose_系统
- 启明天镜_web_系统
- SQL注入
- 常用函数
- sql注入步骤
- union注入和information_schema库
- 函数和报错注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解决方案
- Access数据库注入
- MSSQL数据库注入
- MYSQL数据库注入
- 神器SQLmap
- xss跨站脚本攻击
- xss原理和分类
- xss案例和修复
- xss绕过技巧
- xss案例
- 文件上传下载包含
- 常有用文件路径
- 文件上传漏洞
- 文件下载漏洞
- 文件包含漏洞
- upload-labs上传漏洞练习
- XXE、SSRF、CSRF
- SSRF原理基础
- SSRF案例实战
- CSRF原理基础
- CSRF案例及防范
- XXE之XML_DTD基础
- XXE之payload与修复
- XXE结合SSRF
- 远程命令执行与反序列化
- 远程命令和代码执行漏洞
- 反序列化漏洞
- 验证码与暴力破解
- 爆破与验证码原理
- CS架构暴力破解
- BS架构暴力破解
- WEB编辑器漏洞
- 编辑器漏洞基础
- Ewebeditor编辑器
- FCKeditor编辑器
- 其他编辑器
- web中间件漏洞
- 中间件解析漏洞
- Tomcat常见的漏洞总结
- Jboss漏洞利用总结
- Weblogic漏洞利用总结
- WEB具体步骤
- 旁注和越权
- CDN绕过
- 越权与逻辑漏洞
- WEB应用常见其他漏洞
- WEB登陆页面渗透思路
- 获取WEBshell思路
- 社工、钓鱼、apt
- 社工和信息收集
- 域名欺骗
- 钓鱼邮件
- 一些钓鱼用的挂马工具
- 代码审计
- 代码审计工具
- WAF绕过
- WAF基础及云WAF
- 各种WAF绕过方法
- 绕过WAF上传文件
- 系统提权
- windows系统提权
- linux系统提权
- 数据库提权操作系统
- 内网横向渗透
- 内网穿透方式
- 一些内网第三方应用提权
- ARP与DOS
- ARP欺骗
- DOS与DDOS
- 一些DOS工具