[XSS] Carta para los reyes magos (www.carta.es)

Iniciado por Pytness, Diciembre 14, 2016, 08:10:50 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 14, 2016, 08:10:50 AM Ultima modificación: Diciembre 14, 2016, 04:04:55 PM por rollth
Imagenes:


Url: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Vector: <script>alert('XSS\nFrom Pytness\nTo Undercode\nWith Love <3');</script>*
Autor: Pytness
Ejemplo: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Reportado: No


*Es necesario poner todo el script en una sola linea
Pytness

tengo una duda, seria reflejado o persistente...lo pregunto porque si buscas el id te salta el alert cuando el script lo metes en la carta...
no se no se jaja que opinan?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
tengo una duda, seria reflejado o persistente...lo pregunto porque si buscas el id te salta el alert cuando el script lo metes en la carta...
no se no se jaja que opinan?

En ese caso sería persistente, yo no puedo verlo ya que no me carga la web.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Diciembre 14, 2016, 01:43:10 PM #3 Ultima modificación: Diciembre 14, 2016, 01:44:42 PM por HATI
Efectivamente es persistente, a mi me salta el alert de @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta cuando introduzco su id.

Cita de: rollthyo no puedo verlo ya que no me carga la web.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, ¿escribiste "www" en el domino? A mi tampoco me cargaba y ese era el motivo.

URL: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
XSS de @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta:No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Jugar o perder

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Efectivamente es persistente, a mi me salta el alert de @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta cuando introduzco su id.

Cita de: rollthyo no puedo verlo ya que no me carga la web.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, ¿escribiste "www" en el domino? A mi tampoco me cargaba y ese era el motivo.

URL: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
XSS de @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta:No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Ya me di cuenta más tarde, parece que www es un subdominio.
¿Alguien ha encontrado si hay usuarios para ver si es peligrosa?
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Diciembre 15, 2016, 03:59:21 AM #5 Ultima modificación: Diciembre 15, 2016, 04:38:02 AM por GGZ
Ya es mi nuevo uploader de imágenes :P



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

Acá hay otra que subí


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

Se podrá subir una webshell? Mmmm, naah porque siempre lo guarda en un png. Pero podrías crear una página web que use sus servicios para subir fotos, es decir sirve como un uploader, jaja.
Otro dato es que no tiene ningún tipo de restricción al parecer en lo que respecta al tamaño de la imagen, se podría hacer un script que suba imágenes de 5megas o más grande aún en cada consulta, eso sería mucha maldad.

Creo que también lo podrías usar como spammer o simplemente para molestar porque pide el correo donde supongo que mandan la carta, en ningún momento tiene una captcha para que no se pueda automatizar todo ese proceso con un simple script en sh.

Suficiente por hoy, saludos!

Diciembre 15, 2016, 04:53:59 AM #6 Ultima modificación: Diciembre 16, 2016, 01:11:46 PM por Gabriela
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Se podrá subir una webshell? Mmmm, naah porque siempre lo guarda en un png. Pero podrías crear una página web que use sus servicios para subir fotos, es decir sirve como un uploader, jaja.
Otro dato es que no tiene ningún tipo de restricción al parecer en lo que respecta al tamaño de la imagen, se podría hacer un script que suba imágenes de 5megas o más grande aún en cada consulta, eso sería mucha maldad.

Creo que también lo podrías usar como spammer o simplemente para molestar porque pide el correo donde supongo que mandan la carta, en ningún momento tiene una captcha para que no se pueda automatizar todo ese proceso con un simple script en sh.

Suficiente por hoy, saludos!

Para subir la imagen tienes q toquetear en el <canvas> no?
Si es asi, es un poco 'tedioso' no?
Aunque lo puedes automatizar con un script :P
Pytness

Diciembre 15, 2016, 09:32:35 AM #7 Ultima modificación: Diciembre 16, 2016, 01:12:29 PM por Gabriela
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Se podrá subir una webshell? Mmmm, naah porque siempre lo guarda en un png. Pero podrías crear una página web que use sus servicios para subir fotos, es decir sirve como un uploader, jaja.
Otro dato es que no tiene ningún tipo de restricción al parecer en lo que respecta al tamaño de la imagen, se podría hacer un script que suba imágenes de 5megas o más grande aún en cada consulta, eso sería mucha maldad.

Creo que también lo podrías usar como spammer o simplemente para molestar porque pide el correo donde supongo que mandan la carta, en ningún momento tiene una captcha para que no se pueda automatizar todo ese proceso con un simple script en sh.

Suficiente por hoy, saludos!

Habéis probado a subir shell? jajajajaja

