zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden PHP und URL Manipulation

Antwort
 
LinkBack Themen-Optionen Ansicht
  #11 (permalink)  
Alt 14.12.2014, 13:48
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.968
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
Zur Info: nachdem ich heute Morgen meinen Filter umgeschrieben habe, passiert mit dem #00 nichts mehr. Wird sauber abgefangen und auf die CMS eigene 404er Seite geleitet.
Wenn du das im Browser eingibst kommt das nicht auf dem Server an. Du machst irgendetwas merkwürdiges, deine Beobachtungen können so nicht stimmen.

Wenn du dagegen das Zeichen URL-kodiert hast (%23) dann ist es kein besonders Zeichen und muss auch nicht besonders behandelt werden, es sei denn du übergibst es an eine Anwendung, die damit irgendetwas spezielles macht. Aber einen 404'er Fehler sollte das auf keinen Fall hervorrufen.

Zitat:
Zitat von laborix Beitrag anzeigen
Lustig dabei, ein neuer Umstand mit Internet Explorer 11 und SeaMonkey 2.31.
Test URL: http:/../rev37/admin/panel.trashmgmt.php?page=code-samples.txt%00&action=sendtotrash&lang=en

Test 1:
Server: Windows Server 2012 R2 mit Apache 2.4 und PHP 5.6
Client: Internet Explorer 11 Windows 8.1

Mit %00 jetzt eine weiße Seite und mit Logeintrag HTTP/1.1" 200 und Quellcode der weißen Seite:
HTML-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8"></HEAD>
<BODY></BODY></HTML>
Test 2:
Server: Ein Provider mit Linux, Apache und PHP 5.6
Client: SeaMonkey 2.31 ohne Javascript

Mit %00 jetzt eine weiße Seite und kein Quellcode

Egal, ich werde weiter testen/entwickeln bis das alles sauber läuft. PHP 5.6 EOL ist erst Mitte 2017, bis dahin geht noch viel Zeit ins Land
Die URL an sich, macht das in keinem Fall. Das kommt von deiner Anwendung, diese enthält Fehler aber die Anzeige der Fehlermeldmungen ist deaktiviert. Das im IIS HTML Code ankommt, kann mit einer internen Konfiguration zusammenhängen, dass der Server auf jeden Fall Code schickt auch wenn deine Anwendung abschmiert, wie in diesem Fall.

Ich würde zum einen mal testen ob wirklikch Fehler angezeigt werden, das hatte ich dir aber schon zweimal gesagt. Daneben kannst du natürlich auch einen Blick in die Fehlerlogs werfen, dort sollten auch mehr Infos stehen.
Mit Zitat antworten
Sponsored Links
  #12 (permalink)  
Alt 14.12.2014, 14:42
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Wenn du das im Browser eingibst kommt das nicht auf dem Server an. ...
Ich melde mich am CMS an, die URL ist dann "/rev37/admin/main.php" und ich bleibe dort.
Dann kopiere ich aus meinem Texteditor die vorgefertigten URLs mit Nullbytes, sinnlosen Texten und nicht erreichbare Panels. Der Browser lädt die vorgefertigte URL (zum Beispiel das Papierkorb Management Seite), geht sowas bei dir nicht?

Nebenbei, ich habe auch einige PHP-Scripte, die das für mich tun. Zum Beispiel ein unvollständiger Aufruf des Papierkorbs im Admin Interface:
PHP-Code:
// UTF-8 für .htaccess, header, doctype und formular!
header("Content-Type: text/html; charset=utf-8");
echo 
"<meta http-equiv=\"refresh\" content=\"0;URL=panel.trashmgmt.php\">";
exit(); 
Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... Aber einen 404'er Fehler sollte das auf keinen Fall hervorrufen ...
Wenn man in der URL ein Nullbyte hat wird alles ab der Stelle wo das Nullbtye eingegeben ignoriert. Also hat man keine vollständige URL mehr. Wieso dann kein 404er?

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... Das im IIS ...
Welcher IIS? Windows Server 2012 R2 und Apache 2.4. Auf dem Testserver ist IIS nicht installiert.

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... auch einen Blick in die Fehlerlogs werfen, dort sollten auch mehr Infos stehen.
An den Windows Servern kann ich das, bei den Providern ist mir das leider untersagt.

