[Secure Uploader] v2 By MichBukana

Hola foro les traigo la segunda version de un uploader php el añadido principal es que detecta posibles inyecciones XSS en el archivo a subir
Imagen


añadan a los 2 arrays $xss1 y $xss2 indistintamentes si quieren mas expresiones relacionadas con XSS
Imagen


Caracteristicas:
+ no se podrá sobreescribir un mismo archivo ( evita duplicación )
+ tamaño máximo de archivos a subir de 100kb
+ no sirve de nada el http live headers ' no lo pasa '
+ lleva un Filtro muy bueno
- permitios: serán el tipo de archivo que se podrá subir, ahora mismo solo se permite la subida a archivos:
jpg, png, gif, jpeg, txt, doc, docx
- denegados: serán los tipos de archivos que no se permiten subir:
php, php3, php4, phtml, exe, asp
* los tipicos de una Shell, o de un troyano/virus/stealer/keylogger. aviso: estos ultimos no han de ser solo exe como sabeís, ya es cosa vuestra agregarles más tipos al apartado denegados
Imagen

Código: Seleccionar todo

<center><form action="" method="post" enctype="multipart/form-data">
<br />
<img src='http://img204.imageshack.us/img204/3545/sitelogow.png' border='0'/>
<br /><br /><br /><br />
<b>[Secure Uploader] v2 by MichBukana</b>
<br /><br />
<input name="userfile" type="file">
<input type="hidden" name="cadenatexto" value="1">
<input type="submit" value="Enviar">
<br />
</form>
<?php 
error_reporting (E_ALL ^ E_NOTICE);if ($_POST['cadenatexto']!="")
{

$permitidos = array('jpg', 'png', 'gif', 'jpeg', 'txt', 'bmp');
$denegados = array('php', 'php3', 'php4', 'phtml','exe', 'scr', 'pdf', 'com', 'asp', 'cfm');
$archivo = $_FILES['userfile']['name'];$tio = $_FILES['userfile']['tmp_name'];$prefijo = substr(md5(uniqid(rand())),0,6);$destino =  "./subidos/".$prefijo."_".$archivo;$tamano_archivo = $_FILES['userfile']['size'];
$val=file_get_contents($tio);
	if(!file_get_contents($tio))
	{
		echo "fallo<br>";
		exit(0);
	}
$xss1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
$xss2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
$ra = array_merge($xss1, $xss2);
$num = count($ra);
echo "<b>Cantidad de expresiones XSS actual: </b>".$num."<br>";

	if(!(($tamano_archivo < 100000) && (in_array(end(explode('.', $archivo)), $permitidos))))
	{
		echo '<MARQUEE bgcolor = "#FFFFFF" width = 25% scrolldelay = 0 >no puedes subir este tipo de archivos O con un tamaño superior a 100kb</MARQUEE><br> ';
		echo $val."<br>";
		exit(0);
	}
	
	if(!(($tamano_archivo > 100000) && (in_array(end(explode('.', $archivo)), $denegados)))){
		echo "<b>Cantidad de deteccion XSS: </b>"; 
		for ($i = 1; $i <= $num; $i++)
		{
			$lol = @substr_count($val, $ra[$i]);
			echo $lol;
			if ($lol > 0)
			{
				print_r(@substr_count($val, $ra)>0);
				echo '<br><MARQUEE bgcolor = "#FFFFFF" width = 25% scrolldelay = 0 >la imagen contiene una Inyeccion XSS porfavor remuevala</MARQUEE><br> ';
				echo "<b>Contenido: </b>".$val."<br>";
				exit(0);
			}
		}
		if (copy($_FILES['userfile']['tmp_name'],$destino))
		{
			echo "<br>";
			echo "<br>";
			echo "<br>";
			echo '<MARQUEE bgcolor = "#FFFFFF" width = 25% scrolldelay = 0 > Archivo subido con existo.</MARQUEE><br> ';
			echo $val."<br>";
			exit(0);
		}
	}
};
?>
<br /><br /><br /><br /><br /><br /><br /></center>
Salu2!
Imagen

