Archief voor categorie ‘ISAPI_Rewrite’

ISAPI_Rewrite: blokkeer een verzoek naar externe URL’s

1 september 2012

een praktische tip om Remote File Inclusion (XSS/RFI) HTTP verzoeken naar alle sites, behalve jouw eigen, te blokkeren

Veel exploits maken gebruik van een kwetsbaarheid in scripts om extern gehoste bestanden in te laden in een website. Timthumb.php, dat in veel WordPress thema’s wordt gebruikt, is hiervan een berucht voorbeeld.

Je kunt eenvoudig alle HTTP-verzoeken blokkeren, waarbij een andere domeinnaam als parameterwaarde voor de parameter src in de adresbalk wordt meegegeven.

ISAPI_Rewrite als Web Application Firewall (WAF) – 2
http://www.saotn.nl/isapi_rewrite-als-web-application-firewall-waf-2/

Tags: ,

Website tijdelijk sluiten voor onderhoud

12 april 2010

met behulp van PHP en ISAPI_Rewrite.

U kunt eenvoudig uw website tijdelijk sluiten voor alle bezoekers, gedurende onderhoud aan de website. Met een vriendelijke melding.

Is uw website volledig geschreven in ASP.NET, dan kunt u het welbekendeApp_Offline.htmbestand plaatsen. Dit schakelt de pool van de website uit, zolang het bestand aanwezig is. Verwijdert of hernoemt u het bestand, dan wordt de applicatiepool (en dus de website) weer gestart.

Een App_Offline.htm bestand kan per applicatiefolder geplaatst worden.

Om iets soortgelijks te bewerkstelligen zonder ASP.NET, kunt u gebruik maken van bijvoorbeeld ISAPI_Rewrites .htaccess en PHP. Het volgende voorbeeld sluit de website, alleen voor bezoek vanaf uw IP-adres. Als test. Wijzig 111 222 333 444 met uw IP-adres.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
RewriteEngine On
RewriteBase /
# The next code line is currently commented out on purpose so it will be ignored.
# It is only for testing the code when you don't really want to close the site.
# It closes the site to everyone, except you.
# You MUST first change the digits 111 222 333 444 to match YOUR IP address.
RewriteCond %{REMOTE_ADDR} !^111\.222\.333\.444$
 
# It is easy to modify the above line so it does the opposite:
# close the site to everybody else, but leave it OPEN to only you.
# Put an exclamation point ! in front of the ^ character, to make it: !^
# The remaining two code lines close the site. They say:
# If the request is NOT for /maintenance.php, send /maintenance.php instead.
# Allowing maintenance.php to be served as-is prevents an endless redirect loop.
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
 
# To allow another file, copy the line above to here and change the filename.
# This line says: no matter what file was requested, serve maintenance.php.
# This is a rewrite (not a redirect), so we use the local file path, no http://
RewriteRule ^(.*)$ /maintenance.php [L]

Maak hierbij een PHP-bestand genaamd maintenance.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
header('HTTP/1.1 503 Service Temporarily Unavailable',true,503);
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 172800');
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="robots" content="noindex,nofollow">
<title>503 - Temporarily Closed For Maintenance</title>
<style type="text/css">
<!--
p {
  font-family: "Verdana", sans-serif;
}
-->
</style>
 
</head>
<body>
 
<b>Name of website</b>
 
is temporarily closed for maintenance.
 
Normal operation will resume as soon as possible.
 
</body>
</html>

en upload beide bestanden naar de root van uw website.

Tags: , , ,

ISAPI_Rewrite en REQUEST_URI

16 maart 2010

Standaard beschikt de webserver IIS niet over de server variabele REQUEST_URI. De informatie die deze server variabele bevat is vaak nodig voor het herschrijven van mooie, zoekmachine vriendelijkeURLs. Bijvoorbeeld WordPress Permalinks.

Helicon’s ISAPI_Rewrite 2 gaf de mogelijkheid hier in scripts gebruik van te maken met behulp van de server variabele HTTP_X_REWRITE_URL. Deze bevat dezelfde informatie als anders REQUEST_URI zou hebben. Namelijk de volledigeURIvan een request. In scripts is dit aan elkaar te koppelen met de code:

1
2
3
4
<?php
  if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
     $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
?>

zodat scripts niet verder aangepast hoefden te worden; geef REQUEST_URI één keer de waarde van HTTP_X_REWRITE_URL, zodat het niet tientallen keren gewijzigd hoeft te worden in verschillende stukken code.

Sinds Microsoft eenISAPIextensieFastCGIbeschikbaar heeft gemaakt, beschikt IIS ook standaard over de echte REQUEST_URI server variabele. Bovenstaande code wijziging is hierdoor niet meer mogelijk. In scripts, bijvoorbeeld PHP, kan nu standaard

$_SERVER['REQUEST_URI'];

gebruikt worden.

Op de VEVIDA webservers draaien ISAPI_Rewrite versie 2 en 3 naast elkaar. Hierdoor is gebleken dat, in sommige gevallen, dit een conflict geeft. Namelijk:

  1. als de code gebruik maakt van HTTP_X_REWRITE_URL;
  2. met het httpd.ini bestand van ISAPI_Rewrite versie 2 ;

Het advies (de oplossing) is om:

  1. de codewijziging, zoals hierboven beschreven, ongedaan te maken. Hierdoor wordt er gebruik gemaakt van de beschikbare REQUEST_URI;
  2. het httpd.ini bestand om te zetten naar het .htaccess van ISAPI_Rewrite versie 3;

U vindt verschillende posts met ISAPI_Rewrite 3 voorbeelden, om uw eigen httpd.ini bestand om te kunnen zetten.

Tags: ,