Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: tecasoft en 9 Abril 2013, 17:09 pm



Título: necesito pasar estos datos x post
Publicado por: tecasoft en 9 Abril 2013, 17:09 pm
wenas gente del foro, tengo una duda a la hora de pasar datos mediante post de un formulario normal y corriente no funciona:

prueba.php
Código:
<html>
<head>

</head>
<body>

<form action="prueba2.php" method="post">
<input type="text" name="texto" size="150"><br>
<input type="submit" value="enviar">
</form>



</body>
</html>

quiero pasarle el siguiente codigo x el campo:

Código:
<html><head><script language="javascript">alert("asd");</script></head><body><a onclick=javascript:alert("asdf");>click</a></body></html>

para que me muestre los resultados en
prueba2.php

Código:
<?php

$texto=$_POST["texto"];

echo $texto;
?>

me sale el codigo tal cual pero no se ejecuta


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 9 Abril 2013, 17:20 pm
Es porque no tienes correctamente instalado php o simplemente no lo tienes.

Como lo instalaste? que servidor WEB estas utilizando?


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 9 Abril 2013, 17:40 pm
PHP Version 5.3.3-7+squeeze15

lo instale haciendo un aptitude install php5 y aptitude install php5-mysql , tengo apache y si que deberia funcionar bien el php no¿?


Título: Re: necesito pasar estos datos x post
Publicado por: EFEX en 9 Abril 2013, 17:42 pm
Citar
<script language="javascript">alert("asd");</script><a onclick=javascript:alert("asdf");>click</a>

O todo en el mismo archivo

Código
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <form action="prueba2.php" method="post">
  6. <input type="text" name="texto" size="150"><br>
  7. <input type="submit" value="enviar">
  8. </form>
  9.  
  10. <?php
  11. $texto=$_POST["texto"];
  12. echo $texto;
  13. ?>
  14.  
  15. </body>
  16. </html>


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 9 Abril 2013, 19:53 pm
Citar
me sale el codigo tal cual pero no se ejecuta
pero si ve todo el código de php en plano es porque no le anda php.

Tienes php, tienes apache, pero apache no sabe que existe php y php no sabe que existe apache, debes agregar el handler manualmente para que apache interprete php o si no instalar la librería de php:

Código:
sudo apt-get install libapache2-mod-php5
sudo /etc/init.d/apache2 restart

Apache y php no vienen ni funcionan juntos por defecto, hay que configurarlos, pero esa librería te lo hace solo.

Cuidado con los XSS, usa htmlentities como corresponde:
http://php.net/htmlspecialchars

Saludos.


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 9 Abril 2013, 19:58 pm
esta bien configurado, lo que pasa es que solo muestra "click" y el codigo no se ejecuta x lo menos con chrome, en los demas navegadores se muestra bien los alerts, que esta pasando, no entiendo nada, alguien me lo puede explicar,porque no funciona con el maldito chrome¿? gracias


Título: Re: necesito pasar estos datos x post
Publicado por: #!drvy en 9 Abril 2013, 21:08 pm
En chrome no se va a ejecutar... cuestiones de seguridad implementados en el navegador... asi son los de Google.. donde se puedan meter se meten.

Edit: Parece que a Safari también le afecta.. sera cosa de WebKit ¬¬

Saludos


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 9 Abril 2013, 21:14 pm
y que solucion le ves, es para un editor de texto que estoy haciendo, si utilizo en php el include no pasaria nada verdad, aunque es una solucion muy chapuza, la cuestion era cojer y pasar toda la pagina x el post para que se viese, como una vista previa...que harias tu¿?gracias


Título: Re: necesito pasar estos datos x post
Publicado por: EFEX en 9 Abril 2013, 22:19 pm
Un editor de texto con funciones js ? quieres hacer un editor de codigo online ? por que no le veo sentido incluir js...


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 9 Abril 2013, 22:54 pm
un editor de texto para que la gente pueda modificar su pagina web con jquery, llendonos del tema se puede modificar el webkit o utilizando ajax o algo x el estilo,es que he estado googleando


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 10 Abril 2013, 14:08 pm
Le diste un vistazo al inspeccionador o a la consola de errores?:

Código:
<a onclick=javascript:alert("asdf");>click</a>

Según la W3C (la que dicta el estandard html) dice que las propiedades de una etiqueta se encierran en comillas simples o dobles a menos que sea un string sin espacios en blanco o carácteres especiales que rompan el string como por ejemplo las comillas o null bytes.

El problema es que despues del onclick hay comillas dobles, entonces para el explorador la propiedad queda corrupta:
Citar
onclick=javascript:alert("asdf");>

Lo que está de color naranjo sobraría en la propiedad. Es un error de sintaxis.

Prueba con esto:
Código:
<a href="javascript:;" onclick="javascript:alert('asdf');">click</a>

Recuerda tambien que una etiqueta <a> por estandard debe llevar siempre la propiedad href o si no no será obligación que el explorador lo considere enlace y de ahi algunos problemas de que en algunos funciona y en otros exploradores no. Fijate que tampoco puse anclas para que no mueva la pantalla al momento de hacer click al enlace si es que estubiera bien abajo.

