리얼월드 (Real world)/CMS

재밌는 그누보드 RXSS

2021. 1. 10. 18:20

겨울 느낌 살짝 나는 출근길 🎄

 

0. 개요

 회사에서 사이드프로젝트 느낌으로 오픈소스 CMS 분석을 하고 있다. 고등학교 1학년 때부터 그누보드를 취약점 분석해보겠다고 말만 하다가 처음으로 진지하게 분석해보고 있는데, 생각보다 취약점을 쉽게 찾을 수 있었다. 거의 RXSS이긴 했지만 그래도 취약점은 취약점이니깐 🤭 ㅎ 

 

1. 취약점 분석 🎮

 그누보드만의 특징이라고 하면 이것을 빼놓을 수 없다. 아래는 그누보드를 한번이라도 분석해 본 사람이라면 알 common.php 의 코드이다.

 

 

common.php는 거의 모든 파일에서 include 되어 실행되며, extract() 함수를 사용하여 사용자로부터 변수를 입력받는다. 이 점 덕분에 변수를 편하게 사용할 수 있다는 점이 장점이지만, 보안 취약점에 노출된다는 큰 단점이 생긴다. $_GET과 $_POST, $_SERVER의 모든 원소에 map()을 이용하여 SQL Escape를 하여 대부분의 SQL Injection을 막을 수 있겠으나 XSS에는 굉장히 취약하다. 

 

위 코드는 좀 어이없었던 취약점이다. 위 코드는 여기서 볼 수 있다. 사진에서 보다시피 $readonly 를 잘못 입력해 $reaonly 로 작성되어있던 코드이다. extract() 함수의 사용으로 사용자가 임의의 변수를 생성할 수 있다는 점을 이용하면 RXSS도 손 쉽게 가능해진다.

 

2. 공격 🏹

[*] Proof of Concept : http://GNUBOARD_URL/adm/board_form.php?w=3&reaonly=asdf"><img+src=x+onerror+=alert(document.domain)>

 

 

3. 마무으리 🛠

 이슈 등록 -> 해결 -> 끄읏

 

 

github.com/gnuboard/gnuboard5/issues/69

 

 

 

'리얼월드 (Real world) > CMS' 카테고리의 다른 글

재밌는 그누보드 RXSS  (0) 2021.01.10