One Article Review

Accueil - L'article:
Source Blog.webp SkullSecurity
Identifiant 8349778
Date de publication 2023-06-27 16:14:05 (vue: 2023-06-27 17:05:57)
Titre Comment faire: inverser et déboguer les modules ISAPI
How-to: Reversing and debugging ISAPI modules
Texte Récemment, j'ai eu le privilège de Écrivez une analyse détaillée de CVE-2023-34362 , qui est une série de plusieurs vulnérabilités dans le transfert de fichiers Moveit application qui mène à l'exécution du code distant.L'un des nombreux Les vulnérabilités impliquaient un module ISAPI - en particulier, le moveItapi.dll Extension ISAPI.L'une des nombreuses vulnérabilités qui comprenaient le mouvement RCE était un problème d'injection d'en-tête, où les en-têtes analysés de la demande ISAPI différemment de l'application .NET.Ce point va creuser dans la façon de Analyser et insensier un service basé sur ISAPI! ce n'était pas la première fois du passé récent, je devais travailler sur quelque chose écrit comme un module Isapi, et chaque fois que je me sens comme je dois commencer plus et rappelez-vous comment il est censé fonctionner.Cette fois, je pensais que je combinerais Mes notes à la fermeture avec une Google, et essayez d'écrire quelque chose que je (et autres) peuvent utiliser à l'avenir.En tant que tel, ce sera une intro rapide à Applications ISAPI sous l'angle qui compte pour moi - comment insensé ingénieur et les déboguer! Je veux préfacer ceci: je ne suis pas un développeur Windows, et je n'ai jamais exécuté un IIS Server exprès.Cela signifie que j'approche cela avec une force brute ignorance!Je n'ai pas beaucoup de contexte d'arrière-plan et je ne connais pas le bon Terminologie pour beaucoup de ces choses.Au lieu de cela, je vais traiter ce sont DLL typiques des applications typiques et les approcher en tant que telles. Qu'est-ce que Isapi? Vous pouvez considérer Isapi comme l'équivalent iis \\ aux modules apache ou nginx - que est, ce sont des binaires écrits dans une langue de bas niveau comme C, C ++ ou Delphi (Non vraiment, la page Wikipedia répertorie Delphi !) qui sont chargés dans l'espace mémoire IIS en tant que bibliothèques partagées.Puisqu'ils \\ 're Code de bas niveau, ils peuvent souffrir de problèmes couramment trouvés dans le code de bas niveau, comme la corruption de la mémoire.Vous avez probablement utilisé ISAPI fourni par Microsoft modules sans s'en rendre compte - ils sont utilisés dans les coulisses pour .aspx Applications, par exemple! J'ai trouvé cet aperçu utile d'Isapi , qui relie les autres pages que je mentionne ci-dessous.Il a un avertissement de dépréciation, Mais afaict pas de page de remplacement, donc je peux dire qu'elle existait en juin / 2023 au cas où Vous devez utiliser les archives Internet pour le récupérer. Selon l'application, les modules ISAPI peuvent soit gérer les demandes entrantes par eux-mêmes (« Extensions Isapi ») ou modifiez les demandes en route vers leur maître dernier (« filtres Isapi »). Ils sont tous les deux implémentés en tant que fichiers .dll, mais vous pouvez en distinguer un de la Autre en regardant la liste des fonctions exportées (dans un fichier .dll, un «Fonction exportée» est une fonction qui peut être appelée par le service qui charge le fichier .dll).Vous pouvez afficher les exportations dans IDA Pro ou Ghidra ou d'autres outils, mais pour Ces exemples, j'ai trouvé un outil CLI simple écrit dans Ruby Tool appelé Pedump , que vous pouvez installer via la commande RubyGems Gem Installer Pedump . Voici les fo
Envoyé Oui
Condensat *lphse *pver /moveitfilt /moveitisapi /moveitisapi/moveitisapi 00000000 00000004 00000008 00000010 00000014 00000064 00000065 00000066 00000067 00000068 00000070 00000078 00000080 00000088 0000008c 00000090 00000098 000000a0 000000a8 000000b0 000000b8 000000c0 00000104 000001c8`64b68346 000001c8`64b69f60 000001c8`64b69f78 000001c8`64b69f98 00007ff8`69860000 00007ff8`698fb820 00007ff8`698fde80 00007ff8`698fdfb0 00007ff8`698fdfc0 00007ff8`6a4c7000 00007ff8`8a240000 00007ff8`8a2bb000 0001 06:28:15 0:**** 0:005> 0:012> 0xc8 1000h 1500 1540 18006ff00 180ad21c8↓o 18h 193/moveitisapi/moveitisapi 1ffb65ac196d 2023 20h 2106 256 34362 38h 3ch 400h 40h 4302 4442 483 485 5248 5838 5838: 595b 6670 80000h 9deb0 9df0 9dfe0 9dff0 === ======== ========================= ============================================ a04b9d58775b a0b7 about access accesses accesspolicy= action actually add added additionally addr address addresses addresses: administrator>tasklist administrator>wmic aep afaict after again alerted align=0x4 align=0x8 all already also always analysis analyze angle another answer any anybody anything anyways apache appears application application/x application: applications apppools approach approaching aquerystrings archive are are: argument aslr asp aspx attach attack aware background backwards bad base=1 based basically because been behind being below better binaries binary bit block block; blockextension blog body bool boring both break breakpoint brute bruteforce buffer but bytes c++ call callback callbacks called called: calling can case cbavailable cbavailable; cbsize cbsize; cbtotalbytes cbtotalbytes; challenge chance char check clean cleanly clear cli client code code: combine comes comfort command commandline commonly comprised config configs configuration configurations configurations: confirm confirmed connection connid connid; content context contrast control copy copying copyof correct corruption could creating cs:amoveitisapiext cs:amoveitisapiext+10h cs:amoveitisapiext+14h ctf curl cve data debug debugger debugging decorate definition definition: delphi depending deprecation desired detach detailed develop developer difference different differently dig directly disable distinguish dll dll/pathgoeshere dll: dllmain dllmain: dlls documentation does don due dump dup dwextensionversion dwextensionversion; dwhttpstatuscode dwhttpstatuscode; dword dwversion dwversion; e96bd8ffff each earlier easy eax ecx either enabled= ends engineer engineering enough entire entry environment: equivalent ever every exactly example examples except exe executablepath execute executed execution existed exiting exported exports ext extension extensions extensions” extension|filter eye fairly far fdwreason feel fetch field fields fields: figure file files file” filter filters filters” final find finding first flags=0x0 following force form found four free from function functions function” future gem generically get getextensionversion getfilterversion getservervariable ghidra going good googling grep grep: guess had handle handler happen happens hard has hastily have hconn header headers helpful here hinstance hinstdll hit host how hse http http/200 httpextensionproc httpextensionproc: httpfilterproc https://10 https://example ida identical identify ignorance ignorance” iis iisipm2c508efc iisipm78b02bd1 image imagine implemented important included incoming inetmgr inetpub inetsrv info info* info; information initialize initialized injection install instances instead interested interesting internet intro involved is: isapi isapimodule isapipool isn issue issues its jmp june/2023 just keep kinda knew know knowledge language later latter lea lead len let level libraries lifecycle like likely line links linux list lists literal load loaded loaded: loading loads log longer look looking looks lot low lpbdata lpbdata; lpbyte lpdwsize lpecb lpextension lpstr lpszcontenttype lpszcontenttype; lpszextensiondesc lpszextensiondesc+10h lpszextensiondesc+14h lpszlogdata lpszmethod lpszmethod; lpszpathinfo lpszpathinfo; lpszpathtranslated lps
Tags Tool
Stories
Notes ★★
Move


L'article ne semble pas avoir été repris aprés sa publication.


L'article ne semble pas avoir été repris sur un précédent.
My email: