CVE hunting tips/tricks

CVE hunting tips/tricks

Ik heb zelf nog geen CVE op mijn naam staan maar ben wel afgelopen weken bezig geweest met het vinden van een CVE, toch wil ik beschrijven hoe ik het doe en welke stappen ik volg en welke tools er zijn om erbij te kunnen helpen.

Aanpak

Ik zal nu in stappen beschrijven wat ik doe.

Stap 1. Ga naar https://sourceforge.net/

SourceForge is een website waar je allemaal open source applicaties kan vinden om deze vervolgens te kunnen testen.

Stap 2. Kies een applicatie uit en maak een VM (virtuele machine) en installeer de applicatie erop

Ik zelf maak altijd een lege VM voor een applicatie zodat ik goed kan testen en alleen de tools erop installeer die ik nodig heb voor de desbtreffende applicatie.

Stap 3. Zodra de applicatie is geinstalleerd begin ik meestal met iets simpels zoals een grep uit te voeren.

Grep is een commando in Linux systemen dat jouw kan helpen om naar bepaalde teksten of functies te zoeken. Hier een voorbeeld van een grep wat ik meestal gebruik:

grep -irn "serialize" . --color

Bovenstaande commando zoekt naar het woord serialize in de huidige directory en laat alles wat overeen komt met rood zien.

Nu zal ik een aantal programmeertalen benoemen en welke tooling hiervoor beschikbaar is.

PHP

Voor PHP gebruik ik zelf eigenlijk geen tools, vaak installeer ik de applicatie en maak ik gebruik van grep commando om door de code heen te zoeken naar bepaalde functies die interessant zijn om verder te onderzoeken.

Wel maak ik gebruik van visual studio code om de code beter te kunnen bekijken zodra ik iets interessants heb gevonden. Wat altijd handig is om te doen indien je zeker wilt zijn van een bepaalde waarde is om de variable gewoon te printen en om op deze manier te debuggen.

Zoektermen

Een aantal termen waar gezocht naar kan worden in php is het volgende:

  • Exec_shell
  • Exec
  • system
  • popen
  • create_function
  • require
  • move_uploaded_file
  • unserialize
  • serialize
  • SELECT
  • FROM
  • WHERE
  • eval

.NET Csharp

.NET applicaties maak ik meestal gebruik van een tool genaamd ‘DnsSpy’, deze tool werkt erg fijn en maakt het makkelijk om een .net applicatie te kunnen debuggen. Ook kan je met DnSpy makkelijk door de code heen navigeren en indien een functie word opgeroepen in een klass kan je met een klik op de knop de functie volgen. DnsSpy kan gedownload worden vanaf de volgende link:

https://github.com/0xd4d/dnSpy

Zoektermen

Een aantal zoektermen voor .NET applicaties:

  • SELECT
  • FROM
  • WHERE
  • TypeNameHandling
  • JavaScriptTypeResolver
  • DataContractJsonSerializer

Blackbox:

  • TypeObject
  • $type

Java

Java is altijd lastig om te onderzoeken, meestal maak ik gebruik van jd-gui. jd-gui is een tool die jar bestanden kan decompileren om vervolgens deze op te kunnen slaan als java bestanden. Waarna jij als volgt door deze java bestanden heen kan navigeren met bijvoorbeeld notepad++, sublime text editor of visual studio code. Maar soms maak ik ook gebruik van een andere tool genaamd recaf.

Recaf is vergelijkbaar met jd-gui alleen kan jij met recaf gelijk aanpassingen maken aan de code en deze exporteren naar een jar bestand. En soms maak ik gebruik van IntellIJ of Eclipse om een applicatie te kunnen debuggen, hoewel dit wel een aantal stappen vereist om het voor elkaar te kunnen krijgen.

http://java-decompiler.github.io/ (jd-gui)

https://github.com/Col-E/Recaf (recaf)

Zoektermen

In java zoek ik naar de volgende termen:

  • XMLDecoder
  • Xstream
  • ObjectInputStream
  • Serialize
  • Deserialize
  • SELECT
  • FROM
  • WHERE
  • Serializable
  • readObject
  • readResolve
  • Content-Type header bevat het volgende application/x-java-serialized-object (blackbox benadering)

Magic bytes

Bij het bekijken naar de applicatie vanuit de blackbox kant is het vaak handig om kennis te hebben van de zogenoemde magic bytes. Dit zijn bytes die makkelijk te herkennen zijn in bepaalde cookie waardens of parameter waardens. Als er gebruik wordt gemaakt van deze magic bytes weet je zeker dat er gebruik wordt gemaakt van serialization en kan je ook gerichter zoeken.

Voor java zijn de volgende magic bytes:

  • AC ED 00 05
  • ro0

Voor .Net zijn er de volgende magic bytes:

  • AAEAAAD/////

Bronnen

Ik doe dit meestal samen met een goede vriend, dankzij hem heb ik ook veel geleerd en leer ik elke dag nieuwe dingen zodra ik met hem bezig ben met het hunten van een CVE. Zijn blog is te vinden op onderstaand adres.

https://stark0de.com/

Please share and spread
5 5 stemmen
Artikelbeoordeling
Abonneer
Laat het weten als er
guest
0 Reacties
Inline feedbacks
Bekijk alle reacties
NederlandsEnglish
0
Zou graag je gedachten willen weten, s.v.p. laat een reactie achter.x
()
x