Ich verwende IIRF - ein ISAPI-Filter für pretty URLs umschreiben. Ich konnte nicht viel Hilfe vom Entwickler zu diesen Problemen bekommen. Ich hoffe, dass ich mir einen Eindruck von diesem Dump verschaffe, damit ich den problematischen Bereich im Code finden und ihn selbst wieder aufbauen kann. Ich bin mit C nicht sonderlich vertraut, kann aber umgehen. Muss ich das mit Debug-Symbolen erstellen, um nützliche Informationen aus dem Speicherauszug zu erhalten?Stack-Überlauf in IIRF (ein C-Programm, ISAPI)
Diese Stapelüberlauf-Ausnahmen finden auf unserem Live-Produktions-Webserver statt. Daher kann ich den Debug-Modus nicht verwenden, um in diesen Code zu gelangen. Was geschieht, ist meine Anwendungspoolprozesse (w3wp.exe), um dieses Fehlerereignis erhalten:
Ein Prozess für Anwendungspool ‚dotNET Pool‘ erlitt einen tödlichen Kommunikationsfehler mit dem World Wide Web-Publishing-Dienst. Die Prozess-ID war "6924". Das Datenfeld enthält die Fehlernummer.
Kann mir jemand helfen, diese Daten zu verstehen? Es ist ein Speicherauszug aus dem IIS Debug Diagnostic Tool. Wie interpretiere ich es und finde die Quelle der Ausnahme? Es scheint eine Ausnahme innerhalb der regulären PCRE-Expressions-Bibliothek von Drittanbietern zu sein.
WARNING - DebugDiag was not able to locate debug symbols for IsapiRewrite4.dll, so the information below may be incomplete.
In w3wp__PID__3760__Date__06_23_2009__ Time_01_29_55PM__916__Second_Chance_Exception_C00000FD.dmp the assembly instruction at IsapiRewrite4!pcre_exec+12f9 in C:\IIRF1.2.15R5\IsapiRewrite4.dll has caused a stack overflow exception (0xC00000FD) when trying to write to memory location 0x00fc2be8 on thread 5
Type of Analysis Performed Crash Analysis
Machine Name WEB
Operating System Windows Server 2003 Service Pack 2
Number Of Processors 4
Process ID 8056
Process Image c:\WINDOWS\system32\inetsrv\w3wp.exe
System Up-Time 0 day(s) 09:26:25
Process Up-Time 0 day(s) 02:17:00
Thread 4 - System ID 6624
Entry point w3tp!THREAD_MANAGER::ThreadManagerThread
Create time 6/23/2009 11:12:56 AM
Time spent in user mode 0 Days 0:0:40.906
Time spent in kernel mode 0 Days 0:0:6.312
Function Arg 1 Arg 2 Arg 3 Source
IsapiRewrite4!pcre_exec+12f9 08166a27 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a27 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a26 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a26 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a25 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a25 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a24 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a24 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a23 01b6741f 081669b8
IsapiRewrite4!pcre_exec+2779 08166a23 01b6746b 081669b8
IsapiRewrite4!pcre_exec+1660 08166a22 01b6741f 081669b8
[...snip...]
Update zu diesem Debug-Prozess
Ich glaube, dass ich die Schuldigen gefunden zu haben, nachdem sie die IIS Debug Diagnostic Tools Tweaking weitere Informationen zur Verfügung zu stellen, ich habe URLs gefunden wie folgende. Es scheint einem SQL Injection Angriff ähnlich zu sein, aber ich glaube nicht, SQL Injection zu sein.
[original_url]/Forum+Result:+%E8%F1%EF%EE%EB%FC%E7%EE%E2%E0%ED+%ED%E8 %EA%ED%E5%E9%EC+%22Rifsadasy%22;%EF%E8%EA%F2%EE%EA%EE%E4+%E4%E5%F8%E8 %F4%F0%EE%E2%E0%ED;%E7%E0%F0%E5%E3%E8%F1%F2%F0%E8%F0%EE%E2%E0%EB%E8%F1 %FC+100%25+%28%E2%EA%EB%FE%F7%E5%ED+%F0%E5%E6%E8%EC+%F2%EE%EB%FC%EA%EE +%F0%E5%E3%E8%F1%F2%F0%E0%F6%E8%E8%29;
Hat jemand diese Art von Angriff gesehen? Wissen sie was es ist? Ich habe versucht, dies mit HEX, Base64 und einige andere zu entschlüsseln, aber ich komme nicht mit irgendetwas außer diesem ASCII-Text auf:
èñïîëüçîâàí+íèêíåéì+"Rifsadasy";ïèêòîêîä+äåøèôðîâàí;çàðåãèñòðèðîâàëèñü+100%+(âêëþ÷åí+ðåæèì+òîëüêî+ðåãèñòðàöèè);
Cheeso! SO GLAD, dich hier zu sehen ... Ich brauche deine Hilfe. Mein Verständnis war die Einstellung IterationLimit verhindert, dass dies ein Problem wird. Wenn IterationLimit auf 5 oder 10 gesetzt wurde, wurde eine URL nach 10 Schreibvorgängen nicht mehr neu geschrieben. Beim erneuten Lesen der Einstellung dieser Einstellung scheint das Iterationslimit nur für einen Durchlauf der Regeln zu gelten. Sobald eine URL erneut an den Anfang des Regelsatzes gesetzt wird, wird das Iterationslimit zurückgesetzt. Ist das richtig? So oder so, jetzt weiß ich, um meine Regeln zu sezieren, um herauszufinden, wo die Schleife gefangen wird. – MaseBase