1x bewertet

Wak′s Ask & Answer Sichern

von Papierherz  |  18.11.2009 um 00:20 h
Skriptverwendung
Typ: Skriptverwendung
Stufe:Einfach Mittelmäßig
Anleitung zur Installation findet ihr HIER

Was Du brauchst:
Wak′s Ask & Answer Script
PHP fähigen Webspace & FTP


Schon seit längeren haben Wak′s AskMe Benutzer das Problem ihr AskMe wird gehackt. Hacken kann man dies eigentlich gar nicht nenne da es es ganz einfach ist wenn man weiß wie es geht und genauso einfach es ist es auch sich davor zu schützen.

Ich würd das als ein Fehler im Script bezeichnen. Jede Unterseite des AskMe ist mit einem Passwort gesichert. Außer eine. Und zwar die, wo man das Passwort verändern kann im Konfigurationsbereich!

o1. Im eurem AskMe Ordner sind mehrere Datein enthalten öffnet die answer.php

Nun sucht ihr diese Stelle :

/////////////////////////////////////////////////////////////////////////
//
//GO = Config
//---------
//Saved answered
//////////////////////////////////////////////////////////////////////////


o2. Den gazen Tabellenteil kopiert ihr raus, fügt ihn sicherheitshalber in ein neues Dokument ein da wir den Code Teil gleich nochmal brauchen

<tr>
<td><h2>Configuration</h2>
<?php if ($_POST[′configupdate′] != ′′) {
$id = $_POST[′id′];
$newpass = $_POST[′newpass′];
if ($newpass != ′′) {
$pass = strtolower($newpass);
$pass = crypt($pass);
} else {
$pass = $_SESSION[′password′];
}
$email = $_POST[′emailaddy′];
if ($email == ′′)
$email = "@";
$domainUrl = $_POST[′domainurl′];
if ($domainUrl == ′′)
$domainUrl = ′http://′.$_SERVER[′HTTP_HOST′].$phpSelf;
$emailnotify = $_POST[′emailnotify′];
if ($emailnotify == ′′)
$emailnotify = "no";
$entryPerPage = $_POST[′perpage′];
if (!is_numeric($entryPerPage)) {
$entryPerPage = $defaultEntryPerPage;
}
$dtFormat = $_POST[′dtformat′];
if ($dtFormat == ′′)
$dtFormat = ′d-m-y′;
$display = $_POST[′display′];
$wdata = "$id\$pass\$domainUrl\$email\$emailnotify\$entryPerPage\$dtFormat\$display";
replaceRow(CONFIGFILE, $id, $wdata);
$_SESSION[′password′] = $pass;
echo "<b>Updated.</b>";

}
list($id, $key, $domainUrl, $email, $notify, $entryPerPage, $dtFormat, $display) = getFileRow(CONFIGFILE);
if ($domainUrl == ′′) {
$domainUrl = "http://".$_SERVER[′HTTP_HOST′].$phpSelf;
}
?>
</td>
</tr>
<tr><form method="post" action="<?php echo $phpSelf?>?go=config">
<input type="hidden" name="id" value="<?php echo $id?>" />
<td width="40%">Change password:</td>
<td><input type="password" name="newpass" size="35" value="" /></td>
</tr>
<tr>
<td>URL to location of control panel:</td>
<?php if (substr($domainUrl, -10) != substr($phpSelf, -10)) $domainUrl = ′http://′.$_SERVER[′HTTP_HOST′].$phpSelf?>
<td><input type="text" name="domainurl" size="35" value="<?php echo $domainUrl?>" /></td>
</tr>
<tr>
<td>Email address (optional):</td>
<td><input type="text" name="emailaddy" size="35" value="<?php echo $email?>" /></td>
</tr>
<tr>
<td>Be notified by email of new questions (only if email is provided):</td><br>
<?php if ($notify == ′yes′) $checked = " checked=\"checked\""; ?>
<td><input type="checkbox" name="emailnotify" value="yes"<?php echo $checked?> /> Yes, notify me</td>
</tr>
<tr>
<td>Entries per page:</td>
<td><input type="text" name="perpage" value="<?php echo $entryPerPage?>" /></td>
</tr>
<tr>
<td>Date format (uses PHP date format code): (<a href="http://au3.php.net/manual/en/function.date.php" target="_blank">?</a>)</td>
<td><input type="text" name="dtformat" value="<?php echo $dtFormat?>" /></td>
</tr>
<tr>
<td>Display question/answers:</td>
<?php
if ($display == 1) {
$selected[1] = ′ selected="selected"′;
} else if ($display == 2) {
$selected[2] = ′ selected="selected"′;
}
?>
<td><select name="display">
<option value="1"<?php echo $selected[1]?>>Ascending by Date</option>
<option value="2"<?php echo $selected[2]?>>Descending by Date</option>
</select></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="configupdate" value="Update" /></td>
</tr>
</form>


o3. Nun könnt ihr da etwas hinschreiben, was der "Hacker" lesen soll.

Beispiel : /////////////////////////////////////////////////////////////////////////
//
//GO = Config
//---------
//Saved answered
//////////////////////////////////////////////////////////////////////////
echo $HEADER;
?>
Hier deinen Text den der "Hacker" lesen soll einfügen
<?php
echo $FOOTER;
} else if ($_GET[′go′] == ′logout′) {
/////////////////////////////////////////////////////////////////////////
//
//GO = LOG OUT
//---------
//Saved answered
//////////////////////////////////////////////////////////////////////////


o4. Nun setzen wir den ebend rauskopierten Code an einer anderen Stelle wieder ein zb. bei den Templates.

Sucht :

/////////////////////////////////////////////////////////////////////////
//
//GO = TEMPLATES
//---------
//Saved answered
//////////////////////////////////////////////////////////////////////////


Scrollt den ganzen Code runter bis zum letzen </tr> dannach fügt ihr euren zum Anfang kopierten Code wieder ein. In dem Code muss nun noch etwas angepasst werden und zwar diese Stelle :

<form method="post" action="<?php echo $phpSelf?>?go=config">

Ändert das config in templates ansonsten landet ihr nach dem speichern wieder im Konfigurationsbereich und eure geänderten Daten werden nicht übernommen.

So ihr seid nun fertig, ich hoffe das Tutorial war verständlich. Für die Faulen gibt es die geänderte answer.php hier zum Download Smilie



1 Kommentare




Yuyeon

ah zum glück gibt es dieses tutorial auf giatu, verständlich im gegensatz zu denen, die ich gerade gefunden habe.. mein wak wurde nämlich gerade "gehackt" und ich hätt nicht gedacht, dass mir das mal passieren würde -ich hasse meinen leichtsinn- xD
am 28.12.2009 um 03:03 Uhr