Und error_reporting(E_ALL) funktioniert, getestet auf den Servern von Windows und Providern.
__________________
Personal stuff

Geändert von laborix (14.12.2014 um 14:46 Uhr) Grund: Textfehler
Mit Zitat antworten
Sponsored Links
  #13 (permalink)  
Alt 14.12.2014, 14:59
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.968
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
Ich melde mich am CMS an, die URL ist dann "/rev37/admin/main.php" und ich bleibe dort.
Dann kopiere ich aus meinem Texteditor die vorgefertigten URLs mit Nullbytes, sinnlosen Texten und nicht erreichbare Panels. Der Browser lädt die vorgefertigte URL (zum Beispiel das Papierkorb Management Seite), geht sowas bei dir nicht?
Du sprichst höchstwahrscheinlich von URL-Kodierte Strings. Denn wenn du #00 eintippst, wird das von keinem Browser übertragen.

Zitat:
Zitat von laborix Beitrag anzeigen
Wenn man in der URL ein Nullbyte hat wird alles ab der Stelle wo das Nullbtye eingegeben ignoriert. Also hat man keine vollständige URL mehr. Wieso dann kein 404er?
Dann läuft in deiner Anwendung etwas falsch. PHP konvertiert den Code ohne Probleme, die Stelle mit einer kodierten Null (also %00) wird nicht ignoriert sondern brav in den String eingetragen und auch alle darauf folgenden Zeichen.


Zitat:
Zitat von laborix Beitrag anzeigen
Und error_reporting(E_ALL) funktioniert, getestet auf den Servern von Windows und Providern.
Ich bitte dich noch mal, baue ein kleines Skript und teste ob Fehler angezeigt werden. Diese Einstellung allein reicht oft nicht aus.

PHP-Code:
<?php
error_reporting
(E_ALL);
?>
<!doctype html>
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<?php
bla
()
?>
</body>
</html>
Was gibt diese Skript aus?
Mit Zitat antworten
  #14 (permalink)  
Alt 14.12.2014, 15:05
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.968
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Ach so, wir reden von URL Parametern, oder?
Wenn du eine ungültigen URL eingibst, dann ist ein 404'er Fehler natürlich richtig, aber das ist nicht unbedingt Aufgabe der Anwendung und es spielt keine Rolle, was für ein Art von Zeichen das sind.

Zitat:
Zitat von laborix Beitrag anzeigen
Lustig dabei, ein neuer Umstand mit Internet Explorer 11 und SeaMonkey 2.31.
Test URL: http:/../rev37/admin/panel.trashmgmt.php?page=code-samples.txt%00&action=sendtotrash&lang=en
Ich meine so was. Da kommt alles nach dem %00 ohne Probleme im Skript an.
Mit Zitat antworten
  #15 (permalink)  
Alt 14.12.2014, 19:44
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... Was gibt diese Skript aus?
Als .html gespeichert nichts
Als .php gespeichert = Fatal error: Call to undefined function bla() in ../rev37/admin/test.php on line 11
__________________
Personal stuff

Geändert von laborix (14.12.2014 um 19:48 Uhr) Grund: Schreibfehler
Mit Zitat antworten
  #16 (permalink)  
Alt 14.12.2014, 21:35
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.968
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Das tut's bei mir z.b. nicht. Ich muss zuerst das einfügen: ini_set("display_errors", 1);

und was passiert jetzt:
PHP-Code:
<?php
x
($1);
?>
Mit Zitat antworten
  #17 (permalink)  
Alt 14.12.2014, 21:43
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... und was passiert jetzt: ...
als .html gespeichert nichts
als .php gespeichert = Parse error: syntax error, unexpected '1' (T_LNUMBER), expecting variable (T_VARIABLE) or '$' in ../rev37/admin/test1.php on line 2

Ich studiere gerade: http://projects.webappsec.org/w/page...te%20Injection
und das hier: http://www.exploit-db.com/papers/15108/
und das hier: http://stackoverflow.com/questions/1...ding-using-php
__________________
Personal stuff

