Response中所隐藏的杀机---揭秘响应中所存在的脆弱点

简介: 正文尝试注入Origin Header,例如:Origin: http://me.com,如果Response中包含Access-Control -Allow-Origin: http://me.com和Access-Control- allow - credentials: True

正文


  1. 尝试注入Origin Header,例如:Origin: http://me.com,如果Response中包含Access-Control -Allow-Origin: http://me.comAccess-Control- allow - credentials: True,则有CORS
GET /getInfo HTTP/1.1
Host: www.company.com 
User-Agent: Mozilla/5.0
Referer: https://previous.com/path 
Origin: http://me.com
  1. 尝试注入Origin Header,例如: http://company.com.me.com, http://Acompany.com, http://companyAcom, http://company.comAnull获得CORS
GET /getInfo HTTP/1.1
Host: www.company.com
User-Agent: Mozilla/5.0
Referer: https://previous.com/path 
Origin: http://company.com.me.com

3.尝试注入带有特殊字符的Origin Header,例如

& ' ";!$ ^ * ( ) + = ` ~ - _ = | { } % 还有: %01-08 , %0b , %0c , %0e , %0f , %10-%1f 以及 %7f

GET /getInfo HTTP/1.1
Host: www.company.com
User-Agent: Mozilla/5.0
Referer: https://previous.com/path 
Origin: http://me.com`.company.com

4.尝试注入Origin Header,例如:http://me.com,如果响应包含Access-Control-Allow-Origin: *Cache-Control:no-cache尝试使用如下POC:

<html>
<script>
var url = "https://www.company.com/getInfo"; fetch(url, {
method: 'GET', cache: 'force-cache' });
</script>
 </html>

5.尝试使用Web缓存欺骗攻击,添加静态文件,例如nonexist .css或logo.png到接口去缓存敏感响应

GET /getInfo/nonexistent.css HTTP/1.1 
Host: www.company.com
User-Agent: Mozilla/5.0
Referer: https://previous.com/path 
Origin: https://www.company.com

6.尝试添加jsonp 或者回调,例如 http://company.com/getInfo?jsonp=function ,保证可以读取响应

7.尝试在响应头中找出:在HTTP/1.1 Response中是否有 Cache-Control: no-cache或者Pragma: no-cache

HTTP/1.1 200 OK
Content-Length: Number
Cache-Control: no-cache , no-store , must-revalidate 
Content-Type: application/json
{
"phone" : "01*********", "token" : "*************"
}
  1. 响应中是否存在X-Frame-Option Header(不得不承认google在给赏金方面很大方)
HTTP/1.1 200 OK
Content-Length: Number 
X-Frame-Option: SAMEORIGIN 
Content-Type: application/json
{
"phone" : "01*********", "token" : "*************"
}

9.尝试找出,有是否有 postMessage 的API,比如window.postMessage(“text”,“*”);addEventListener(“message” function(message){message.origin});

复现步骤(这种漏洞往往赏金很高,fb给出的赏金往往好几万美金一个,读者可以根据我后面提供的最后参考可以深入研究):

  • 跳转至http://company.com/getInfo
  • 右击,查看 View Page Source
  • 搜索postMessage With * addEventListener With Argument-Function.origin

参考

https://hackerone.com/reports/629892

https://hackerone.com/reports/688567

https://medium.com/@saamux/full-account-takeover-through-cors-with-connection-sockets-179133384815  (IDOR+CORS)

https://www.youtube.com/watch?v=wgkj4ZgxI4c

https://infosecwriteups.com/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397

https://hackerone.com/reports/761726

https://hackerone.com/reports/260697

https://hackerone.com/reports/397508

https://hackerone.com/reports/118631

https://wiki.owasp.org/index.php/Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)#How_to_Test

https://medium.com/@osamaavvan/1800-worth-clickjacking-1f92e79d0414

https://medium.com/@raushanraj_65039/google-clickjacking-6a04132b918a

https://vinothkumar.me/


目录
相关文章
|
5月前
接口请求内容改变的问题.
接口请求内容改变的问题.
25 0
|
2月前
|
Java
Response对象页面重定向、时间的动态显示
该博客文章介绍了Response对象的用法,包括页面刷新和页面重定向的实现,通过示例代码展示了如何使用`setHeader`和`sendRedirect`方法进行操作。
|
2月前
|
运维 Serverless 调度
函数计算产品使用问题之怎么在HTTP触发的函数里添加或读取自定义头部
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
Java
使用request对象进行简单的注册以及信息显示
这篇文章介绍了如何在JSP中使用request对象进行简单的注册信息处理和显示,包括设置和获取属性值、创建注册表单、接收用户输入并在成功页面展示这些信息的方法。
|
3月前
|
前端开发 Java Spring
设置响应内容类型的几种方法比较
设置响应内容类型的几种方法比较
|
5月前
Response设置响应数据功能介绍及重定向
Response设置响应数据功能介绍及重定向
61 0
|
10月前
全局响应返回处理
全局响应返回处理
35 0
|
12月前
|
人工智能 自然语言处理 前端开发
Network可以显示后台返回的数据,但是打印出来时是undefind
Network可以显示后台返回的数据,但是打印出来时是undefind
98 0
|
XML 数据格式
FastAPI(47)- 通过 Response 自定义响应的类型
FastAPI(47)- 通过 Response 自定义响应的类型
301 0
FastAPI(47)- 通过 Response 自定义响应的类型