[Web Hacking] DH XSS-2

KyungH·2024년 2월 29일

Web Hacking War Game

목록 보기
5/17
post-thumbnail

📝Problem - XSS-2

기존에 풀었던 XSS-1 문제와 거의 비슷한 문제이다.
목적은 사용자의 쿠키 탈취로 동일하며, 페이지 구성 또한 동일하다.

@app.route("/vuln")
def vuln():
    return render_template("vuln.html")

하지만 위 코드를 보면 기존의 param 값을 그대로 리턴하던 /vuln 페이지가 render_template 함수를 사용하고 있다. 이 함수는 간단하게는 템플릿 엔진을 사용하여 HTML 템플릿 파일을 렌더링하는 함수이며, 주어진 템플릿 파일의 이름과 함계 전달된 변수나 값들을 템플릿에 적용하여 완성된 HTML을 생성해준다.


📌Approach

결과적으로는 render_template 함수의 추가로, 템플릿 변수가 기록될 때 HTML 엔티티코드로 변환해 저장되기 때문에 XSS가 발생하지 않게 된다. 이는 <script> 태그로 XSS를 발생 시킬 수 없는 상황을 의미한다.

<script> 태그를 제외한 다른 태그를 사용하여 우회해야하는데, 이는 <img> 태그에 존재하는 onerror 속성을 통해 우회할 수 있다.


📌Solution

쿠키를 탈취하는 과정은 이전 문제와 동일하게 진행되며, 단지 태그를 우회하는 과정에서 <img> 태그를 사용하는 것이다.

따라서 /flag 페이지에 작성해야 할 코드는 다음과 같다.

<img src="" onerror="location.href='/memo?memo='+ document.cookie">

위 코드를 통해 이전 문제와 동일한 과정으로 사용자의 쿠키를 탈취하여 FLAG를 획득할 수 있다.


References

DreamHack 강의 - Exercise: XSS-2

0개의 댓글