IIS CGI gebruikt kop aanvragen kunnen worden omgeleid.

BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.

De Engelstalige versie van dit artikel is de volgende: 3179800
Symptomen
Wanneer u de functie van IIS Common Gateway Interface (CGI) als host voor een uitvoerbaar programma dat het gebruik van een bepaalde bibliotheek aanvragen omleiden, kunnen aanvragen worden illegaal op basis van de aanwezigheid van een verzoek-header 'PROXY'. Gebruik deze bibliotheek zijn verschillende web application platforms bekend. Deze omvatten PHP, Python en Ga, onder andere.
Oorzaak
CGI is een interface waarmee een webserver host voor toepassingen die worden uitgevoerd als uitvoerbare processen. Wanneer een aanvraag wordt ontvangen door een webserver, start de server een nieuw proces dat één aanvraag te verwerken. Wanneer de aanvraag is voltooid, wordt het proces beëindigd. Om het proces van toegang hebben tot de aanvraaggegevens, worden de aanvraagheaders opgenomen als omgevingsvariabelen die "HTTP_" de functienaam geplaatst om hun naam hebben. CGI-processen voor aanvragen met een header met de naam 'Proxy' hebben daarom een "Gebruikt" omgevingsvariabele die dezelfde waarde hebben als de verzoek-header.

De opdrachtregel krul en libraryare vaak gebruikt voor enablevarious soorten toepassingen waarmee aanvragen naar verschillende soorten servers, inclusief webservers. Deze bibliotheek kan worden geconfigureerd met opdrachtregelparameters of de configuratieparameters van de omgevingsvariabelen host proces kan worden gelezen. "Gebruikt" is een groot aantal configuratieparameters die worden gebruikt door de krul. "Gebruikt" wordt voor het verzenden van HTTP-aanvragen via de geconfigureerde proxy gebruikt door krul.

Opmerking Dit is gerelateerd aan de 'Gebruikt' als de representatie van de verzoek-header van een client.

Wanneer krul wordt gehost in een CGI-proces, en dat proces een omgevingsvariabele met de naam "Gebruikt" bevat, gebruikt krul aan gegevens via de HTTP-proxy waarvan de waarde is opgegeven in de omgevingsvariabele sendrequested. Dit gebeurt omdat de krul wordt verwacht dat "Gebruikt" een configuratie-richtlijn en niet een aanvraagheader client is.
Workaround
U kunt dit probleem omzeilen, gebruik geen CGI op een server waarop IIS wordt uitgevoerd. CGI is een grotendeels verouderd interface die wordt vervangen door nieuwere en meer prestatieproblemen en interfaces. PHP, Python en ga moet met name worden gehost door FastCGI op IIS. FastCGI maakt geen gebruik van omgevingsvariabelen voor client-aanvraagheaders en beschikt niet over dit probleem. Echter voor PHP, soms gebruiken bepaalde toepassingen PHPs getenv() -functie voor het ophalen van omgevingsvariabelen. Zelfs als PHP is niet opgenomen binnen een CGI-proces, repliceert het gedrag van de CGI injecteren verzoek-headerwaarden in de reeks gegevens beschikbaar zijn voor de functie getenv() . Als u een PHP-toepassing die wordt gebruikt op deze manier wordt opgehaald, zijn de volgende beperkingen van de header-waarde uit te schakelen of afkeuren van verzoeken met een PROXY-header van kracht.

Als u CGI gebruikt om een bepaalde reden hebt, aanvragen met een verzoek-header met de naam 'Proxy' blokkeren of wissen van de waarde van de header. Dit komt doordat "Proxy" geen standaard verzoek-header is en browsers wordt over het algemeen niet wilt verzenden.

Blokkeren van een aanvraag met een Proxy-header (beste oplossing), voert u de volgende opdrachtregel:
appcmd opgenomen set config /section:requestfiltering / + requestlimits.headerLimits. [kop proxy, sizelimit = "0" =]

Opmerking De appcmd.exe niet gewoonlijk in het pad en kunt u vinden in de map %systemroot%\system32\inetsrv

Schakel de waarde van de header, kunt u de volgende regel voor het herschrijven van URL:
<system.webServer>    <rewrite>        <rules>            <rule name="Erase HTTP_PROXY" patternSyntax="Wildcard">                <match url="*.*" />                <serverVariables>                    <set name="HTTP_PROXY" value="" />                </serverVariables>                <action type="None" />            </rule>        </rules>    </rewrite></system.webServer>

Opmerking De URL herschrijven is een downloadbare toevoegen in IIS en wordt niet opgenomen in een standaardinstallatie van IIS.

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 3179800 - Laatst bijgewerkt: 07/21/2016 11:59:00 - Revisie: 2.0

Windows 10, Windows 10 Version 1511, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Standard, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 Foundation, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows 8.1, Windows RT 8.1, Windows Server 2012 Datacenter, Windows Server 2012 Standard, Windows Server 2012 Essentials, Windows Server 2012 Foundation, Windows Server 2008 R2 Service Pack 1, Windows 7 Service Pack 1, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2

  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability kbmt KB3179800 KbMtnl
Feedback