Статья GPT 4.0 помощник пентестера

Приветствую! Раз объявили конкурс статей, то почему бы не поучаствовать.
Специально для codeby.net
Автор: KnightPentest

GPT 4.0
Это очень полезная нейронка для пентестера. В этой статье я продемонстрирую, как ее можно использовать на периметре.

1715095934054.png

Анализируем исходники CMS
Наверное каждый из нас хоть раз пробовал взломать форум(во время ctf) на каком-нибудь популярном CMS(wordpress, joomla, etc.). Если нам доступны исходники форума/плагина/темы для форума, то мы можем их проанализировать и найти новую багу. Особенно, если движок непопулярный или плагин для форума, то вероятность крайне высокая, как минимум мы будем понимать есть ли смысл вообще пытаться подобрать уникальный ID или что-то в этом роде, иначе можно потерять кучу времени и уйти ни с чем. На самом деле я бы порекомендовал в первую очередь изучить движок форума vbulletion это максимально дырявый форум с огромной историей, есть кучу багов, которые находили комьюнити форума ачата. Даже максимально странные баги, когда пользователь мог зарегистрироваться от имени администратора, введя вместо буквы "a" условно Ⱥ из греческого алфавита/латинского(если я не ошибаюсь, т.к я помню, что удавалось зарегистрироваться под именем админа, но администрироваться нельзя было). Теперь перейдем к делу.
У меня для проведения пентеста есть форум на движке IP BOARD. Первое что я сделаю - это зарегистрируюсь...

1715098726684.png



Приходит подтверждение почты


1715099190396.png



Меня в первую очередь заинтересовала эта активация из-за текста в сообщении:

Подтверждение регистрации производится один раз и необходимо для повышения безопасности форума и защиты его от злоумышленников.
Так и намекает, чтобы мы проверили насколько это безопасно. В целом не очень хорошо, что ID пользователя всем подряд отображается, злоумышленники понимают уже, что более 30 тысяч юзеров есть в бд, т.к после каждой регистрации uid увеличивается на 1. Если юзеров много, то злоумышленник будет готов потратить больше времени на получения конфиденциальных данных (емейлов, паролей, документов). Первое, что сделал - это начал гуглить ip board скачать русификатор.

1715099498342.png



После того, как были найдены исходники мне нужно было понять из чего формируется aid (секретный ключ, который необходим для подтверждения почты или сброса пароля). Если бы мы смогли его генерировать или подбирать, то смогли бы и захватить учетную запись администратора. В исходниках 100% есть строки в которых есть "aid" вот их и нужно найти. Воспользуемся утилитой grep.

Bash:
grep -rl "\baid\b" //media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus
Получаем output в каких файлах есть "aid"
Bash:
output
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/api/forums/api_topic_view.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/core/extensions/usercpForms.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/core/modules_public/global/lostpass.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/core/modules_public/global/register.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/core/xml/core_mobile_templates.xml
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/core/xml/core_root_templates.xml
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/core/xml/core_xmlskin_templates.xml
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/forums/modules_public/extras/stats.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/forums/xml/forums_mobile_templates.xml
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/forums/xml/forums_root_templates.xml
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/forums/xml/forums_xmlskin_templates.xml
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/applications/members/sources/adminManage.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/admin/setup/sources/base/setup.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/ips_kernel/facebook-client/facebookapi_php5_restlib.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/ips_kernel/sabre/Sabre/DAV/Directory.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/ips_kernel/sabre/Sabre/DAV/File.php
//media/sf_Telegram_Desktop/IP.Board.v3.4.5_Nulled_Rus/upload/ips_kernel/sabre/Sabre/DAV/Node.php
На глаз уже видно, что исходники скорее всего лежат в /upload/admin/applications/core/modules_public/global/register.php или /upload/admin/applications/members/sources/adminManage.php но т.к мы не владеем php передадим все это дело в консольного GPT. Пусть он проанализирует и скажет как формирутеся aid.

1715100043038.png



Далее он ищет уже в файлах конкретно строки в которых есть "aid"


1715100087908.png



И он приходит к выводу, что aid создается через файл register.php и скидывает кусок исходного кода


1715100185244.png



aid - это всего-лишь url параметр, который состоит из $validate_key. Теперь просим его узнать как создается validate_key


1715100349250.png


PHP:
$validate_key = md5( IPSMember::makePassword() . time() );
Теперь мы знаем из чего состоит validate_key то есть aid. Из функции makePassword() и time().
time — Возвращает текущую метку системного времени Unix, 10 символов. 10 лярдов комбинаций, чтобы подобрать это число... Уже можно понять, что aid бессмысленно брутфорсить. Чтобы узнать подробнее про функцию makePassword() отправимся в github
тут исходный код функции.
PHP:
<?php

$key = md5( IPSMember::makePassword() . uniqid( mt_rand(), TRUE ) );

public static function makePassword() {
        $pass = "";
       
        $unique_id      = uniqid( mt_rand(), TRUE );
        $prefix         = IPSMember::generatePasswordSalt();
        $unique_id .= md5( $prefix );

        usleep( mt_rand(15000,1000000) );
       
        $new_uniqueid = uniqid( mt_rand(), TRUE );

        $final_rand = md5( $unique_id . $new_uniqueid );

        for ($i = 0; $i < 15; $i++) {
                $pass .= $final_rand{ mt_rand(0, 31) };
        }
        return $pass;
}
Делаем вывод, что секретный ключ не сбрутить. А GPT нам ускорил процесс поиска нужных функций в коде php.
Поиск POC/CVE через GPT
1715101950126.png


Если вам нужен более точный ответ, то лучше задавайте вопрос на английском.

1715102115440.png


Дальше можно легко перевести на русский язык. Чувствуете разницу?

1715102410652.png


На ютубе есть обзор

Я повторил и получилось найти скулю, получить название бд

1715102595321.png


Все версии <= 3.4.7 оказались уязвимыми.

1715102880330.png


Сохраняйте журналы/статьи делайте из них конспекты

1715111449405.png


1715111481898.png


Создавайте схемы с помощью GPT
1715112208873.png


1715112476216.png


1715112694204.png


1715113331904.png


Вывод
Это лишь некоторые примеры, которые должны вам помочь. Надеюсь вы что-то подчеркнули для себя:)
 

Вложения

  • 1715100380857.png
    1715100380857.png
    104,9 КБ · Просмотры: 87
  • 1715100601658.png
    1715100601658.png
    5,7 КБ · Просмотры: 91
Последнее редактирование:
Неплохой материал. Какую оболочку использовал для общения с GPT 4.0? Я так понимаю это по api от openai?
 
Кстати, в дополнение GPT 4.0 в связке с openinterpreter может помочь найти copyright, где он формируется и удалить его будет гораздо проще.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!