1.思路
用戶登陸了一個存在跨域的網站,並且這個網站的跨域處理方式為CORS,並且開發人員處理跨域的時候滿足cookie跨域和Origin是可控的。那么用戶在登陸之后這個網站后,網站便會將一些cookie信息保存在瀏覽器中。
這個時候我們向該用戶發送一個釣魚網站,用戶點開這個釣魚網站之后,釣魚網站會向服務器發送一個Ajax異步請求,然后將返回的響應發送給攻擊者。
2.利用
(1)檢測方法一
檢查返回包的 Access-Control-Allow-Origin 字段是否為https://test.com
curl https:
//www
.junsec.com -H
"Origin: https://test.com"
-I
(2)檢測方法二
burpsuite發送請求包,查看返回包
請求包,我們只要關注Origin即可
把Origin設置為b.com時,返回包的Access-Control-Allow-Origin也為b.com,也就是b.com可以跨域獲取我的個人博客a.com的資源。從而產生了CORS配置不當的漏洞

3.防御
不要配置"Access-Control-Allow-Origin" 為通配符 “*” ,而且更為重要的是,要嚴格效驗來自請求數據包中的“Origin”的值。當收到跨域請求的時候,要檢查“Origin” 的值是否是一個可信的源,還要檢查是否為null。
避免使用 “Access-Control-Allow-Credentials :true” (請求中帶cookie)
減少“Access-Control-Allow-Methods”所允許的方法(只需要配置你所需要的即可)