Un saludo.



En realidad no envia ningun email, debe tener algun bug :/
Pytness

Diciembre 15, 2016, 06:56:59 PM #9 Ultima modificación: Diciembre 15, 2016, 07:15:30 PM por GGZ
Otra cosa que me dí cuenta interesante.

La edad es el comienzo del nombre de la imagen (estoy tratando de subir un archivo .php):
Por ejemplo, en este caso puse como edad: amo_underc0de y de resultado me dió este id:

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

Es decir que lo que está haciendo es toma la edad y a eso le agrega un hash o una cadena de caracteres con el fin de que las imagenes no reemplacen.

Ahora lo que hice es lo siguiente, a través de Live HTTP Headers, en vez de pasarle a la edad algún número, o valor le pasé un array y este es el resultado:

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

O sea pude saltearme el nombre del archivo, es solo curioso porque no nos sirve de mucho.

Ahora esto si es un poco más curioso, puse en la edad "../img/aloja"
Me tiró este id: "../img/aloja5853114c0e85d"

SI entramos  acá: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Y fijense la url de la imágen... (nos carga No tienes permitido ver los links. Registrarse o Entrar a mi cuenta pero ahí no está la imágen)

y obviamente la imagen no carga pero, ¿dónde realmente está la imágen?

en /dibujos/... ¿cómo accedo a esa imagen?
No puedo encontrarla.


