※해당 포스트에 나온 취약점은 제가 찾은게 아닌 다른분이 제보한 취약점입니다.

 

[Github Link]
https://github.com/gnuboard/gnuboard5/commit/764cb349575e4a9d7d8e0bc43eaa918cfaed70e4

 

KVE-2019-0828 그누보드 XSS 취약점 수정 · gnuboard/gnuboard5@764cb34

Permalink Browse files KVE-2019-0828 그누보드 XSS 취약점 수정 Loading branch information... Showing 3 changed files with 5 additions and 0 deletions. +2 −0 adm/contentform.php +1 −0 adm/contentformupdate.php +2 −0 bbs/content.php @@ -104,6 +104,7 @@

 

 이 취약점은 그누보드 하단에 있는 '회사소개', '개인정보처리방침', '서비스이용약관' 등에서 발생하는 취약점입니다. 패치된 코드를 보시면 아시겠지만 크게 '작성'과 '조회'부분으로 나눌 수 있습니다. adm/contentform.php 와 adm/contentformupdate.php가 '작성'에 해당하는 부분이고 bbs/content.php가 '조회'에 해당하는 부분입니다.

 먼저 contentform.php 를 확인해보면 '태그 필터링 사용'에 해당하는 부분을 통으로 주석처리해서 날립니다. 이를 통해 글 작성시 태그 필터링 옵션 선택을 불가능하게 만들 수 있습니다. (아래 이미지 참고)

패치 전 남아 있는 태그 필터링 옵션

 contentformupdate.php 를 확인해보면 '태그 필터링 사용'에 대한 값을 담고 있는 co_tag_filter_use 변수에 삼항 연산자를 이용해 무조건 참을 넣어주는 것을 확인할 수 있습니다. 결국 내용 작성시 보안을 위해 '태그 필터링' 사용 희망 여부에 관계 없이 그냥 통으로 선택지를 날리고 강제로 '태그 필터링'을 해주는 패치입니다. 여기에 추가적인 안전장치를 하나 더 해주는데 그게 content.php 부분입니다.

 content.php는 관리자가 아닌 일반 유저들이 조회할때 사용되는 페이지입니다. 해당 페이지를 로드할때 강제로 co_tag_filter_use부분을 1로 변경해줍니다. 아마 필터링 사용 여부를 선택할 수 있는 부분을 날렸어도 파라미터 변조로 강제로 거짓(0)값을 넣어줄 경우를 대비해서 위의 코드를 추가해준게 아닌가 싶습니다. 결국 작성/조회시 강제로 '태그 필터링'을 사용하게 만드는 패치로 볼 수 있겠습니다.

 

 이를 직접 확인해보기 위해 관리자 계정으로 로그인해서 해당 내용을 작성할때 간단한 테스트용 스크립트를 이용해봤습니다.

'Web Hacking > Gnuboard 1-Day' 카테고리의 다른 글

[Gnuboard 1-Day] KVE 2019-0050  (0) 2019.10.28
[Gnuboard 1-Day] KVE-2019-1198  (0) 2019.10.27
[Gnuboard 1-Day] 환경 구축  (0) 2019.10.27

※ 해당 포스트에 나온 취약점은 제가 찾은게 아닌 다른분이 제보한 취약점입니다.

 

 이 취약점에 대한 분석은 함께 Gnuboard 1-Day 공부를 하고 있는 동아리 후배가 진행했습니다. 분석 내용은 아래 링크를 참고해주세요.

해당 취약점은 후배가 찾은게 아닌 다른분께서 찾아 제보한 취약점임을 밝힙니다.

https://blog.naver.com/jinik9903/221690934997

'Web Hacking > Gnuboard 1-Day' 카테고리의 다른 글

[Gnuboard 1-Day] KVE-2019-0828  (0) 2019.10.31
[Gnuboard 1-Day] KVE-2019-1198  (0) 2019.10.27
[Gnuboard 1-Day] 환경 구축  (0) 2019.10.27

※ 해당 포스트에 나온 취약점은 제가 찾은게 아닌 다른분이 제보한 취약점입니다.

 

 

https://github.com/gnuboard/gnuboard5/commit/3c55c4d60d6dcb5ead47d283dd06fe57aac7e73e

 

그누보드 Stored XSS 취약점(KVE-2019-1198) 수정 · gnuboard/gnuboard5@3c55c4d

Permalink Browse files 그누보드 Stored XSS 취약점(KVE-2019-1198) 수정 Loading branch information... Showing 1 changed file with 2 additions and 0 deletions. +2 −0 adm/qa_config_update.php @@ -50,6 +50,8 @@ $error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로