Geändert von laborix (14.12.2014 um 21:45 Uhr)
Mit Zitat antworten
  #18 (permalink)  
Alt 15.12.2014, 11:21
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.968
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
als .html gespeichert nichts
als .php gespeichert = Parse error: syntax error, unexpected '1' (T_LNUMBER), expecting variable (T_VARIABLE) or '$' in ../rev37/admin/test1.php on line 2
OK. Dann kann die weisse Seite nur aus deiner Anwendung kommen, d.h. du brichst das Skript ab ohne das irgendeine Ausgabe erfolgt.

Das ist eine sehr spezielle Lücke und noch nicht mal sonderlich spektakulär.
Darüber hinaus ist es nur eine Lücke, wenn du einen Dateinamen dynamisch aus dem Userinput zusammenbaust, der dann noch zufällig Bestandteil einer wichtigen Systemdatei ist. Kommt das bei dir vor?

Wobei das Nulbyte in den Beispielen noch nicht mal das Problem ist, das Problem ist das die beschrieben Szenarien der absolute Horror sind, da sie dem User erlauben Dateien aus irgendwelchen Pfaden einzubinden. Wer so was programmiert, hat kein Problem mit einem Nullbyte, der sollte die Finger an sich von der Webprogrammierung lassen. Wie z.b. der stackoverflow Fragesteller
Mit Zitat antworten
  #19 (permalink)  
Alt 15.12.2014, 19:23
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
OK. Dann kann die weisse Seite nur aus deiner Anwendung kommen, d.h. du brichst das Skript ab ohne das irgendeine Ausgabe erfolgt.
Da das error_reporting(E_ALL) jetzt gelöst ist, habe ich beschlossen mein CMS in "Der Fehler liegt in der Anwendung" umzutaufen

Vorher schreibe ich aber ein Debugscript und werde diverse Browser darauf loslassen um eine mögliche Fehlerquelle zu ermitteln. Ab jetzt mache ich wieder die "try, catch and error" Methode. Müsste doch zu lösen sein.

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... Kommt das bei dir vor? ...
Das CMS schaut in einem Index nach ob die vom Browser angeforderte Inhaltsseite dort enthalten ist. Wenn nein, dann Pech...

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
... Das ist eine sehr spezielle Lücke und noch nicht mal sonderlich spektakulär. ...
Eigentlich könntest du ja eine Anleitung schreiben wie man diese Lücke stopft. Die Null Byte Geschichte in PHP 5.3.x sollte gefixed sein (laut Bugzilla), im IE war das zweimal und auch gefixed. Ob es in PHP 5.6 diese wieder in einer anderen Form gibt, Fragezeichen?
__________________
Personal stuff

Geändert von laborix (15.12.2014 um 19:26 Uhr)
Mit Zitat antworten
Sponsored Links
  #20 (permalink)  
Alt 15.12.2014, 20:56
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von laborix Beitrag anzeigen
... Vorher schreibe ich aber ein Debugscript und werde diverse Browser darauf loslassen um eine mögliche Fehlerquelle zu ermitteln. ...
Fehler gefunden, wieder ein Filter weniger. Aber etwas anderes ist sehr interessant:

Debug-Script:
PHP-Code:
<?php

echo "Anfrage = ".$_SERVER['QUERY_STRING']." <br />";
$zeile $_GET["page"];
echo 
"Get Page = ".$zeile."<br />";

?>
Die Anfrage URL lautete:
http:/.../rev37/admin/debug.php?page=debug%00nullbyte.txt&action=irgendw as&lang=keineAhnung

Das Ergebnis:
Anfrage = page=debug%00nullbyte.txt&action=irgendwas&lang=ke ineAhnung
Get Page = debugnullbyte.txt

Ohne irgendein Filter eingesetzt zu haben, nur die Browser.
__________________
Personal stuff
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Darstellungsprobleme im IE lea11011989 CSS 17 05.11.2010 10:44
Frage zu horizontalen Linien marvin1989 CSS 3 30.12.2009 00:35
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09
Problem mit Layout .. vermute: float Küspert CSS 3 09.12.2006 18:09
Bilder werden überlagert und verschoben. Küspert CSS 5 07.12.2006 18:15


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:38 Uhr.