본문 바로가기

IT/Security

제로보드 XE (1.2.1ver) 취약점

/* 
written by kaspy (kaspyx@gmail.com)
*/ 

 예전에 웹해킹 공부를 하면서 했던건데, 생각나서 블로깅 합니다. 현재 최신버전(1.7.x)에서는 작동하지는 않지만, 웹 해킹쪽을 공부하시는 분이있다면 조금이나마 도움이 되었으면 합니다.

 제로보드 eXpress Engine 버전도 php 관련 파일 업로드가 가능할 시에 웹쉘을 충분히 실행 시킬 수 있는 것을 개인적인 연구를 통해 확인할 수 있었습니다. 이 내용은 이미 취약점이 보고되어 패치 되었던 내용이지만 실제로 어떻게 구체적으로 웹쉘을 실행시키는지에 대해서는 나와 있지는 않습니다. 이 취약점 내역은 XE 1.2.1 버전이하 버전에서만 유효합니다.

 제로보드 XE 1.2.1에서 취약점이 발생하는 소스 코드 구간은 아래와 같습니다.
해당 파일: ./modules/file/file.controller.php

 위의 구간에서 preg_match() 함수에서 webshell.jpg.php.jpg 형태로 우회하여 업로드가 가능합니다../files/attach/images/ 폴더에 웹쉘을 올릴 수 있습니다.

 이중에 image 확장자중에 웹서버에서 해석을 못하는 확장자들이 있는데 그예가 moov나 rmm 확장자 들입니다. 해석을 못하는 확장자는 파일 형태 그대로 실행시켜 버리는데 그취약점을 이용해서 웹쉘을 실행 시킬수 있습니다.



 제로보드에서 글쓰기를 누르고 위에서처럼 웹쉘을 webshell2.moov.php.moov 형태로 올려서 본문삽입(본문 삽입시 절대 경로를 알 수 있습니다.) 글쓰기를 하고 소스 보기를 통해서 웹쉘이 있는 절대경로를 알수 있습니다.


 위의 화면은 실행된 웹쉘의 모습입니다. 실제로 위의 취약점이 보고되고 아래와 같이 파일 업로드시에 추가 필터링이 적용되었습니다.