HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 23.05.2021, 17:21
Baskin-Robbins
Guest
Сообщений: n/a
Провел на форуме:
92829

Репутация: 212
По умолчанию

Сайт - get-simple.info

Версия 3.3.16 - Latest Stable Version.

Интернеты говорят вот так:

В админке имеем возможность редактирования шаблонов - php файлы.

Удаляем стопер, пишем phpinfo и у нас RCE)

Осталось теперь как-то попасть в эту самую админку.



Auth bypass или предсказываем значение rand()


Система использует xml файлы для хранения данных, скулей не увидим.

Посмотрим на то как проходит аутентификация.

admin/inc/login_functions.php

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if ( ([/COLOR][COLOR="#0000BB"]$userid[/COLOR][COLOR="#007700"]==[/COLOR][COLOR="#0000BB"]$USR[/COLOR][COLOR="#007700"]) && ([/COLOR][COLOR="#0000BB"]$password[/COLOR][COLOR="#007700"]==[/COLOR][COLOR="#0000BB"]$PASSWD[/COLOR][COLOR="#007700"]) ) {
[/
COLOR][COLOR="#0000BB"]$authenticated[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"];
[/
COLOR][/COLOR
Слабое сравнение(type jugling), но:

1) GetSimple использует sha1, брутить слишком много вариантов

2) Юзер == админ, поэтому их количество будет не большим)

3) Нужный юзер скорее всего имеет пароль отличный от необходимого нам диапозона

С одной стороны вроде как и нет баги. С другой, если мы заглянем на страницу

восстановления пароля, увидим, что этот процесс происходит таким образом:

1) Запрос на восстановление

2) Смена пароля

3) Отправка нового пароля на email

На email не отправляется линк на смену пароля, пароль меняется и отправляется на почту.

Отсюда можно решить 2 и 3 проблемы таким способом:

-- отправляем на аутентификацию всегда пароль, хэш которого 0e[0-9]{38} - например aaK1STfY

-- расстреливаем запросами на смену пароля

Но проблема слишком большого количества вариантов мешает получить сколько-нибудь

значимые результаты. Плюс ко всему, ситуация ослажняется вот этим:

admin/resetpassword.php

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]...
[/
COLOR][COLOR="#0000BB"]$randSleep[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]250000[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]2000000[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// random sleep for .25 to 2 seconds
[/COLOR][COLOR="#007700"]...
[/
COLOR][COLOR="#0000BB"]usleep[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$randSleep[/COLOR][COLOR="#007700"]);
...
[/
COLOR][/COLOR
Но раз в нашем случае мы можем поменять пароль, посмотрим что это за пароль и

как он генерируется:

admin/inc/template_functions.php

[PHP]
PHP:
[COLOR="#000000"]functioncreateRandomPassword() {
$chars="Ayz23mFGHBxPQefgnopRScdqrTU4CXYZabstuDEhijkIJKMNV Wvw56789";
srand((double)microtime()*1000000);
$i=0;
$pass='';
while (
$i[COLOR="#007700"]

А сколько их, этих начальных чисел? На nix(php-7.3) у меня выплюнул 2kkk результатов.

Т.е. два миллиарда полных вариантов пароля, а вот для win:

Но разрабы решили вписать свое число. Оно устанавливается функцией srand.

Что в ней происходит?

Из текущей метки времени Unix с микросекундами берутся именно микросекунды

и умножаются на 1кк - именно столько вариантов у нас для брута, микросекунды

float 0.XXXXXX, поэтому целочисленное значение у нас никогда не будет больше

одного миллиона.

Для атаки на потребуется лишь один раз запросить смену пароля, а потом

пробрутить наши 1 миллион паролей - дело 20 минут.

Генерируем список вариантов возможных паролей:

[PHP]
PHP:
[COLOR="#000000"]$chars="Ayz23mFGHBxPQefgnopRScdqrTU4CXYZabstuDEhijkIJKMNV Wvw56789";
for(
$i=0;$i[COLOR="#007700"]
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