php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.01.2009, 19:17  
Neuer Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 18
mike_1964 befindet sich auf einem aufstrebenden Ast
Standard Sicherheitslücke im Gästebuch?

Hallo in die Runde, ich bin mit einem Problem konfrontiert, bei dem ich momentan nicht weiter weiß. Vielleicht hilft mir ja jemand auf die Sprünge.

Problematik:

Ich habe ein simples Gästebuch mit PHP geschrieben (Formular -> Dateneingabe -> eingegebene Daten überprüfen -> wenn alles ok, dann Eintrag in DB -> Mail an den Admin, dass Eintrag vorhanden -> Admin schaltet frei bzw. löscht diesen Eintrag -> freigeschaltete Einträge werden im GB ausgegeben)

Nun hab ich seit 3 Tagen jede Nacht einen Angriff auf das GB, die index.php wird durch eine andere Seite ersetzt, diese leitet auf irgendeine Hackerseite weiter.

Hab erst gedacht, es wird bei der Ausgabe der Einträge ein Script ausgeführt, welches vorher per Formular in die DB geschrieben wurde. Aber das sollte man ausschließen können, da der Admin vor Freischaltung die Einträge prüft.

Eine andere Variante, eine Datei im Ordner auf dem Server zu erzeugen (Ich gehe mal davon aus, die Zugangsdaten sind dem Hacker nicht bekannt) erschließt sich mir nicht. Bin auch diesbezüglich nicht groß bewandert, deshalb poste ich diese Problematik hier.

Google brachte mir zwar unter SQL-injection und XSS verschiedenes, aber daraus wurde ich nicht recht schlau.

Wäre schön, wenn hier jemand Rat weiß.

Mike
mike_1964 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.01.2009, 19:20  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

ich glaub ein link mit ner test-kopie von dem GB wäre villeicht hilfreich...
ohne infos werden wenige helfen können
Screeze ist offline  
Alt 28.01.2009, 19:29  
Dominik
Gast
 
Beiträge: n/a
Standard

jow script her:P

eingegebene Daten überprüfe
Wie überprüfst du den? Nur ob ein paar Zeichen gesetzt sind?

Wie sicherst du ausgaben?

mfg
 
Alt 28.01.2009, 19:30  
Neuer Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 18
mike_1964 befindet sich auf einem aufstrebenden Ast
Standard

Da liegts


Deutsche Steuergewerkschaft - Landesverband Brandenburg
mike_1964 ist offline  
Alt 28.01.2009, 19:32  
Neuer Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 18
mike_1964 befindet sich auf einem aufstrebenden Ast
Standard

Ich prüfe nur, ob die Felder komplett ausgefüllt sind, ansonsten nur

PHP-Code:
  // keine HTML-Tags erlaubt, außer p und br
  
$value strip_tags($text_neu'<p><br /><b><strong>'); 

  
// HTML-Tags maskieren
  
$value htmlspecialchars($valueENT_QUOTES);

  
// Leerzeichen am Anfang und Ende beseitigen
  
$text_neu trim($value); 
mike_1964 ist offline  
Alt 28.01.2009, 19:33  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wir brauchen schon mehr Quelltext ... somit können wir doch nix sagen ...
Flor1an ist offline  
Alt 28.01.2009, 19:33  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

sql injections abgesichert??


edit:
moment du sagst die index.php wird durch eine andere seite ersetzt...
wird die komplett überschrieben oder villeicht einfach irgendwo ein wert in der datenbank geändert, der in der index.php angezeigt wird ungefiltert?

Geändert von Screeze (28.01.2009 um 19:37 Uhr).
Screeze ist offline  
Alt 28.01.2009, 19:54  
Neuer Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 18
mike_1964 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Screeze Beitrag anzeigen
sql injections abgesichert??


edit:
moment du sagst die index.php wird durch eine andere seite ersetzt...
wird die komplett überschrieben oder villeicht einfach irgendwo ein wert in der datenbank geändert, der in der index.php angezeigt wird ungefiltert?
Die index.php wird komplett überschrieben. Neu im Ordner erscheint zusätzlich eine php- Datei mit codiertem Code (" eval(gzinflate(str_rot13(base64_decode('HJ3Hrttcml JfpXT9Axww......."), auf die aber von nirgendwoher aus dem Ordner verlinkt wurde.
mike_1964 ist offline  
Alt 28.01.2009, 19:59  
Neuer Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 18
mike_1964 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Flor1an Beitrag anzeigen
Wir brauchen schon mehr Quelltext ... somit können wir doch nix sagen ...

