• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Можно ли такое раскрутить?

winitu

Member
03.08.2023
9
0
BIT
27
Добрый вечер форумчане, сканировал я значит Acunetix'oм сайтик и обнаружил уязвимость, payload:
Код:
1ÈÄ'"

Затем запрос кинул в SQLmap, указав уязвимый параметр. Параллельно начал пробовать крутить руками через burp.
GET запрос:
Код:
GET /search_result.php?keywords=*&listing_sort=price_asc HTTP/2
Начал проверять параметр keywords и выяснил, что если оставить его пустым или вписать значения (в URL кодировке, %):
\a
\b
\t
\n
\v
\f
\r
(
)
0x20 (пробел)
\

то ответ следующий:
Код:
HTTP/2 500 Internal Server Error
Server: nginx
Date: Wed, 08 Nov 2023 00:03:46 GMT
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding

<h1>Unexpected error occurred...</h1>SQL Error!
Unknown column 'final_price' in 'order clause'
Query: SELECT `products_id` FROM `products` WHERE `products_id` = 0 ORDER BY final_price, products_sort ASC
Безымянный.png


Я был почти уверен, что на сайте нет WAF, но не проверял. Решил это исправить и запустить dentYwaf и whatwaf, они подтвердили мои предположения.
Значит запросы просто фильтруются функцией или еще чем-то. Пошел проверять и выяснил, что что-то просто удаляет некоторые символы, из-за чего параметр принимает значение NULL и выдает 500.

Выяснил, что если в запросе отправить без кодировки символы:
&
+
(
)
\

то они тоже удаляются, хотя отправив "+" в форме %2b, сервер выдает 200. Еще удаляются or,and.
Интересно, что
() возвращает 500
(f) - 200
)( - 200
if - 200
if() - 500
if(f) - 500

Изначально думал сделать нагрузку типа: if(SUBSTRING(VERSION(),1,1)>CHAR(50),%c8,abc).
Но не могу пробиться, любой набор символов и () кидает на 500. Проблема тут скорее во мне, понимаю, но подскажите, что вы делаете в таких ситуациях?
Может поискать WAF другими инструментами? Или может есть подходящий тампер?
 
Мы в соцсетях:

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