Portswigger web security academy:Cross-origin resource sharing (CORS)
Portswigger web security academy:Cross-origin resource sharing (CORS)
目录- Portswigger web security academy:Cross-origin resource sharing (CORS)
- 1 - CORS vulnerability with basic origin reflection
- 2 - CORS vulnerability with trusted null origin
- 3 - CORS vulnerability with trusted insecure protocols
- 4 - CORS vulnerability with internal network pivot attack
1 - CORS vulnerability with basic origin reflection
-
题目描述
- 该网站的跨域设置不安全,允许所有跨域请求
-
要求
- 利用exploit server盗取管理员的API key并提交
-
解题步骤
-
借助burp collaborator或者exploit server(可以看access log)构造exp
-
-
2 - CORS vulnerability with trusted null origin
-
题目描述
- 该网站的跨域设置不安全,允许origin为
null
- 该网站的跨域设置不安全,允许origin为
-
要求
- 利用exploit server盗取管理员的API key并提交
-
解题步骤
-
与上一题类似,多了个origin为null,而且材料里有介绍,沙盒化的
iframe
标签可以达到目的 -
构造exp
-
-
3 - CORS vulnerability with trusted insecure protocols
-
题目描述
- 该网站的跨域设置不安全,会信任任何协议下的子域名
-
要求
- 利用exploit server盗取管理员的API key并提交
-
解题步骤
-
这道题前面的材料大概讲的是,从http协议发送的请求如果符合白名单,也可以以http协议访问目标网站
-
先按照之前的做法试试
-
构造exp
-
-
打了两次不太行,继续找找看
-
-
发现了个xss
-
如果从这个页面发起请求呢?试试看
-
要借助xss跳转,所以需要把脚本编码一下
-
-
-
4 - CORS vulnerability with internal network pivot attack
-
题目描述
- 该网站的跨域设置不安全,信任所有内部域
- 这道题需要很多步骤来完成
-
要求
- 构造js脚本来确定192.168.0.0/24 : 8080的端点,并使用CORS删除用户Carlos
-
解题过程
-
先探测主机
-
(前面把168写成了169,跑了n久。。。)
-
拿到结果
172.31.31.68 2021-02-28 07:18:20 +0000 "GET //?text=
CORS vulnerability with internal network pivot attack OcwOagRrckNCfllF3TWppsdzBjfhZsjLA -
主机在
192.168.0.83:8080
-
-
接下来就是要想办法进入管理页面删除账号了,但是跨域是没有cookie的(直接使用上面的脚本,会提示只有管理员才能进入
/admin
)-
需要构造js脚本,使受害者非跨域访问该页面,然后从该页面传回信息,这里卡住了,看了官方的solution,需要用到登录点的XSS(做完补的图)
-
构造exp(这是官方solution里的脚本)
-
改良脚本
-
直接访问
/login
页面,借助username
的XSS进行CSRF,利用admin的cookie在iframe加载/admin
页面 -
返回
172.31.31.68 2021-02-28 08:29:52 +0000 "GET /?code= OcwOagRrckNCfllF3TWppsdzBjfhZsjLA HTTP/1.1" 200 "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"
-
-
-
-
还是和上面一样,删除账号也用不到csrf token
-
构造exp
-
-