PHP-Code:
<form name="mailform" method="post" action="<? echo "$PHP_SELF#formular"?>">
  <table width="500px" border="0" cellpadding="3" cellspacing="0" align="center">
    <tr align="left"> 
      <td class="formulartext">&nbsp;</td>
      <td class="formulartext"> <font color="#CC0000"><b> 
        <?
if($_POST['send']){

if(!
$_POST['name'])    {echo "Name fehlt<br>";             $namecheck=1;}        //check name
if(!$_POST['email'])    {echo "e-Mail fehlt<br>";             $emailcheck=1;}        //check email
else{if(!eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9|ü|ä|ö]+([-_\.]?[a-z0-9|ü|ä|ö])+\.[a-z]{2,4}"$_POST['email'])){echo "e-Mail falsch<br>";             $emailcheck=0;}}        //check email
if(!$_POST['titel'])    {echo "Titel fehlt<br>";             $titelcheck=1;}        //check titel
if(!$_POST['text'])    {echo "Nachricht fehlt<br>";         $textcheck=1;}        //check text

$name_neu     $_POST['name'];
$email_neu         $_POST['email'];
$titel_neu         $_POST['titel'];
$text_neu         $_POST['text'];
$ip_neu            $_POST['ip'];
$zeit                time();

if(
$namecheck!=1&&$emailcheck!=1&&$titelcheck!=1&&$textcheck!=1){

  
// keine HTML-Tags erlaubt, außer p und br
  
$value strip_tags($text_neu'<p><br /><b><strong>'); 

  
// HTML-Tags maskieren
  
$value htmlspecialchars($valueENT_QUOTES);

  
// Leerzeichen am Anfang und Ende beseitigen
  
$text_neu trim($value);


$sql "INSERT INTO ..... (time, name, email, ip, titel, text)
                    VALUES ( '$zeit', '$name_neu', '$email_neu', '$ip_neu', '$titel_neu', '$text_neu')"
;
                    
mysql_query($sql);
                    

$mail_empfaenger        ="....";
$mail_absender            ="....";
$betreff                        ="Gästebucheintrag";

$text="
<html><head><title>Test></title></head>
<body>
<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\">
  <tr> 
    <td align=\"right\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><b>Eintrag vom:</b></font></td>
    <td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">"
.date("d. m. Y | H:i",$zeit)."</font></td>
  </tr>
  <tr> 
    <td align=\"right\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><b>IP:</b></font></td>
    <td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">"
.$ip_neu."</font></td>
  </tr>
  <tr> 
    <td align=\"right\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><b>Name:</b></font></td>
    <td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">"
.$name_neu."</font></td>
  </tr>
  <tr> 
    <td align=\"right\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><b>eMail:</b></font></td>
    <td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">"
.$email_neu."</font></td>
  </tr>
  <tr> 
    <td align=\"right\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><b>Titel:</b></font></td>
    <td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">"
.$titel_neu."</font></td>
  </tr>
  <tr> 
    <td align=\"right\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><b>Text:</b></font></td>
    <td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">"
.nl2br($text_neu)."</font></td>
  </tr>
  <tr> 
    <td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><b><a href=\"http://www.dstg-brb.de/pages/guestbook_1524552/check.php?delete=1&amp;time=$zeit\">L&ouml;schen</a></b></font></td>
    <td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><b><a href=\"http://www.dstg-brb.de/pages/guestbook_1524552/check.php?status=1&amp;time=$zeit\">Freischalten</a></b></font></td>
  </tr>
</table>
</body>
</html>"
;

mail($mail_empfaenger$betreff$text,"from:$mail_absender\r\nContent-Type:text/html\r\nContent-Transfer-Encoding: 8bit\r\n");


print 
"Ihr Eintrag wurde gespeichert,<br>
vielen Dank."
;

echo 
"<meta http-equiv=\"refresh\" content=\"1; URL=$PHP_SELF\">";                    
                    }

}
?>
        </b></font></td>


    <tr> 
      <td align="right" class="formulartext"><a name="formular"></a>Ihre IP:</td>
      <td class="formulartext"> 
        <? $ip=$_SERVER['REMOTE_ADDR']; echo $ip?>
        <input type="hidden" name="ip" value="<? echo $ip?>">
      </td>
    </tr>
    <tr> 
      <td align="right" class="formulartext">Name</td>
      <td> 
        <input type="text" name="name" class="inputfield" size="50" value="<? echo $name_neu?>">
      </td>
    </tr>
    <tr> 
      <td align="right" class="formulartext">e-Mail</td>
      <td> 
        <input type="text" name="email" class="inputfield" size="50" value="<? echo $email_neu?>">
      </td>
    </tr>
    <tr> 
      <td align="right" class="formulartext">Titel</td>
      <td> 
        <input type="text" name="titel" class="inputfield" size="50" value="<? echo $titel_neu?>">
      </td>
    </tr>
    <tr> 
      <td align="right" class="formulartext">Nachricht</td>
      <td> 
        <textarea name="text" class="inputfield" cols="49" rows="10"><? echo $text_neu?></textarea>
      </td>
    </tr>
    <tr> 
      <td align="right">&nbsp; </td>
      <td> 
        <input type="submit" name="send" value="Senden" class="inputfield">
      </td>
    </tr>


    </table>
</form>

Und die Ausgabe der Einträge:

PHP-Code:
$result_entries     mysql_query("SELECT * FROM    ....     WHERE status = '1' ORDER BY time DESC") ;
$menge_entries     mysql_num_rows($result_entries);

while(
$row mysql_fetch_array($result_entries)){

echo 
"
<br>

<table id=\"guestbook\" align=\"center\">

<tr class=\"rand\"><td colspan=\"2\"></td></tr>


 <tr> 
    <td width=\"250px\" rowspan=\"2\" class=\"message\"><b>"
.$row['titel']."</b><br>
     <br>"
.(nl2br($row['text']))."</td>
    <td align=\"right\" valign=\"top\"> 
     <img src=\"../guestbook_1524552/briefmarke.gif\"> <br>
        <font size=\"1\">"
.date("d. m. Y | H:i",$row['time'])."</font>&nbsp;&nbsp;<br>
     
    
    </td>
 </tr>
 <tr>
    <td align=\"right\" valign=\"bottom\"><font size=\"1\">"
.$row['ip']."</font>&nbsp;&nbsp;<br>
     <b>"
.$row['name']."</b>&nbsp;&nbsp;<a href=\"mailto:".$row['email']."\"><img src=\"../guestbook_1524552/email.gif\" alt=\"e-Mail:".$row['email']."\"></a>&nbsp;&nbsp;</td>
 </tr>

<tr class=\"rand\"><td colspan=\"2\"></td></tr>

</table>
"
;

mike_1964 ist offline  
Alt 28.01.2009, 20:00  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

dann ist eher Dein Server unsicher, hast Du Ordner, die offen sind im chmod?
HPR1974 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Problem mit Gästebuch bodoalbstadt PHP Tipps 2009 40 22.01.2009 02:30
[Erledigt] Gästebuch skript ohne mysql do it yourself gandalf PHP Tipps 2008 15 11.07.2008 21:52
Fehler im Gästebuch Wimme PHP Tipps 2006 1 22.08.2006 16:43
Gästebuch gegen spambot schützen PHP-Fortgeschrittene 27 06.03.2006 16:45
[Erledigt] Problem mit Gästebuch PHP Tipps 2006 5 14.02.2006 18:07
Gästebuch PHP Tipps 2005-2 2 22.07.2005 18:16
Dropdown-Menü und Gästebuch PHP Tipps 2005-2 5 20.06.2005 23:20
[Erledigt] Probleme mit dem Gästebuch PHP Tipps 2005-2 5 07.06.2005 15:22
[Erledigt] 4images Gästebuch PHP Tipps 2005 11 03.06.2005 08:05
Gästebuch / Datenbank PHP Tipps 2005 2 22.04.2005 16:27
Blättern in Gästebuch auf Dateibasis nsane PHP Tipps 2005 8 22.01.2005 21:02
Unbekanntes Problem mit Gästebuch PHP Tipps 2007 3 02.01.2005 22:04
Gästebuch: Fehlermeldung-No database selected PHP-Fortgeschrittene 6 27.12.2004 14:17
Gästebuch und Blättern picco PHP Tipps 2004 23 01.09.2004 16:52
Problem mit meinem Gästebuch picco PHP Tipps 2004 10 25.08.2004 23:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
gästebuch ohne sicherheitslücke, gästebuch ohne sicherheitslücke php, sicherheitslücke im gästebuch, gästebuch test, php code sicherheitslücken, angriff <?php eval(gzinflate(base64_decode(\'

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:12 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum