[해킹보안] 창과 방패 끝없는 전쟁

## 경고문 ##
제 블로그의 모든 글들은 해킹과 보안에 대한 학습용 글입니다.
해당 글을 보고 실제 홈페이지에 공격하는 것은 명백한 범죄행위임을 알려드리며,
절대로 실제 홈페이지에 공격하지 마시기 당부드립니다. 실제 공격한 부분에 대한 책임은
본인이 지셔야 하며, 블로그를 통해 공유한 블로거와는 무관함을 알려드립니다.

 

 

 

오늘은 크로스 사이트 스크립팅(XSS) 취약점 진단에 대해 실습을 해 보고, 취약점이 있는지 없는지 구분하는 방법에 대해서 알아보도록 하겠습니다.

 

먼저 XSS 취약점에 대해서 모르시는 뉴비 님들은 아래 개념을 한번 정독하고 오시면 학습에 도움이 될 듯 싶습니다.

 

* XSS 취약점이란?

https://noirstar.tistory.com/266

 

XSS(Cross-Site Scripting) 이란?

2. XSS (Cross-Site Scripting)  2.1 개요 Ÿ   XSS Attack  XSS(Cross-Site Scripting) 이란 웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하..

noirstar.tistory.com

 

자! 위에 글을 읽고 오셨다면 XSS 취약점에 대한 어느정도의 개념을 아셨을 것으로 판단하고, 실습을 진행하도록 하겠습니다.

 

일단 XSS 취약점 실습을 하기 전에 프로시 툴을 설치하시기 바랍니다.

 

* burp suite proxy tool 무료 다운

https://portswigger.net/burp/communitydownload

 

Download Burp Suite Community Edition - PortSwigger

Burp Suite Community Edition is PortSwigger's essential manual toolkit for learning about web security testing. Free download.

portswigger.net

 

프록시 툴을 내려받은 후, 설치를 하셨다면 프록시 툴을 설정해 주세요.(아래 참조)

https://200301.tistory.com/7

 

[Burp Suite (버프스위트)] 설치 및 설정 방법

[Burp Suite] 설치 방법 오늘은 어제 "Suninatas(써니나타스) 4번 문제"에서 사용했던 [Burp Suite]에 대한 설치 방법에 대해 설명하고자 합니다. 아래의 링크는 어제 내가 풀었던 링크를 걸어놨습니다. http

200301.tistory.com

 

모두 설정을 해 주셨다면 이제 진짜로 XSS 취약점 진단을 해 봅시다.

 

XSS 취약점이 있는 사이트인 아쿠네틱스 테스트 홈페이지에 접속을 합니다.

 

http://testphp.vulnweb.com/search.php?test=query 

 

search

Warning: This is not a real shop. This is an example PHP application, which is intentionally vulnerable to web attacks. It is intended to help you test Acunetix. It also helps you understand how developer errors and bad configuration may let someone break

testphp.vulnweb.com

 

홈페이지 화면을 보면 입력값을 입력해 줄 수 있는 검색 창이 있는 걸 확인하셨겠지요?

이제 XSS 취약점이 있는지 확인하기 위해 스크립트 기본 구문( <s c r i p t>a l e r t(0) </s c r i p t>)을 검색 창에 삽입해 줍니다.

 

그리고 프록시 툴로 인터셉터를 ON으로 설정한 후에 홈페이지 입력 창 (go)를 클릭해 줍니다.

이때 주의해야 할 점은 burp suit툴의 기능 중, Forward를 한번씩 클릭해 주면서 내가 공격하려는 사이트가 (1번표시) 맞는지 확인하고 검색 창이(2번 표시) 맞는지도 확인을 해 줘야 한다는 것입니다. 1번2번이 맞다고 확인되면 우클릭해서 Send to Repeater를 클릭해 줍니다.

 

 

그리고 Repeater 폼으로 가면 검색 창의 패킷이 이동된 것이 확인 되었을 것입니다. 2번 표시된 Send를 클릭해 줍니다. 그러면 우측 Response(응답) 값에 내가 검색 창에 입력했던 <s c ript>a lert(0)</s c ript> 스크립트 구문을 볼 수 있습니다. 자세히 보시면 취약점에 대한 치환이 안 되어 있는 것을 확인하실 수 있을 것입니다. (취약점에 대한 방어 코딩이 되어 있다면 &gt, &lt 등으로 되어 있을 것입니다.)

프록시 툴 인터셉터를 계속 클릭한 수, 홈페이지를 보게 되면 아래와 같이 팝업 창이 뜨면서 숫자 0이 찍히는 모습을 볼 수 있을 것입니다. 이렇게 나온다면 XSS 취약점이 있다는 것으로 판단하셔도 됩니다.

 

 

 

이제 XSS 취약점에 대한 시큐어코딩을 통한 방어를 한 화면을 보여 드리도록 하겠습니다.

아래 사이트는 네이버 버그바운티에 나와 있는 검색 폼입니다.(아무 사이트에 공격하면 절대 아니되구요, 버그바운티에서 공격하라는 사이트만 공격해서 취약점을 찾으셔야 합니다. 그리고 주의사항도 꼼꼼히 읽으시길 바랍니다.)

 

일단, 검색 폼에 XSS 스크립트 기본 구문을 삽입했습니다.

그리고 프록시 툴로 인터셉터 한 상태에서, 검색 폼의 돋보기 모양을 클릭 합니다.

그리고 Send to Repeater를 클릭해서 Repeater 폼으로 이동합니다.

 

리피터 폼으로 가서, Send를 클릭한 후 Response(응답)값을 확인 하겠습니다. 우측 맨 하단에 보면 문자를 찾을 수 있는 찾기 기능이 있습니다. alert(0)으로 찾으면 노란색으로 문자를 찾을 수 있습니다. 그런데 위에 아쿠네틱스 사이트에서 보던 화면과 다르지요? &lt(<), &gt(>) 라고 치환된 문자들을 보실 수 있을겁니다. 만약 이런 치환 구문이 있다면 해당 검색 폼은 취약점이 없다고 판단하셔도 무방합니다. 더 진행하셔도 되겠지만, 저라면 다른 취약점을 찾는데 시간을 할애할 것 같아요 ㅎㅎㅎ(진단 시간이 많지 않기 때문에...)

* XSS 문자열 치환 시큐어코딩

 

https://diqmwl-programming.tistory.com/84

 

[시큐어 코딩] #3 크로스 사이트 스크립트 / XSS

1. 크로스 사이트 스크립트란? 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도할 수 있다. 다음 그림과 같이 악성 스크립트를 서버측에 저장하면 다른사용자는 악성스크

diqmwl-programming.tistory.com

 

자!!! 이 정도만 아셔도 웹 어플리케이션 취약점을 찾는데는 어려움이 없으실겁니다.

 

그럼. 다음 시간에 또 만나요~ 안녕~:)