홈페이지 취약점 분석 이야기 파일 지도 사진 깨알






>> 목록보이기
#FCKeditor #웹에디터 #자동화 공격도구 #공격로그 #로그분석 #침해사고 조사 #ASP 웹쉘 #A1-Injection #A9-Using Components with Known Vulnerabilities

FCKeditor 대상 자동화 공격도구의 침해사고 사례

2015년 5월 30,31일 이틀동안 베트남 누리집 1천여개와 필리핀 누리집 2백여개가 위변조 공격을 당했다고 한다 - 당시에 중국과 베트남이 정치적으로 관계가 악화된 상황이었다고 한다. 1937cn이라는 중국 해킹그룹의 소행으로 알려졌다. 이 공격에는 WebDAV 취약점과 FCKeditor 취약점이 이용되었다고 한다.

[ 관련기사 ]

FCKeditor는 Frederico Caldeira Knabben이 자신의 이름을 따서 2003년에 만든 공개용 웹에디터(Web Editor)이다. 웹 상에서 WYSIWYG 편집 기능을 제공하며 기능이 매우 풍부해서 전세계적으로 큰 인기를 끌었다. 2012년에는 기능 전체를 개편하여 CKEditor라는 이름으로 배포하고 있다 - CKeditor에서는 FCKeditor의 취약점을 모두 보완하여 상당히 안전한 편이다. 공식적으로는 FCK가 영어의 비속어인 f*ck를 연상시켜서 이름을 바꿨다고 한다. 하지만 - 개인적인 생각이지만 - 취약함의 대명사인 FCKeditor라는 이름을 버리기 위한 방편이었을 가능성이 크다.

FCKeditor는 공개용으로 배포되었기 때문에 소스 분석이 가능했고 초기 버전에서 파일업로드 취약점과 경로조작 취약점 등이 발견되었다. 2000년대 중반 이후로 벌써 10년을 훌쩍 넘겨서 전세계적으로 공격이 진행중인 대표적인 웹 에디터이다. 국내에서도 다수의 웹서버가 FCKeditor 취약점 때문에 아직도 공격을 당하고 있다.

FCKeditor 취약점에 대해서는 Piolink의 2009년도 보고서가 잘 정리하고 있다.

보고서를 참조하기 바란다. 현재는 대부분의 공격이 웹쉘 업로드에 집중된 것으로 보인다. 다음 그림들은 FCKeditor를 설치했을 때 기본적으로 접속할 수 있는 예제 페이지들과 서버열람(Server Browse) 기능이다.

FCKEditor upload/test.html
[ FCKeditor의 이미지 업로드 시험 페이지 ]

FCKEditor Server Browser 기능
[ FCKeditor의 업로드 디렉토리 열람 기능에 대한 직접 접근 ]

FCKEditor upload/test.html
[ FCKeditor의 이미지 업로드 시험 페이지 ]

FCKEditor Browse Server
[ FCKeditor의 업로드 기능에서 접속한 웹서버 디렉토리 열람 기능 (Browse Server) ]

마지막 그림을 보면 이 서버는 이미 다수의 공격을 당하고 있다는 것을 파악할 수 있다. FCKeditor의 배포가 2012년에 중단되었음에도 불구하고 공격은 아직도 진행형이다.

FCKeditor에 의한 윈도우 웹서버 침해사고 사례

2015년 10월 말에 국내 한 웹서버에서 ASP 웹쉘이 발견되었다. MS 윈도우 서버였으며 ASP 기반 누리집을 운영중이었다. 웹쉘이 발견된 경로는 C:\Inetpub\wwwroot\userFiles\werfg(1).asp이었다. 이 경로를 바탕으로 IIS 접속로그를 분석한 결과 10월 초부터 공격이 있었다는 것을 파악할 수 있었다 (공격자의 전체 접속 로그 (fckeditor-auto-attack.log) 참조).

다음은 공격자가 최초로 ASP 파일 업로드에 성공했을 때 까지의 IIS 접속 로그이다. 피해 서버의 IP주소는 xxx로 처리하였다.