Si por ejemplo pondríamos de edad el nombre: "../img/reyesmagos.png'/>"
Nos tira un id de: "../img/reyesmagos.png'/>585313983a9f0"
(www.carta.es/carta.php?id=../img/reyesmagos.png'/>585313983a9f0)

Lo que estamos haciendo acá es cargar una imágen de la propia página, ¿pero donde se subió la mía ?

A nadie se le ocurre nada con esto? :

Se podria incluir un script y mandarselo a alguien  :P
Aunque no he podidio acceder al link :(

ah, se me olvidaba, mirad la url de la imagen  ;) ;D ;D
Pytness

Sí, también noté eso pero es mejor explotarlo por el lado del XSS que ya descubriste vos.

Diciembre 18, 2016, 06:37:39 PM #12 Ultima modificación: Diciembre 19, 2016, 07:08:10 AM por Pytness
Hm... tienes razon.
De todas formas, he hecho un uploader con ajax y php, aqui va el codigo:
Código: php
<?php
if (!isset($_POST['img'])) {
?>
<!DOCTYPE html>
<html>
<head>
      <title>Import JS</title>
      <style>
      html, body {
            height: 100%;
            width: 100%;
            margin: 0px;
            padding: 0px;
            overflow: hidden;
            text-align: -webkit-center;
            text-align: -moz-center;
            background-color: green;
            background: repeating-linear-gradient(90deg, #4B4B4B 0%, #737373 100%);
      }
      .thumb {
            max-width: 100%;
            max-height: 100%;
      }
      .c_container {
            width: 800px;
            height: 450px;
            box-shadow: 0px 2px 5px -2px black;

      }
      canvas {
      }

      .interface {
            height: 600px;
            width: 800px;
            margin-top: 50px;
            background-color: white;
            box-shadow: 0px 2px 10px -2px black;
            text-align: left;
      }
      .button {
            margin-top: 10px;
      }
      </style>
</head>
<body>

      <div class="interface">
            <div class="c_container" id="img"></div>
            <input type="file" style="display: none" id="files"/>
            <input type="button" class="button" onclick="document.getElementById('files').click()" value="Get Image">
            <br>
            <input type="button" class="button" onclick="upload()" value="Upload">
            <br />
            Url: <span id="url"></span><br />
            <input type="button" class="button" onclick="copyLink()" value="Copy Url">
      </div>



      <script>
      var imgData = '';
      function fileSelected(evt) {
            var files = evt.target.files;

            for (var i = 0, f; f = files[i]; i++) {
                  if (!f.type.match('[.]*\.(png|jpeg|jpg|ico)')) {
                        alert('Must be a png');
                        return false;
                  }
                  var reader = new FileReader();

                  reader.onload = (function(theFile) {
                        return function(e) {
                              imgData = e.target.result.replace('/x-icon;', '/png;').replace('/jpeg;', '/png;').replace('/jpg;', '/png;').replace('/gif;', '/png;');
                              document.getElementById('img').innerHTML = '<img class="thumb" src="'+ imgData + '"/>';
                        };
                  })(f);

                  // Read in the image file as a data URL.
                  reader.readAsDataURL(f);
            }
      }

      function rand(min, max) {
            return Math.floor(Math.random() * parseInt(max)) + parseInt(min);
      }

function copyLink() {
prompt('Crtl + C, Enter', document.getElementById('url').innerHTML);
}

      function upload() {
            var ajax = new XMLHttpRequest();
            ajax.open('POST', "./up.php", true);
            ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            ajax.onreadystatechange = function() {
                  if (ajax.readyState === 4 && ajax.status == 200) {
                        document.getElementById('url').innerHTML='http://carta.es/dibujos/' + ajax.responseText + '.png';
                  }
            };
            var postData = 'img=' + imgData;
            // alert(postData);
            ajax.send(postData);
      }

      document.getElementById('files').addEventListener('change', fileSelected, false);
      </script>
</body>
</html>
<?php
} else {
$imgData = $_POST['img'];
$url = 'http://www.carta.es/save.php';
$data = array(
'nombre' => 'Linus Torvalds',
'edad' => rand(1, 99),
'bien' => 'No',
'lista' => 'dscsdv',
'dibujo' => $imgData,
'email' => '[email protected]',
'padre' => 'Linus Torvalds',
);
$options = array(
'http' => array(
'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
'method'  => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
echo file_get_contents($url, false, $context);
}

?>


No he dedicado mucho tiempo a la interfaz pero funciona.
Creo que no hace falta decir que necesitas un servidor con php, ni que lo podeis editar si quereis (como si no lo fueseis a hacer si os dijese que no  ;D ;D)

EDIT: El archivo necesita llamarse up.php, aunque se puede cambiar si cambiais tambien la ruta a la que se dirige en el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (linea 95)
Pytness

Diciembre 18, 2016, 07:12:36 PM #13 Ultima modificación: Diciembre 18, 2016, 07:20:39 PM por GGZ
Aah pero vos hiciste un uploader mucho más completo no sé como funcionará eso no tengo tiempo para probarlo ahora, pero yo decía hacerlo directamente en bash, ¿sabés como usar netcat no? Algo cómo: echo -e "GET / HTTP/1.0\n" | nc No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 80, y lo otro seguro te lo imaginarás.
En este caso tenés que enviar un POST y blablabla, seguro ya lo sabés.

Eso no más, saludos!

Diciembre 18, 2016, 07:29:49 PM #14 Ultima modificación: Diciembre 18, 2016, 07:34:25 PM por Pytness
Pf, shell de linux tengo que aprender (ya se que en el hacking sin saber shell no llego a ningún sitio xD).
De todas formas estoy haciendo un grado medio de informatica (me falta un año para estudiar 'seguridad informática')  y bash lo estudiaré seguro, aunque lo aprenderé x mi cuenta.
Por ahora m dedico a buscar xss y sqli porque en el resto de cosas no llego a estar ni verde :-\

Pytness
Pytness

Recién ahora después de tanto tiempo me doy cuenta de algo y encima la página al parecer está caída  :'(

Podría haber intentado subir una webshell utilizando la técnica de null byte, porque el único problema era que agregaba .jpg a la extensión del archivo.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Recién ahora después de tanto tiempo me doy cuenta de algo y encima la página al parecer está caída  :'(

Podría haber intentado subir una webshell utilizando la técnica de null byte, porque el único problema era que agregaba .jpg a la extensión del archivo.
Lleva caida bastante tiempo, desde el año pasado un poco antes de navidades.
Desconozco la tecnica de la que hablas...
Tendré que buscarla :)

Enviado desde mi SM-J510FN mediante Tapatalk

Pytness

Enero 14, 2017, 01:15:33 PM #17 Ultima modificación: Enero 14, 2017, 01:26:49 PM por GGZ
La edad era el inicio del nombre del archivo.

Viste por ejemplo en C, que todas las cadenas al final tienen un \0 ? Bueno el barra \0 significa fin de cadena.
O sea si vos haces char SALUDO[]="HOLA";

En realidad SALUDO vale: 'H', 'O', 'L' , 'A' y '\0'

Entonces, primero LA EDAD era el comienzo del nombre del archivo, el problema era que hacía esto:

NOMBRE309584305809238402.jpg, es decir agregaba un hash al nombre ¿entendes?
La solución que debería haber intentado es NOMBRE.php%00 el %00 significa fin de cadena, (el fin de cadena es representada de forma distanta en diferentes lenguajes)

Acá está mejor explicado: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


EDITADO: Te recomeindo para aprender y jugar un rato que juegues a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Saludos.

Acabo de probar a crear un archivo con un byte nulo con php y me ha dado error.
Aunque es posible que esto este condicionado por la version de php.

root-me.org, me lo apunto ;)
Pytness