- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > IT-Security Forum > IT-Security
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


IT-Security Alles rund um IT-Security aus den Bereichen Hard- und Software

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-01-2016, 18:52
Benutzerbild von ibor ibor
 Registrierter Benutzer
Links : Onlinestatus : ibor ist offline
Registriert seit: Jan 2013
Beiträge: 60
ibor befindet sich auf einem aufstrebenden Ast
Cool PHP - ereg - und dessen Folgen!

Da schau her:

Das verfluchte Nullbyte – Teil 1 | burncycle

ist ebenfalls wichtig zu erwähnen und so kann man alle eregs() umgehen :/

Denn wer will schon, dieses Problem haben? Also es scheint, als hätte sich zum Beispiel "Wordpress" keinerlei Gedanken darüber gemacht

Also -> immer eine Handbreit Puffer unterm Code


Gruß Robert
Mit Zitat antworten
  #2 (permalink)  
Alt 14-01-2016, 18:58
Benutzerbild von ibor ibor
 Registrierter Benutzer
Links : Onlinestatus : ibor ist offline
Registriert seit: Jan 2013
Beiträge: 60
ibor befindet sich auf einem aufstrebenden Ast
Standard

ich überleg mir auch mal n sec scanner zu schreiben ...
mit allen mir bekannten Schwachstellen

Mal schauen obs was wird

greetz Robert
Mit Zitat antworten
  #3 (permalink)  
Alt 14-01-2016, 19:50
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 449
mermshaus wird schon bald berühmt werden
Standard

Jetzt finden wir bitte mal das Jahr raus, seit dem die ereg-Funktionen als deprecated markiert sind.
Mit Zitat antworten
  #4 (permalink)  
Alt 15-01-2016, 08:59
Benutzerbild von ibor ibor
 Registrierter Benutzer
Links : Onlinestatus : ibor ist offline
Registriert seit: Jan 2013
Beiträge: 60
ibor befindet sich auf einem aufstrebenden Ast
Standard

Natürlich ist sie das. Aber denk mal an die 'veraltete' mysql Funktion ohne pdo :/ Wird trotzdem noch verwendet! Und okay es mag sein das ereg noch länger veraltet ist aber es wird immer noch verwendet! Und deswegen sollte man dies wissen. Gerade wenn man es mit einem älteren Script zu tun hat.

Wie gesagt wollte ich nur einen weiteren Grund liefern, warum man niemals auf ereg vertrauen sollte

Gruß Robert
__________________
Immer eine Handbreit Puffer unterm Code

