본문 바로가기

WEB Security/GNU board 5

[그누보드5] gnuboard5.3.3 xss 취약점 패치 실습

 

 

 

우선 https://sir.kr/g5_pds/4678 링크를 참고하여 xss 취약점을 패치한 항목을 보자.

* 이전 : 5.3.2.9.1

패치후 : 5.3.3

 

 

 

 

차근차근 취약점 패치 그누보드5 환경에서 xss 취약점을 확인해보면서 패치된 소스와 비교해보면 될 것 같다.

내가 고른 php 파일은 adm/board_form.php.

 

 

 

 

 

실습을 해보기 위해서는 패치되기 전인 5.3.2.9.1  먼저 그누보드를 구축해봐야할 것 같아서 5.3.2.9.1 로 구축.

관리자 권한으로 로그인해 준 후, 패치되었다는 adm/board_form.php 로 이동해서 어떤 페이지인지 먼저 살펴보자.

관리자가 게시판을 생성 및 관리하는 페이지인 것 같다.

우선 이런 페이지라는 것을 확인해두고,

 

 

 

 

 

직접 php 파일 소스를 비교해보자.

870 라인을 참고하여 게시판 관리 페이지 중 '상단 내용' 이라는 부분에서 패치가 되었음을 알 수 있고,

872 라인부분에 get_text 함수에서 html_purifier 함수가 추가되면서 패치가 된 것을 확인할 수 있다.

 

 

 

 

바로 이부분.

내용을 입력 받는 부분인 get_text 함수에서 html_purifier 함수가 추가되었는데 함수는 뭘까?

 

 

 

 

 

** html_purifier() : HTMLPurifier XSS(cross-site scripting) 취약점을 필터링을 하는 라이브러리 ,

게시판의 제목이나 글 내용 등에 script, onmouseover 삽입해 공격을 하거나 에러 등을 만들어서 원하는 정보를 알아내는 취약점을

필터링해서 안전한 속성, 이벤트, 태그 등만을 허용해준다.

 

간단히 말해서 웹사이트에 문제를 일으킬 있는 아이프레임이나 스크립트에 대해 필터링을 해주는 함수이다.

함수를 추가하여 html_purifier에서 지정한 html 사용할 있다.

 

참고 - https://m.blog.naver.com/PostView.nhn?blogId=mindisit&logNo=220674781866&proxyReferer=https%3A%2F%2Fwww.google.com%2F

https://sir.kr/qa/282109

http://htmlpurifier.org

 

 

 

 

 

 

그렇다면 한번 곳에 <script> 삽입한 xss공격이 이루어지는지 실습해보자.

게시판 관리’ -> ‘게시판 수정’ -> ‘상단 내용까지 접근 게시판을 생성해주면 된다. 아래와 같이 입력해준다.

게시판의 테이블 이름과 그룹, 제목을 설정한 ,

 

 

 

 

 

글을 작성하기 전에 editor 아닌 html 설정하고

이렇게 alert 띄워지도록 <script> 작성해보았다.

 

 

 

 

* 여기서

html 로 변경하지 않고 editor 에서 스크립트를 입력하면,

이런 불상사가 발생하니 반드시 html 로 변경하여 원하는 스크립트를 입력해준다.

 

 

 

 

 

 

그러나 아무런 변화가 없었다. 이미 script 태그는 필터링이 되고 있는 듯했다.

따라서 xss 공격에 쓰일  있는 태그들을 하나씩 추가하면서 확인해보았다.

ex1. 스트립트 태그 <script>alert('XSS');</script>

ex2. 자바스크립트 태그 <a href="javascript:alert('XSS')">XSS</a>

ex3. 이벤트 속성 <img src="#" onerror="alert('XSS')">

ex4. 내용 난독화  <a href="&#x6A;&#x61;&#x76;&#x61;&#x73;&#xA;&#x63;&#x72;&#x69;&#x70;&#x74;&#xA;&#x3A;&#xA;&#x61;&#x6C;&#x65;&#x72;&#x74;&#xA;&#x28;&#x27;&#x58;&#x53;&#x53;&#x27;&#x29;">XSS</a>

 

참고 - https://swk3169.tistory.com/entry/WebHacking-XSSCross-Site-Scripting-%EA%B3%B5%EA%B2%A9%EC%9D%98-%EA%B0%9C%EC%9A%94%EC%99%80-%EC%8B%A4%EC%8A%B5

 

 

 

 

 

그러던 중 <img src="#" onerror="alert('1')"> 를 입력하니까

!!!!

 

이렇게 img 태그를 이용해 alert 가 띄워지는 취약점을 확인했다.

한번 패치된 후의 그누보드 (5.3.3) 으로 들어가서 똑같은 현상이 발생하는지 확인해보자.

 

 

 

 

 

 

 

 

5.3.3 을 구축한 후, 5.3.2.9.1 에서 취약점이 발견된 곳으로 동일하게 이동해서,

똑같이 입력.

 

 

 

 

 

 

 

해당 취약점이 패치된 5.3.3 에서는 img 태그를 활용한 onerror 의 xss 공격이 먹히지 않아

alert 뜨지 않고 생성한 게시판으로 이동한 화면에서도 아무것도 뜨지 않는 것을 있었다.

 

 

또한 게시판 수정 확인 버튼을 누른 입력했던상단 내용 html 부분을 보니,

원래 입력한 <img src=“#” onerror=“alert(‘XSS’)”> 가 <img src=“” alt=“”> 으로 필터링된 후 바뀌어 있는 있었다.

 

 

 

 

 

* alt 속성 : Alternate(대체하다) 줄임 말로, 이미지의 대안을 의미. 

이미지는 외부의 주소이기 때문에, 주소가 잘못되었거나 해당 위치의 서버에 문제가 있다면 이미지를 읽어 있기 때문에 이럴 alt 속성의 내용이 해당 이미지를 대체하여 나타나게 .

 

 

 

 

 

아마 html purifier 에서 onerror 속성을 필터링하면서 alt 속성을 img 태그 사용시 필수로 입력하도록 같기도 하다.

 

 

첫번째 Xss 공격 취약점 패치 확인 실습을 마쳤다.

Xss 공격에 사용될 있는 다양한 태그와 속성들을 골고루 익혀두면 취약점 발견이나 게시판 생성에 적절히 사용해서 위협을 막을 있을 같다.