2015-10-04 07:12:05 W3SVC243283702 xxx.xxx.xx.xxx GET /fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/5.0+(Windows;+U;+Windows+NT+5.1)+Gecko/20070309+Firefox/2.0.0.3 404 0 3
2015-10-04 07:12:05 W3SVC243283702 xxx.xxx.xx.xxx GET /admin/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+Win64;+x64;+Trident/4.0) 404 0 3
2015-10-04 07:12:06 W3SVC243283702 xxx.xxx.xx.xxx GET /admin/js/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+en-US;+rv:1.8.1.12)+Gecko/20080219+Firefox/2.0.0.12+Navigator/9.0.0.6 404 0 3
2015-10-04 07:12:06 W3SVC243283702 xxx.xxx.xx.xxx GET /admin/templates/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+WOW64;+Trident/4.0) 404 0 3
2015-10-04 07:12:11 W3SVC243283702 xxx.xxx.xx.xxx GET /app/common/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.0;+Trident/4.0) 404 0 3
2015-10-04 07:12:23 W3SVC243283702 xxx.xxx.xx.xxx GET /app/webroot/js/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/5.0+(iPhone;+U;+CPU+like+Mac+OS+X)+AppleWebKit/420.1+(KHTML,+like+Gecko)+Version/3.0+Mobile/4A93+Safari/419.3 404 0 3
2015-10-04 07:12:23 W3SVC243283702 xxx.xxx.xx.xxx GET /application/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.0;+Trident/4.0) 404 0 3
2015-10-04 07:12:23 W3SVC243283702 xxx.xxx.xx.xxx GET /data/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+Win64;+x64;+Trident/4.0) 404 0 3
2015-10-04 07:12:36 W3SVC243283702 xxx.xxx.xx.xxx GET /html/js/editor/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) 404 0 3
2015-10-04 07:12:44 W3SVC243283702 xxx.xxx.xx.xxx GET /include/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 IE8+on+Windows+Vista 404 0 3
2015-10-04 07:12:44 W3SVC243283702 xxx.xxx.xx.xxx GET /includes/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 IE8+on+Windows+7 404 0 3
2015-10-04 07:12:44 W3SVC243283702 xxx.xxx.xx.xxx GET /js/fckeditor/editor/dialog/fck_about.html - 80 - 118.193.199.221 Opera/8.0+(Macintosh;+PPC+Mac+OS+X;+U;+en) 200 0 0
2015-10-04 14:59:54 W3SVC243283702 xxx.xxx.xx.xxx GET /js/fckeditor/editor/filemanager/upload/php/upload.php - 80 - 118.193.199.221 Mozilla/5.0+(Windows;+U;+Windows+NT+5.2)+AppleWebKit/525.13+(KHTML,+like+Gecko)+Version/3.1+Safari/525.13 404 0 3
2015-10-04 14:59:55 W3SVC243283702 xxx.xxx.xx.xxx GET /js/fckeditor/editor/filemanager/connectors/php/upload.php - 80 - 118.193.199.221 Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+en-US;+rv:1.8.1.12)+Gecko/20080219+Firefox/2.0.0.12+Navigator/9.0.0.6 404 3 50
2015-10-04 14:59:55 W3SVC243283702 xxx.xxx.xx.xxx GET /js/fckeditor/editor/filemanager/upload/asp/upload.asp - 80 - 118.193.199.221 Mozilla/5.0+(Windows;+U;+Windows+NT+5.1)+Gecko/20070803+Firefox/1.5.0.12 404 0 3
2015-10-04 14:59:55 W3SVC243283702 xxx.xxx.xx.xxx GET /js/fckeditor/editor/filemanager/connectors/asp/upload.asp - 80 - 118.193.199.221 Opera/8.0+(Macintosh;+PPC+Mac+OS+X;+U;+en) 200 0 0
2015-10-04 14:59:56 W3SVC243283702 xxx.xxx.xx.xxx GET /js/fckeditor/editor/filemanager/upload/aspx/upload.aspx - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+NT) 404 0 0
2015-10-04 14:59:56 W3SVC243283702 xxx.xxx.xx.xxx GET /js/fckeditor/editor/filemanager/connectors/aspx/upload.aspx - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.0;+Trident/4.0) 404 0 0
2015-10-05 01:51:02 W3SVC243283702 xxx.xxx.xx.xxx POST /js/fckeditor/editor/filemanager/connectors/asp/upload.asp time=1405939438707&CurrentFolder=/ 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon) 200 0 0
2015-10-05 01:51:02 W3SVC243283702 xxx.xxx.xx.xxx POST /js/fckeditor/editor/filemanager/connectors/asp/upload.asp time=1405939438707&CurrentFolder=/ 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon) 200 0 0
2015-10-05 01:51:03 W3SVC243283702 xxx.xxx.xx.xxx GET /userFiles/wefgvfcd(1).asp - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.0;+Trident/4.0) 200 0 0

공격자 IP 주소(118.193.199.221)는 중국 상하이에 위치한 것으로 나온다 (www.iplocation.net 참조). 2015-10-04 07:12:05에 최초로 접속했으며 다수의 스캔을 통해 39초 후인 2015-10-04 07:12:44에 FCKeditor의 위치를 파악한다. 그리고 다시 11초 후인 2015-10-04 14:59:55에 이미지 업로드 기능의 위치(upload.asp)를 파악한다.

약 11시간 후인 2015-10-05 01:51:02에 POST 방식으로 파일을 업로드하였고 1초 후에 웹쉘로 추정되는 ASP 파일(/userFiles/wefgvfcd(1).asp)에 접근하였다. 하지만 이후로도 이 웹쉘 파일에 대한 접속 기록은 없었다.