(cuanto más sabes, más cuenta te das de lo poco que sabes).

Mostrar/Ocultar

Se puede aceptar todo tipo de archivos si los metes en una carpeta y luego forzas las descargas con una .htaccess, ¿no?, sí es así pues entonces no es necesario filtrar la extención se forzará la descarga y el código no se ejecutará.
//mHmm..
que descargas? igual si dices de que en el .htaccess se puede configurar para que solo se suban ciertos tipos de archivos? e incluso con un limite de peso... bueno el caso bro es que ese archivo .htaccess un atacante podria modificarlo con algun exploit y dejar conseguir que acepte todo tipo de archivos pero gracias al filtro solo se subirán los predefinidos en el php asi que bueno mejor supongo

jeje igual no entendi muy bien la pregunta a lo mejor conteste mal

Salu2! maquina
Imagen

(cuanto más sabes, más cuenta te das de lo poco que sabes).

Mostrar/Ocultar

Ya va mira el uploader que hiciste es como para montar un sistema de descargas? es decir que la gente suba a tu uploader y pueda descargar el archivo despues como si fuese megaupload pero de descarga directa, sí se va a usar para esto puedes permitir todo tipo de extensiones y forzar a que nada se ejecute en determinada carpeta (donde se suben los archivos) y todo se ponga para descargar así no tendrías que filtrar las extenciones si no me equivoco ya si vas a mostrar o utilizar los archivos en tu sistema php pues entonces sí.
//mHmm..
bueno estuve intentando montarlo (yo tenia uno pero se fue al haberno xD) cree la carpeta "subidos " con permisos 777(en el directorio raiz), subi e code hasta hai todo bien pero al subir me marca error de linea abajo o fallo.

no se alguien me hecha una manita?
M.I.A
Nota Publicado: Mié Feb 09, 2011 3:26 pm
Re: [Secure Uploader] v2 by MichB
Ya va mira el uploader que hiciste es como para montar un sistema de descargas? es decir que la gente suba a tu uploader y pueda descargar el archivo despues como si fuese megaupload pero de descarga directa, sí se va a usar para esto puedes permitir todo tipo de extensiones y forzar a que nada se ejecute en determinada carpeta (donde se suben los archivos) y todo se ponga para descargar así no tendrías que filtrar las extenciones si no me equivoco ya si vas a mostrar o utilizar los archivos en tu sistema php pues entonces sí.
Sinceramente Linkgl en principio nunca pense en codearlo para luego tenerlo para descargar realmente lo hice como herramienta para tenerla en el administrador de la web para evitar que cuando logran através de alguna vul entrar al sistema pues les sea costoso subir algo dañino o como simple uploader en el caso de un foro para los avatares
Nota Publicado: Mié Feb 09, 2011 6:15 pm
Re: [Secure Uploader] v2 by MichB
bueno estuve intentando montarlo (yo tenia uno pero se fue al haberno xD) cree la carpeta "subidos " con permisos 777(en el directorio raiz), subi e code hasta hai todo bien pero al subir me marca error de linea abajo o fallo.

no se alguien me hecha una manita?
Imagen

aqui lo tienes todo
[Enlace externo eliminado para invitados]
por MP te paso user y pass del server al que lo subi pero ya te digo fue ahora mismito registrarme y subirlo sin mas sin darle ni permisos ni nada
Imagen

(cuanto más sabes, más cuenta te das de lo poco que sabes).

Mostrar/Ocultar

interesante codigo muchas gracias, una pregunta tenes idea de como hacer un uploader pero en una variable por ejemplo archivo.php?=upload tienes algun codigo a mano que funcione asi ? seria una mano gigante ;)
Imagen
Responder

Volver a “Nuestros Programas”