github.com

 

 최근 여러가지 일로 바쁘기에 가장 무난한 난이도인 XSS 취약점들부터 살펴보기로 했습니다. 그 첫 대상은 KVE-2019-1198 입니다. 파일 경로와 파일명에서 알 수 있듯이 관리자 페이지에 있는 질의응답 설정과 관련된 페이지에서 발생하는 취약점입니다. 

 수정된 소스코드를 확인해보면 POST 방식으로 전달 받은 qa_title 값을 strip_tags를 통해 태그를 벗겨내는 작업을 해줍니다. 그렇다는 것은 위의 패치가 있기 전까지는 태그들이 그대로 들어갔다는 뜻이니 qa_title을 이용해 XSS 공격이 가능할거라 예상할 수 있습니다. 일단 확인을 위해 위의 페이지가 정확히 어떤 메뉴에 해당되는지 찾아봅니다.

 

 

 찾아보니 FAQ나 질의응답 게시판 설정 페이지가 아닌 1:1 문의 설정 페이지였습니다. qa_title은 분명 저 타이틀 항목일테니 바로 간단한 스크립트를 넣고 설정을 저장합니다. 그 뒤 1:1 문의 바로가기를 클릭하거나 메인 페이지에서 1:1 문의를 클릭하면 아래와 같은 화면을 볼 수 있습니다.

 

 

 XSS라 그런지 굉장히 간단하게 끝났는데 일단 현재 쌓여있는 1-Day 분석이 다 끝난 뒤 패치된 내역들에 추가 취약점이 있는지 없는지 좀 더 연구해보는 방향으로 가야 좀 더 의미 있는 공부가 될것 같습니다. 난이도가 너무 쉬운거라 그런지 아니면 제 공부 방식이 잘못됐는지 모르겠지만 이대로는 얻어가는게 생각보다 많지는 않을것 같기도..

'Web Hacking > Gnuboard 1-Day' 카테고리의 다른 글

[Gnuboard 1-Day] KVE-2019-0828  (0) 2019.10.31
[Gnuboard 1-Day] KVE 2019-0050  (0) 2019.10.28
[Gnuboard 1-Day] 환경 구축  (0) 2019.10.27

 좀 더 실용적인 웹해킹 기술을 공부하고자 지인의 추천을 받아 시작하게 됐습니다. 오픈소스다보니 깃허브에 코드가 다 공개되어 있고 commit 리스트에 친절하게 'KVE-xxxx-xxxx 수정' 이런식으로 적혀져있기에 공부하기 매우 편리합니다. 워게임 풀이에 권태기(?)가 오신 분들이나 본격적인 버그 바운티 전에 유사 실전 경험을 쌓고 싶으신 분들이 있다면 아주 좋은 공부 방법이 될거라고 생각됩니다.

 

 환경 구축을 어떻게 할까 고민하다가 너무 구버전은 큰 도움이 되지 않을것 같아 대략 1년전 버전인 5.3.2.0 버전으로 진행하기로 했습니다. 혹시 깃허브에 익숙하지 않으신 분들이라면 그누보드 깃허브(https://github.com/gnuboard/gnuboard5)에 가서 releases 라는 항목으로 이동하시면 버전별 압축파일을 다운로드 받으실 수 있으니 참고바랍니다.

 버전을 정한 뒤 로컬에서 구축해서 공부를 할지 이전 FIDO 드론 프로젝트를 진행할때 만든 LightSail 서버를 이용할지 고민하다가 로컬 서버 보단 외부 서버가 언제 어디서든 접근할 수 있다는 점에서 매우 유용할거라고 판단해서 LightSail에 올렸습니다. LightSail에는 우분투 16.04가 올라가 있는 상태.

 일단 그누보드에 필요한 환경 구축을 진행하고 (PHP, Apache, Mysql 등) LightSail 방화벽 설정을 마친 뒤 그누보드 5.3.2.0 압축파일을 해제하고 설치 절차에 따라 설치를 마친 뒤 접속을 해보니 매우 깔-끔 하게 잘 동작했습니다. 그 뒤엔 KVE 관련 커밋 내용들을 찾아보며 하나하나 테스트 하는 형식으로 진행했습니다.

 자세한 구축 방법은 추후 수정을 통해 업데이트 하기로하겠습니다. 그리고 공부하며 알게된 내용들도 포스팅하도록 하겠습니다. :)

'Web Hacking > Gnuboard 1-Day' 카테고리의 다른 글

[Gnuboard 1-Day] KVE-2019-0828  (0) 2019.10.31
[Gnuboard 1-Day] KVE 2019-0050  (0) 2019.10.28
[Gnuboard 1-Day] KVE-2019-1198  (0) 2019.10.27

+ Recent posts