Intentalo y nos cuentas.

Te recomiendo que para desarrollar utilices el inspeccionador de elementos y te apoyes mucho de la consola de errores ya que ese te va diciendo que está bien y que está mal, dale un vistazo al código fuente desde el explorador y te va a marcar con rojo las etiquetas mal formadas.

Te recomiendo tambien utilizar firefox porque es mas flexible y facil de auditar código y encontrar problemas.

Saludos.


Título: Re: necesito pasar estos datos x post
Publicado por: #!drvy en 10 Abril 2013, 14:40 pm
Los navegadores basados en webkit simplemente no hacen caso WHK..

Saludos


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 10 Abril 2013, 18:55 pm
WHK no me funciona en el chrome, debe ser algo del web webkit, lo que esta diciento drvy | BSM xk es el unico navegador que hemos probado y no funciona aparte de safari que dicen que tambien, los demas funcionan a la perfeccion, que se podria hacer ya que nose tanto komo vosotros¿? modificando el DOM, utilizando jquery o algo que se os ocurra es que es un problema muy grande y no poder pasar datos y que se ejecuten¿? gracias


Título: Re: necesito pasar estos datos x post
Publicado por: EFEX en 10 Abril 2013, 20:10 pm
Y que tal gardarlo en un txt o en la db y luego imprimirlo, quizás chrome lo filtra por que sabe que son parametro pasados por post o get filtrando el codigo js.


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 10 Abril 2013, 21:22 pm
aaahhhh acabo de entender xD lo que quieres no es ejecutar el código html sino enviarlo via post :P

Pues chrome y safari entre otros que utilizan webkit te filtran las peticiones get y post para prevenir xss, es un filtro anti xss, de hecho en ie8 y 9 debería funcionar tambien pero si no te corta el código es porque el filtro es malo xD

En firefox debiera funcionar bien porque no impone a nadie a utilizar filtros que nadie quiere.

Para deshabilitar este filtro desde tu sitio web debes agregar esta cabecera:
X-XSS-Protection: 0

Así:
Código
  1. <?php header('X-XSS-Protection: 0'); ?>

Recuerda que un header se envía antes de cualquier cosa asi que debes ponerlo en la primera linea de tu código que recibirá el código.

Si lo pones en 1 se habilita, si no lo tienes se habilita, si vas a cenar se habilita, si le dices explicitamente que no lo quieres entonces ahi se deshabilita.

Espero que te sirva, un saludo.


Título: Re: necesito pasar estos datos x post
Publicado por: EFEX en 10 Abril 2013, 21:33 pm
WHK, eso es genial! funciona en chrome? y para que agregan un filtro si luego puedo deshabilitarlo?


Título: Re: necesito pasar estos datos x post
Publicado por: #!drvy en 10 Abril 2013, 21:41 pm
Porque lo tienes que implementar en el sitio web :P y la mayoria (como nosotros) desconocemos que se puede desactivar y tampoco nos hace falta desactivarlo.

Saludos


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 10 Abril 2013, 22:23 pm
si que funciona con el header whk  ;D , gracias a todos x colaborar, ahora estoy pensando y si kisiera protegerlo contra sql injection una web entera que pasa x post que codigo utilizariais¿? se podria hacer x lista blanca¿? y komo lo hariais¿?


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 11 Abril 2013, 14:25 pm
debes documentarte un poco mas sobre seguridad en php:
http://php.net/manual/es/security.php

Dale un vistazo a este enlace:
https://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html

Para prevenir el xss debes utilizar la función htmlspecialchars() y nunca olvides poner el ENT_QUOTES.

Para prevenir la inyección SQL siempre debes usar mysql_real_escape_string()

Pero cada función tiene su forma de utilizar, no es llegar y ponerlo donde sea, dale una vuelta al tema y lee la documentación de cada una de esas funciones.

El tema de la seguridad web es demasiado amplio, es imposible saber todo, pero si puedes tomar las medidas basicas para prevenir estas cosas.

EFEX, si funciona en chrome pero no siempre te va a proteger, es como el antivirus, proteje cosas basicas pero siempre hay formas de saltar ese filtro, pon en google "chrome anti xss" y verás la cantidad de veces que se ha logrado encontrar una evación, al final google dió un comunicado diciendo que el filtro proteje solo en ciertos escenarios.

Saludos.


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 12 Abril 2013, 00:33 am
no funciona el mysqli_real_escape_string, prueba esto:

prueba2.php
Código:
<?php
header('X-XSS-Protection: 0');

$texto=$_POST["texto"];

include("../../conexionbd.php");

$conexion=mysqli_connect($host,$usu,$pusu) or die ("Error mysqli_connect: ". mysqli_connect_error());

mysqli_set_charset($conexion,'utf8');

mysqli_select_db($conexion,$bd) or die ("Error mysqli_select_db.");

$texto=mysqli_real_escape_string($conexion, $texto);
echo $texto;

?>

prueba.php

Código:
<html>
<head>

</head>
<body>

<form action="prueba2.php" method="post">
<input type="text" name="texto" size="150"><br>
<input type="submit" value="enviar">
</form>