재미있는 점은 동일한 IP주소에서 빠르게 접속하면서 User-Agent 문자열이 계속 바뀐다는 점이다. 사람이 수작업으로 접속한 것이 아니라 자동화 공격툴을 이용한 것으로 추정되는 부분이다.

시스템 운영자가 이상한 ASP 파일을 탐지한 것이 10월 28일이었다. 로그를 분석한 결과 이후에도 동일한 방식으로 4번의 공격이 있었다. 첫번째를 포함한 총 5번의 공격을 간추리면 다음과 같다.

2015-10-05 01:51:02 W3SVC243283702 xxx.xxx.xx.xxx POST /js/fckeditor/editor/filemanager/connectors/asp/upload.asp time=1405939438707&CurrentFolder=/ 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon) 200 0 0
2015-10-05 01:51:03 W3SVC243283702 xxx.xxx.xx.xxx GET /userFiles/wefgvfcd(1).asp - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.0;+Trident/4.0) 200 0 0

2015-10-09 11:50:30 W3SVC243283702 xxx.xxx.xx.xxx POST /js/fckeditor/editor/filemanager/connectors/asp/upload.asp time=1405939438707&CurrentFolder=/ 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon) 200 0 0
2015-10-09 11:50:31 W3SVC243283702 xxx.xxx.xx.xxx GET /userFiles/sadc(1).asp - 80 - 118.193.199.221 Opera/9.27+(Windows+NT+5.2;+U;+zh-cn) 200 0 0

2015-10-14 02:15:24 W3SVC243283702 xxx.xxx.xx.xxx POST /js/fckeditor/editor/filemanager/connectors/asp/upload.asp time=1405939438707&CurrentFolder=/ 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon) 200 0 0
2015-10-14 02:15:24 W3SVC243283702 xxx.xxx.xx.xxx GET /userFiles/qdsd(1).asp - 80 - 118.193.199.221 IE8+on+Windows+Vista 200 0 0

2015-10-26 02:02:03 W3SVC243283702 xxx.xxx.xx.xxx POST /js/fckeditor/editor/filemanager/connectors/asp/upload.asp time=1405939438707&CurrentFolder=/ 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon) 200 0 0
2015-10-26 02:02:03 W3SVC243283702 xxx.xxx.xx.xxx GET /userFiles/e2rr(1).asp - 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.2) 200 0 0

2015-10-27 02:03:15 W3SVC243283702 xxx.xxx.xx.xxx POST /js/fckeditor/editor/filemanager/connectors/asp/upload.asp time=1405939438707&CurrentFolder=/ 80 - 118.193.199.221 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon) 200 0 0
2015-10-27 02:03:16 W3SVC243283702 xxx.xxx.xx.xxx GET /userFiles/werfg(1).asp - 80 - 118.193.199.221 Mozilla/5.0+(Windows;+U;+Windows+NT+5.2)+Gecko/2008070208+Firefox/3.0.1 200 0 0

접속 유형은 첫번째 공격과 유사하다. FCKeditor의 파일 업로드 기능(upload.asp)을 찾아서 POST 방식으로 파일을 올리고 올려진 파일을 접속하여 제대로 올라간 것 까지 확인하는 것으로 보인다.

웹서버 로그를 분석하기 위해 현장에 도착했을 때는 이미 운영자가 /userFiles/ 디렉토리 내에 업로드된 ASP 파일을 - wefgvfcd(1).asp, sadc(1).asp, qdsd(1).asp, e2rr(1).asp, werfg(1).asp - 모두 지운 상태였다. 때문에 ASP 파일의 기능을 파악하지는 못하였다.

마무리

공격자가 사용한 자동화 공격도구에는 피해서버 관리 부분에서 버그가 있는 것으로 보인다. 이미 ASP 파일 업로드에 성공하고도 4번을 더 공격한 점이 이런 추정을 가능하게 한다. 그리고 ASP 파일을 업로드한 이후에는 더 이상 해당 ASP 파일을 접근하지 않았다. 단 1회만 접근하였다. 이는 관리 부분의 버그 때문일 수도 있고 공격자가 봇넷(botnet)을 구성하는 과정이어서 아직 최종 공격이 시작되지 않아서일 수도 있다.

운영자가 ASP 파일을 미리 발견해서 매우 다행스러운 사례였다. 만약 이 사실을 미리 탐지하지 못했다면 피해 웹서버는 직접 공격을 당하거나 봇넷의 일원(좀비서버)이 되어 다른 공격에 악용되었을 가능성이 높다.

[처음 작성한 날: 2016.12.20]    [마지막으로 고친 날: 2016.12.21] 


< 이전 글 : DBMS Fingerprinting (데이터베이스 관리시스템 탐지) (2016.12.22)

> 다음 글 : 이중 서버스크립트 혼용을 이용한 웹방화벽/확장자검증 우회 (실제 사례) (2016.12.19)


크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.
잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다.
문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문