Cyber Anakins Lightsaber - A Minishell-based backdoor
<?php
require("design.php");
session_start();
TOP(-1);
if (isset($_GET['ok']))
{
MAINCOLUMN();
?>
<h1 style='align:center'>Мои регистрационные данные</h1>
<center><br><br>Ваши регистрационные данные сохранены.</center>
<script>
setInterval(function()
{
<?php if (isset($_SESSION['adminFilial']) && $_SESSION['adminFilial']!=-1) { ?>
location = "filial.php?filial=<?php print $_SESSION['adminFilial']; ?>";
<?php
} else {
?>
location = "/";
<?php } ?>
},2500);
</script>
<?php
BOTTOM();
exit(0);
}
$mysql = mysqlopen();
MAINCOLUMN();
?>
<h1>Мои регистрационные данные</h1>
<?php
function _BOOL_($y)
{
if ($y) print "<font color=green>ДА</font>"; else print "нет";
}
if (isset($_GET['pin']))
{
$ok = false;
$pin = mysqli_escape_string($mysql, $_GET['pin']);
if ($pin != '')
{
$result = mysqli_query($mysql, "SELECT `id`,`email`,`name`,`rights`,`login`,`password`,`filial` FROM libAdmins WHERE `invateCode`='$pin' AND DATE_ADD(`invateCodeDate`, INTERVAL 72 HOUR) > NOW() LIMIT 1");
if (mysqli_errno($mysql)) die("ERROR: ".mysqli_error($mysql)." at line ".__LINE__." of file ".__FILE__."\n");
if (!($row = mysqli_fetch_assoc($result)))
{
print "<center><br><br><br><b>Ваша ссылка на приглашение более недействительна!</b><br><br>Запросите приглашение заново или авторизуйтесь на сайте (ссылка на вход в нижней части сайта).</center>";
BOTTOM();
exit(0);
}
}
}
else
{
if (!isset($_SESSION['admin']) || $_SESSION['admin']==0)
{
print "<center><br><br><br>ДОСТУП ЗАКРЫТ!</center>";
BOTTOM();
exit(0);
}
$id = intval($_SESSION['admin']);
$result = mysqli_query($mysql, "SELECT `id`,`email`,`name`,`rights`,`login`,`password`,`filial` FROM libAdmins WHERE `id`=$id");
if (mysqli_errno($mysql)) die("ERROR: ".mysqli_error($mysql)." at line ".__LINE__." of file ".__FILE__."\n");
if (!($row = mysqli_fetch_assoc($result)))
{
$_SESSION['admin'] = 0;
print "<center><br><br><br>ДОСТУП ЗАКРЫТ!</center>";
BOTTOM();
exit(0);
}
}
?>
<center>
<table width=600 cellspacing=0 cellpadding=20>
<tr><td style='border-radius:16px; border:2px solid #99aacc; background-color:#f5f5f5'>
<form name=main onsubmit='doSubmit(this, event); return false'>
<table width=100% cellpadding=3>
<tr>
<td width=1% nowrap required align=right>Ваши фамилия, имя и отчество:</td>
<td width=99%><input style='width:100%' type=text name=name value="<?php print _input_($row['name']); ?>"></td>
</tr>
<tr>
<td width=1% nowrap required align=right>Филиал:</td>
<td width=99%><?php print $GLOBALS['filials'][$row['filial']]; ?></td>
</tr>
<tr>
<td width=1% nowrap required align=right>e-mail:</td>
<td><input type=email style='width:100%' name=email value="<?php print _input_($row['email']); ?>"></td>
</tr>
<tr>
<td width=1% nowrap required align=right>Логин:</td>
<td><input type=text style='width:100%' name=login value="<?php print _input_($row['login']); ?>"></td>
</tr>
<tr>
<td width=1% nowrap required align=right>Пароль:</td>
<td><input type=password style='width:100%' oninput='onPasswordInput(this)' name=password value="<?php if ($row['password']!='') print FAKE_PASSWORD; ?>"></td>
</tr>
<tr>
<td></td>
<td style='font-size:12px;text-align:center' id=passwordInfo></td>
</tr>
<tr>
<td width=1% nowrap align=right>Пароль ещё раз:</td>
<td><input type=password style='width:100%' name=password2 oninput='onPasswordInput2(this)' value="<?php if ($row['password']!='') print FAKE_PASSWORD; ?>"></td>
</tr>
<tr>
<td></td>
<td style='font-size:12px;text-align:center' id=passwordInfo2></td>
</tr>
</table>
<center><br><input type=submit style='padding:5 10 5 10' id=submitBtn value='Применить'></center>
</form>
<b>Ваши права:</b>
<table>
<tr>
<td nowrap align=right>Правка всех событий:</td>
<td><?php _BOOL_(intval($row['rights']) & RIGHT_EDIT_EVENTS); ?></tD>
</tr>
<tr>
<td nowrap align=right>Правка новостей своего филиала:</td>
<td><?php _BOOL_(intval($row['rights']) & RIGHT_EDIT_NEWS); ?></tD>
</tr>
<tr>
<td nowrap align=right>Правка часто задаваемых вопросов:</td>
<td><?php _BOOL_(intval($row['rights']) & RIGHT_EDIT_FAQ); ?></tD>
</tr>
<tr>
<td nowrap align=right>Правка видеотрансляций:</td>
<td><?php _BOOL_(intval($row['rights']) & RIGHT_EDIT_VIDEO); ?></tD>
</tr>
<tr>
<td nowrap align=right>Правка расписания своего филиала:</td>
<td><?php _BOOL_(intval($row['rights']) & RIGHT_EDIT_PROGRAMS); ?></tD>
</tr>
<tr>
<td nowrap align=right>Администрирование форума:</td>
<td><?php _BOOL_(intval($row['rights']) & RIGHT_ADMIN_FORUM); ?></tD>
</tr>
<tr>
<td nowrap align=right>Правка архива викторин:</td>
<td><?php _BOOL_(intval($row['rights']) & RIGHT_EDIT_QUIZ); ?></tD>
</tr>
<tr>
<td nowrap align=right>Супер администратор:</td>
<td><?php _BOOL_(intval($row['rights']) & RIGHT_SUPER_ADMIN); ?></tD>
</tr>
</table>
</td></tr></table>
</center>
<script>
function checkPassword(pass)
{
if (pass=='') return 'Задайте пароль';
if (pass.length < 8) return 'Слишком короткий пароль';
if (pass == "12345678" ||
pass == "123456789" ||
pass == "1234567890" ||
pass == "1234567890-" ||
pass == "1234567890-=" ||
pass == "qwertyui" ||
pass == "qwertyuio" ||
pass == "qwertyuiop" ||
pass == "qwertyuiop[" ||
pass == "qwertyuiop[]" ||
pass == "asdfghjk" ||
pass == "asdfghjkl" ||
pass == "asdfghjkl;" ||
pass == "asdfghjkl;'" ||
pass == "zxcvbnm," ||
pass == "zxcvbnm,." ||
pass == "zxcvbnm,./") return "Слишком тривиальный пароль";
if (pass.match(/[А-Яа-яЁё]/)) return "Русские буквы в пароле";
return "";
}
function onPasswordInput2(editor)
{
var pass = editor.value;
var td = document.getElementById('passwordInfo2');
if (pass=='') td.innerHTML = '';
else
if (pass!=document.forms['main'].elements['password'].value)
{
td.style.color="red";
td.innerHTML="Пароли не совпадают";
}
else
{
td.style.color="green";
td.innerHTML="Пароли совпадают";
}
}
function onPasswordInput(editor)
{
var pass = editor.value;
var td = document.getElementById('passwordInfo');
var editor2=document.forms['main'].elements['password2'];
editor2.value='';
onPasswordInput2(editor2);
var s = checkPassword(pass);
if (s!="")
{
td.style.color="red";
td.innerHTML = s;
}
else
{
td.style.color="green";
td.innerHTML = "Хороший пароль";
}
}
function doSubmit(form, e)
{
if (e.preventDefault) e.preventDefault();
var name = form.elements['name'].value.trim();
if (name == '')
{
errorBox("Введите своё имя!",function() { form.elements['name'].focus(); });
return false;
}
var email = form.elements['email'].value.trim();
if (email == '')
{
errorBox("Введите свой e-mail!",function() { form.elements['email'].focus(); });
return false;
}
var login = form.elements['login'].value.trim();
if (login == '')
{
errorBox("Введите логин!",function() { form.elements['login'].focus(); });
return false;
}
var password = form.elements['password'].value;
if (password == '')
{
errorBox("Введите пароль!",function() { form.elements['password'].focus(); });
return false;
}
var s = checkPassword(password);
if (s!='')
{
errorBox(s+"!",function() { form.elements['password'].focus(); });
return false;
}
var password2 = form.elements['password2'].value;
if (password != password2)
{
errorBox("Пароли не совпадают!",function() { form.elements['password'].focus(); });
return false;
}
var post = "action=auth:update";
<?php
if (isset($_GET['pin'])) print "post+='&pin=".urlencode($_GET['pin'])."'";
else
print "post+='&id=".$_SESSION['admin']."'";
?>;
post+='&name='+encodeURIComponent(name);
post+='&email='+encodeURIComponent(email);
post+='&login='+encodeURIComponent(login);
post+='&password='+encodeURIComponent(password);
var submitBtn = document.getElementById('submitBtn');
submitBtn.disabled=true;
sendXHR('api.php',post,
function(response)
{
location='mypassport.php?ok=1';
},
function(error)
{
submitBtn.disabled=false;
errorBox(error);
});
}
</script>
<?php BOTTOM(); ?>
May the force be with you, always.