Foros del Web » Programando para Internet » PHP »

Formas de ser "Hackeado"

Estas en el tema de Formas de ser "Hackeado" en el foro de PHP en Foros del Web. Buenas a todos los desarrolladores, tengo relativamente poco en esto de las paginas web en Php (lenguajes dinamicos) pero aun asi me avente a un ...
  #1 (permalink)  
Antiguo 21/07/2006, 08:21
 
Fecha de Ingreso: enero-2006
Mensajes: 20
Antigüedad: 11 años, 11 meses
Puntos: 0
Exclamación Formas de ser "Hackeado"

Buenas a todos los desarrolladores, tengo relativamente poco en esto de las paginas web en Php (lenguajes dinamicos) pero aun asi me avente a un trabajo como tal.

AHora, he aqui el detalle, quisiera saber de que maneras una persona no deseada pueda entrar a un administrador de un sitio web (hecho php) y comenzar a insertar codigos malisiosos. Tengo una web de noticias y hoy en la mañana una persona desconocida insertó un codigo que hacia una redirección a otro sitio web (que para acabarla de molar es enemigo nuestro) y pues, mi pregunta es la siguiente ya concretamente: Existe una forma de poder violar una seguridad y poder realizar esto?,

Uso un sistema de seguridad de sesiones muy al estilo del que mencionan en un ejemplo de sesiones de aqui, que incluso si no se hace ningun cambio a las noticias durante cierto tiempo, este se cierra automaticamente.

Podría ser que la unica persona que pudo haber hecho esto sería un tipo que conozca las claves de usuario y contraseña para entrar? Saludos.

Les dejo mi script por que me pudieron decir que podia ser un "hoyo" o un detalle que no me haya fijado al crear el script

Este es el codigo del administrador para el login:


<?php require_once('../Connections/conEnLinea.php'); ?>
<?php
// *** Start the session
session_start();
// *** Validate request to log in to this site.
$FF_LoginAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING']) && $HTTP_SERVER_VARS['QUERY_STRING']!="") $FF_LoginAction .= "?".$HTTP_SERVER_VARS['QUERY_STRING'];
if (isset($HTTP_POST_VARS['txtUsr'])) {
$FF_valUsername=$HTTP_POST_VARS['txtUsr'];
$FF_valPassword=$HTTP_POST_VARS['txtPass'];
$FF_fldUserAuthorization="usr_Tipo";
$FF_redirectLoginSuccess="index.php";
$FF_redirectLoginFailed="login.php";
$FF_rsUser_Source="SELECT usr_Login, usr_Pass ";
if ($FF_fldUserAuthorization != "") $FF_rsUser_Source .= "," . $FF_fldUserAuthorization;
$FF_rsUser_Source .= " FROM tabusr WHERE usr_Login='" . $FF_valUsername . "' AND usr_Pass='" . $FF_valPassword . "'";
mysql_select_db($database_conEnLinea, $conEnLinea);
$FF_rsUser=mysql_query($FF_rsUser_Source, $conEnLinea) or die(mysql_error());
$row_FF_rsUser = mysql_fetch_assoc($FF_rsUser);
if(mysql_num_rows($FF_rsUser) > 0) {
// username and password match - this is a valid user
$MM_Username=$FF_valUsername;
session_register("MM_Username");
if ($FF_fldUserAuthorization != "") {
$MM_UserAuthorization=$row_FF_rsUser[$FF_fldUserAuthorization];
} else {
$MM_UserAuthorization="";
}
session_register("MM_UserAuthorization");
if (isset($accessdenied) && false) {
$FF_redirectLoginSuccess = $accessdenied;
}
mysql_free_result($FF_rsUser);
session_register("FF_login_failed");
$FF_login_failed = false;
header ("Location: $FF_redirectLoginSuccess");
exit;
}
mysql_free_result($FF_rsUser);
session_register("FF_login_failed");
$FF_login_failed = true;
header ("Location: $FF_redirectLoginFailed");
exit;
}
?>
<html><!-- InstanceBegin template="/Templates/enlinea_Admin.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Untitled Document</title>
<!-- InstanceEndEditable -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->

<script language="javascript">
function abrir_ventana(){
window.open("../fotos/uploadphoto.php" , "Subir Fotos" , "fullscreen=0 , toolbar=0 , location=0 , status=1 , menubar=0 , scrollbars=0 , resizable=0 , width=500 , height=500" , false);
}
</script>
</head>

Última edición por EgEm; 21/07/2006 a las 08:32
  #2 (permalink)  
Antiguo 21/07/2006, 08:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
AHora, he aqui el detalle, quisiera saber de que maneras una persona no deseada pueda entrar a un administrador de un sitio web (hecho php) y comenzar a insertar codigos malisiosos. Tengo una web de noticias y hoy en la mañana una persona desconocida insertó un codigo que hacia una redirección a otro sitio web (que para acabarla de molar es enemigo nuestro) y pues, mi pregunta es la siguiente ya concretamente: Existe una forma de poder violar una seguridad y poder realizar esto?,
En ese caso parece que tu nunca validastes los datos que tomas en tus "input" de formularios o variables que puedan ingresar en forma externa a tus scripts.

Se trata de usar funciones como:

htmlentities()
Para "desactivar" (convertir en entidades) todo código HTML que pudieran ingresar y que a la hora de prensentarlo al "navegador" tal cual se ejecutará.

mysql_real_escape_string() o addslashes()
Para "escapar" caracterer potencialmente peligrosos, sobre todo para "inyectar" SQL malicioso.

En general .. se trata de que NO confies en nada que pueda entrar a tus scripts en forma externa. Todo se ha de validar .. Piensa que si tu aceptas tal tipo de dato (o lo esperas) el resto por muy "inocentes" que puedan ser no debes aceptarlos .. si aceptas tal rango (de caracteres o numeros) .. validalo ..

Controla los mensajes de error que tu aplicación dará si se introducen datos adulterados .. Esos "mensajes" de error que en "desarrollo" de tus aplicaciones te vienen muy bien para detectar problemas, son nefastos cuando se lleva la aplicación en "producción" pues desvelan "rutas" y "nombres" de archivos significativos.

Exiten otro tipo de "ataques" .. sobre todo de "vecinos" tuyos si tu servidor corre en un servicio de hosting "compartido". Ahí .. una mala configuración de permisos de acceso a archivos (chmod) y de PHP (no "safe mode") y/o con cuentas de usuario con acceso "shell" y no "enjaulado" (donde se permite libremente a un usuario autentificado "rondar" y pasearse por todo el sistema de archivos del servidor) .. pueden hacer "facil" un "hackeo" (editarte archivos tuyos . .obtener contraseñas de acceso a BBDD por ejemplo .. etc.).

Te recomiendo la lectura de este documento sobre seguridad aplicado para PHP:
http://phpsec.org/projects/guide/

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 21/07/2006, 08:55
 
Fecha de Ingreso: enero-2006
Mensajes: 20
Antigüedad: 11 años, 11 meses
Puntos: 0
O por dios... Estoy tan desprotegido entonces?...

Para agregar esos codigos php que me mencionas, solo los inserto en el codigo php donde se insertan noticias o necesito hacer alguna otra cosa?

mysql_real_escape_string() o addslashes()
Para "escapar" caracterer potencialmente peligrosos, sobre todo para "inyectar" SQL malicioso.


Para escapar? no seria la misma funcion que hace htmlentities()? ... esuna pregunta ... disculpame es que soy un principiante vilmente en el php...

Espero puedan ayudarme (de por si ya lo hiciste, mcuhas gracias...=)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:50.