대체로 웹해킹 문제들은 적게 나왔지만 난이도도 Dreamhack 기준 3 정도에 그쳤던 것 같습니다.
특히 특별 문제의 경우 예고된 대로 더 간단하게 출제가 된 경향이 있었습니다 :)
- 문제의 소스 코드를 보면 CSP 헤더를 설정하고 있다. script의 경우 xss를 막기 위해 self origin / nonce를 통해 제약을 두고 있지만 base-uri에 대한 제약 정책이 없다.
- 이렇게 되면 base-uri를 악성 uri (이 문제에서는 풀이자의 개인 서버)로 바꾸고 script 파일을 그 uri의 서버에 담아둔다면 script를 해당 서버에서 실행시킬 수 있다.
- base-uri를 바꾸기 위해 base 태그를 xss 해야 한다. 이메일을 보내면 admin bot이 자동으로 그걸 읽는 구조이다. 따라서 해당 이메일에 xss할 코드를 넣으면 될 것이다. 하지만 이메일의 content는 textarea 태그를 통해 들어가기 때문에 string으로 치환되고 태그가 들어가지 않는다.
- 따라서 textarea를 적절하게 열고 닫아 submit 되는 부분이 textarea 내부에서 제출되지 않도록 해주어 base 태그를 xss 할 수 있다.
- 서버의 경우 aws instance의 nginx 서버를 이용하였다. 취약 사이트에서 bootstrap.bundle.min.js를 사용하고 있으므로 해당 파일을 내 서버에 위치에 맞게 업로드한다. 그리고 location.href를 통해 내 서버에 cookie 값을 보내도록 한다.
- admin은 해당 이메일을 읽고 내 서버의 bootstrap.bundle.min.js를 참조하고 내 서버에 cookie 값을 보내게 된다.
'Webhacking' 카테고리의 다른 글
[FIESTA 2023] 시나리오 앱 1 - 파일 다운로드 취약점 (0) | 2023.12.13 |
---|---|
[dreamhack] tw2tter (0) | 2023.08.10 |
[dreamhack] web-alasql (0) | 2023.08.10 |
[dreamhack] Keycat (0) | 2023.08.10 |
[dreamhack] spring-view (0) | 2023.08.10 |