Geändert von ibor (15-01-2016 um 09:15 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 15-01-2016, 10:12
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 449
mermshaus wird schon bald berühmt werden
Standard

Übrigens: Die Issue, die der verlinkte Blogeintrag anspricht, existiert zwar, aber der Code dort zur Demonstration ist ungeeignet.

Zitat:
PHP-Code:
$var "stringpasst";
$var2 "stringpasst\0üch";

$wert ereg("[a-z]",$var); //ergibt true
echo $wert;
$wert ereg("[a-z]",$var2); //ergibt auch true
echo $wert
Beide ereg-Aufrufe ergeben nicht bool(true), sondern int(1). Das ist auch beim zweiten Aufruf zufällig die korrekte Rückgabe, weil das verwendete Pattern nur sicherstellt, dass ein Zeichen [a-z] irgendwo in der Eingabe auftaucht. Anders gesagt: Das Pattern liefert auch für Eingaben wie "123a456" den Wert int(1).

Hier ist eine geeignetere Demonstration der NUL-Byte-Problematik:

PHP-Code:
var_dump(
    
ereg('^[a-z]+$'"abc\x00123"// ergibt int(1)
); 
"\x00" ist hier das NUL-Byte. Dieser Ausdruck sollte bool(false) liefern, liefert aber int(1), da ereg das NUL-Byte wahrscheinlich für das Eingabeende hält (Stichwort nullterminierte Strings).

Dieses Problem tritt tatsächlich nur beim NUL-Byte auf:

PHP-Code:
<?php // ereg.php

$pattern '^[a-z]+$';

for (
$i 0$i <= 255$i++) {
    
$input 'a' chr($i) . '1'// Number in string. Pattern should never match

    
if (false !== ereg($pattern$input)) {
        
printf("False positive for byte chr(%s)\n"$i);
    }
}

echo 
"Done\n";
Ausgabe:

Code:
$ php -f ereg.php 
False positive for byte chr(0)
Done
Es scheint für dieses Problem mit ereg also eine Lösung zu sein, vorher NUL-Bytes aus der Eingabe zu filtern. Nutzen sollte man die ereg*-Funktionen natürlich dennoch nicht, da sie seit Mitte 2009 als deprecated gelten und in PHP 7 laut Doku gar nicht mehr existieren.

Der Vollständigkeit halber ein Test für PCRE/preg*-Funktionen:

PHP-Code:
<?php // pcre.php

$pattern '/\A[a-z]+\z/';

for (
$i 0$i <= 255$i++) {
    
$input 'a' chr($i) . '1'// Number in string. Pattern should never match

    
if (!== preg_match($pattern$input)) {
        
printf("False positive for byte chr(%s)\n"$i);
    }
}

echo 
"Done\n";
Code:
$ php -f pcre.php 
Done

Geändert von mermshaus (16-01-2016 um 13:58 Uhr) Grund: Grammatik
Mit Zitat antworten
  #6 (permalink)  
Alt 15-01-2016, 11:34
Benutzerbild von ibor ibor
 Registrierter Benutzer
Links : Onlinestatus : ibor ist offline
Registriert seit: Jan 2013
Beiträge: 60
ibor befindet sich auf einem aufstrebenden Ast
Standard

Bravo
__________________
Immer eine Handbreit Puffer unterm Code
Mit Zitat antworten
  #7 (permalink)  
Alt 16-01-2016, 13:31
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 843
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von ibor Beitrag anzeigen
eregs()...

Denn wer will schon, dieses Problem haben? Also es scheint, als hätte sich zum Beispiel "Wordpress" keinerlei Gedanken darüber gemacht
Gibts da einen Zusammenhang mit Wordpress? (Ich glaube zwar kaum, dass die da noch ereg_...() verwenden, aber man weiß ja nie ...)

Die PCRE-Erweiterung gibts mindestens seit PHP 5.0.0. Seit dieser Zeit besteht also keine Veranlassung mehr, POSIX-Regex-Funktionen zu nutzen. Sie können nichts, was die PCRE nicht auch könnten. Und wer die POSIX-Syntax liebt, nimmt halt die MultiByte-Version. Die sollte per Definition NUL-Byte-sicher sein.
Mit Zitat antworten
  #8 (permalink)  
Alt 16-01-2016, 13:37
Benutzerbild von ibor ibor
 Registrierter Benutzer
Links : Onlinestatus : ibor ist offline
Registriert seit: Jan 2013
Beiträge: 60
ibor befindet sich auf einem aufstrebenden Ast
Post

Habe mir den Quellcode auch von wordpress Plugins angeschaut und habe dann diese Feststellung gemacht!

Ob der Code auf GitHub noch aktuell ist weiss ich nicht aber ich habe was wordpress anbelangt auch was gefunden

EDIT: Sorry habe nicht im repository gesucht :/

Aber die Plugins sind wirklich teilweise betroffen - wenn man das so sagen kann :P

Einfach hier her gehen: https://github.com/search?l=php&q=wo...utf8=%E2%9C%93

Gruß Robert
__________________
Immer eine Handbreit Puffer unterm Code

Geändert von ibor (16-01-2016 um 13:50 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 17-01-2016, 00:09
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 449
mermshaus wird schon bald berühmt werden
Standard

WordPress-Core kann allerdings wenig für irgendwelche Plugins. Die kann ja jeder schreiben. Da die Software schon so lange existiert und so verbreitet ist, wird es eben entsprechend viele Plugins geben und auch etliche, die seit Jahren nicht mehr gepflegt werden, deren Code aber noch irgendwo rumgeistert. Zudem müsste man im Einzelfall schauen, ob die jeweilige Nutzung von ereg*-Funktionen tatsächlich problematisch in Bezug auf die in diesem Thread besprochene Sache ist oder ob es einfach nur alter, aber nicht unsicherer oder fehlerhafter Code ist. Das ist ansonsten auch nur ein einziger Programmierfehler, den man machen kann. Man könnte sich genauso gut zig andere Sachen herausgreifen und auch zig andere Software-Projekte. Ich sehe hier jedenfalls keinen Anlass für besondere WordPress-Kritik.

PS: Immerhin hast du es wenigstens inhaltlich versucht. Was man ansonsten teilweise liest, ist leider… Nun ja. (Edit: Auch wenn es in der Übertreibung natürlich auch als Witz gemeint sein soll.)

Geändert von mermshaus (17-01-2016 um 00:43 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 04-11-2017, 12:12
NachoV
 Registrierter Benutzer
Links : Onlinestatus : NachoV ist offline
Registriert seit: Nov 2017
Beiträge: 7
NachoV befindet sich auf einem aufstrebenden Ast
Standard

Großartig! Tolle Lösung!
__________________
phpGod
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit DB abfrage von Wordpress und dessen ausgabe Takeru85 SQL / Datenbanken 0 24-11-2014 10:30
Ligasystem und dessen Ausgabe wskc SQL / Datenbanken 0 01-10-2012 17:36
[Script] Pic soll der maus folgen und nach gewisser zeit ausblenden d2ta Apps und PHP Script Gesuche 5 03-09-2006 21:34
[Funktion] ereg und Platzhalter der_Behr PHP Developer Forum 4 08-02-2004 15:57
Fehler im Job und seine Folgen Günni Out of Order 0 22-01-2003 03:10

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an


PHP News

Mit Web-Templates Geld verdienen
Mit Web-Templates Geld verdienenWeb-Templates gewinnen immer mehr an Bedeutung. Erfahre hier, wie du dir mit dem TemplateMonster-Marktplatz neue Verkaufswege erschließen kannst.

17.10.2017 | Berni

Kostenloser PHP Editor Codelobster
Kostenloser PHP Editor CodelobsterEin einfach zu verwendender PHP, HTML, CSS, JavaScript Editor mit vielen Funktionen

21.09.2017 | Berni


 

Aktuelle PHP Scripte

PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 4 oder neuer, MySQL 3.23 oder neuer und die

17.11.2017 mirko_swm | Kategorie: PHP/ Mail
belbit Ticketcenter ansehen belbit Ticketcenter

Supportanfragen per Helpdesk über E-Mail und per Kontaktformular entgegennehmen. Inkl. iPhone- und Android App zum mobilen Beantworten von Anfragen.

14.11.2017 EichbaumMedia | Kategorie: PHP/ Ticketsystem
PHP Counter Script V1.0 ansehen PHP Counter Script V1.0

Ein ganz einfach einzubauender Besucherzähler. Kostenlos und ohne Werbung für private und gewerbliche Webseiten!

14.11.2017 hinnendahl_com | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:10 Uhr.