无题
XSS
单引号 双引号 尖括号(万能闭合方法)闭合前面的数据+xss攻击代码
使用:在url带参数比如id=1的后面接上xss攻击代码,刷新出现弹窗
要是浏览器限制输入长度,右键浏览器页面修改数值
1 | ‘“><script>alert(123)</script> |
什么是XSS
- xss跨站脚本攻击,xss属于客户端攻击,也可以借助管理员权限获取网站的控制
- xss攻击最终目的是在网页中嵌入恶意脚本代码,一般为javascript语言
XSS原理
- 程序对参数的输入和输出控制不严格,导致攻击者精心构造的脚本输入后,在输到前端时被浏览器当作有效代码解析执行【xss弹窗】从而产生危害
XSS分类
反射型
:插入的数据(xss攻击代码)不会保存在数据库里,一次性的,刷新浏览器就没有了,只是把输入的数据反射给了浏览器储存型
:插入的数据会被永久保存在数据库里,刷新浏览器还有DOM型
:浏览器的DOM节点产生的,基本没什么危害,不与后台服务器产生数据交互,通过前端的DOM节点形成xss漏洞<a href='#' onclick="alert(123)">what do you see?</a> 点击 what do you see? 会出现123弹窗
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#### XSS危害(xss能干什么)
- `网站挂马`
- `劫持用户cookie`
- `框架钓鱼`
- `监视键盘记录`
劫持用户cookie
- 渗透测试人员只输入弹窗攻击代码弹个窗口证明存在xss漏洞就行了
- 红队就要输入能盗取cookie信息的攻击代码,使用网上在线xss平台也可以自己搭建,使用平台提供的盗取cookie攻击代码,插入到存在xss漏洞的地方,当用户点击存在xss漏洞的页面,就会触发盗取cookie,发送到xss平台。利用:在登录页面bp抓包,把劫持到用户的cookie信息粘贴到bp的cookie头里=可以用别人的身份直接登录。cookie信息=用户身份验证
框架钓鱼
- 需要做一个钓鱼页面,在存在xss漏洞的地方插入攻击代码,src=钓鱼页面,用户点击跳转至钓鱼页面输入提交的内容都会获取到
网站挂马
- 现在成功率极低,浏览器限制。在网站的Web页面中插入`网马`,用户在访问被挂马的网站时也会访问黑客构造的网马,网马在被用户浏览器访问时就会利用浏览器或者相关插件的漏洞,下载并执行恶意软件。网马本质就是一个特定的网页,这个网页包含了攻击者精心构造的恶意代码,这些恶意代码通过利用浏览器(包括控件、插件)的漏洞,加载并执行攻击者指定的恶意软件(通常是木马)
键盘记录
- 插入键盘监视脚本
#### XSS可能出现的地方
- 只要用户能输入的地方都有可能出现xss漏洞,登录、注册、邮箱、搜索
- url带参数的地方,有输入输出
#### XSS测试流程及工具
- 见框就插
- APPscan、AWVS、burpsuite等
#### XSS与SQL的区别
- xss不与数据库产生交互,sql与数据库产生交互
#### XSS过滤了script标签怎么绕过
- 使用其他标签 img、svg、a、p、div、input、select、form、object
#### XSS括号被过滤了绕过
- 使用`throw`绕过
#### XSS尖括号被过滤绕过
- HTML实体编码
#### `弹窗函数alert过滤了绕过`
- 使用其他函数 `prompt`、`confirm`
#### 单引号被过滤了
- 直接script:alert(123),不带其他参数符号(特殊情况)
#### 单引号尖括号都被过滤了
- 也有可能产生xss,在参数给变量的时候,变量输出的时候给了其他标签里面的话,是可以被执行的
#### XSS绕过
> `大小写`、`双写`、`编码`、`拼凑`、`换HTML标签`、`注释干扰`、`js前端输出绕过`
编码:html实体编码,十进制,十六进制、url编码、js、unincode编码、base64编码、ascii编码
HTML标签:img、svg、a、p、div、input、select、form、object
拼凑:<sc<script>ript>alert('你打篮球像oldboy')</scr<script>ipt>
js前端绕过:在前面加字符闭合就行了 abc123‘><script>alert(123)</script>
详:https://github.com/BaizeSec/bylibrary/blob/main/docs/%E9%80%9F%E6%9F%A5%E8%A1%A8/sql%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E9%80%9F%E6%9F%A5%E8%A1%A8.md
#### htmlspecialchars()函数的作用
- `htmlspecialchars() 函数把一些预定义的字符转换为HTML实体。`
& (and号) 变为 &
“ (双引号) 变为 "
’ (单引号) 变为 '
< (小于) 变为 <
(大于) 变为 >
1 |
|
为什么要有同源策略
- 比如一个恶意网站的页面通过js嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码
跨域访问(浏览器)
同域:协议 主域名 端口 都要相同
不同域:协议 主域名 端口任意一个不同就是不同域
跨域:不同域之间的数据操作叫做跨域访问,这是浏览器自身安全的机制,不同域之间的数据操作时不允许的。
CORS跨域资源共享漏洞
跨域资源共享可以放宽浏览器的同源策略,可以通过浏览器让不同的网站和不同的服务器之间通信,当服务开启CORS功能,如果
响应包返回的报文头
Access-Control-Allow-Credentials为true
时,攻击者可以利用该配置缺陷创建一个特殊的JavaScaript脚本去发送CORS请求,从而窃取用户的敏感数据。验证:bp抓包、在请求体里添加一个请求头:Origin:http://随意网址。看响应包里有没有 Access-Control-Allow-Credentials=true
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 江湖有缘见!