</body>
</html>

e introduce esto:

Código:
<html><head><script language="javascript">alert('asd');</script></head><body><a onclick=javascript:alert('asdf');>click</a></body></html>

si te fijas bien las comillas dobles y simples las hecha como sql injection, como podria hacer para quitar esas barras¿? y en cuanto afectaria a mi aplicacion en seguridad¿?

Edito: tambien afecta a la \
Edito: stripslashes seria una forma de hacerlo pero es seguro¿?


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 12 Abril 2013, 20:35 pm
Vamos, esa función es para prevenir la inyección sql no un xss, la seguridad está en esos backslashses, si se los sacas pierde la seguridad, son utilizados como secuencia de escape y no se guardan... esa función no funciona con un echo, funciona con mysqli_query().


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 14 Abril 2013, 19:56 pm
perfecto WHK ya voy comprendiendo contigo la dinamica de los ataques, ahora me falta lo mas importante como podria hacer una lista blanca o protegerme contra Remote code/command execution y rfi, yo pienso que con una lista blanca se protegeria uno no¿? la cuestion es mandar x el post una web en html y javascript pero k no altere nada con php es decir, Remote code/command execution y rfi...

Edito: estoy probando y no se puede ejecutar codigo Remote code/command execution y rfi haciendo un echo x un post:

Código:
<?php
header('X-XSS-Protection: 0');

$texto=$_POST["texto"];

echo $texto;
?>

que tipo de vulnerabilidad veis, sin contar xss¿? que pasaria con las etiquetas <iframe>¿?


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 15 Abril 2013, 14:06 pm
es imposible proteger una web con listas blancas y negras, siempre habrá un agujero de seguridad, ni si quiera google ha podido crear ese famoso filtro infalibre contra ataques informáticos, phpids que es un proyecto colosal de listas negras tiene que estar sujero todos los dias a actualizaciones porque nunca se dejan de encontrar agujeros de seguridad que invaliden su protección.

La unica manera de estar bien protegido es utilizando las funciones adecuadas en su preciso momento, nada mas que eso, si te vas por las listas blancas y negras entonces estas totalmente perdido.

La seguridad informática a nivel web no se previene con un par de lineas, es un tema demasiado extenso.

Dale un vistazo a este enlace:
https://www.owasp.org/index.php/Category:Vulnerability


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 15 Abril 2013, 16:56 pm
y lo de phpids lo ves bien para ponerlo en las webs, dime tu que dirias o que utilizas¿? gracias

Edito: estoy mirando phpids como instalarlo, me lo he descargado.


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 15 Abril 2013, 19:04 pm
mira, que phpids no asegurará que funcione tu web de forma 100% segura, es solo para prevenir ataques de paginas medianamente seguras, si no eres capaz de hacer ese "medianamente" entonces no te va a servir mucho.

Yo no uso ningún software especial ni ninguna regla especial y he hecho hartas webs y todas seguras, es solo cosa de acostumbrarse a programar bien, eso es todo, si no lo puedes hacer entonces olvidate del tema de la seguridad.

Ten paciencia, nada se logra de un dia para otro, date tu tiempo y practica.


Título: Re: necesito pasar estos datos x post
Publicado por: tecasoft en 15 Abril 2013, 19:43 pm
tienes razon whk, hay que ir despacio y lo voy hacer para practicar para que sea 100% segura, pero me podrias decir mas o menos como funciona phpids?, es que esta en ingles y no lo entiendo mucho y para que serviria phpids para detener a un hacker o para ver solo las vulnerabilidades que tienes? explicame un poco que no estoy a tu altura, muchas gracias


Título: Re: necesito pasar estos datos x post
Publicado por: WHK en 18 Abril 2013, 14:34 pm
Mira, phpids lo bajas y se integra con php, no es lllegar y hacerle un include y listo, hay que configurarlo y pasarle funciones en el código, si no sabes mucho de programación entonces te va a costar un mundo.

Te recomiendo que para comenzar no utilices estos sistemas, te mal acostumbran a programar mal porque le dejas la seguridad en manos de phpids y eso no es bueno, phpids se utiliza en un sistema bien programado y bien seguro para que phpids detenga algunas fallas de seguridad no previstas, pero en ningún caso pretende hacerte todo el trabajo, phpids es vulnerable, siempre lo ha sido y siempre lo será, lo unico que hace es ayudar con la seguridad, no protegerlo al 100%.

Si quieres hacer cosas seguras entonces guiate por los estandares, haz una buena programación y listo, no necesitas ser un hacker para hacer un buén sistema web, solo debes utilizar las funciones adecuadas creadas para cada ocación, si php te dice que debes utilizar htmlspecialchars para mostrar una variable entonces eso debes hacer, si no haces lo que te recomienda el creador del lenguaje entonces estarás a la deriva.

mysql también tiene reglas de seguridad, php, python, perl, etc, todos lo tienen, la unica excepción es .net que trae sus propios filtros no estandarizados y son muy malos pero que mas se iba a esperar de microsoft.

Documentate, anda de a poco, vuelve a aprender php, apoyate mucho de php.net, no todos los blogs o foros tienen la razón.

Saludos.