Cita de: sirdarckcat en 14 Enero 2006, 03:47 AM
Segunda Sesión
Tipos de Bugs:
Nivel Aplicación
Nivel Web
Esta sesión nos centraremos en:
Nivel Aplicación se refiere a BoF, HoF, y FSoF.
Este taller es de práctica, anexo documentación, porque la info que daré aqui no es suficiente.
los BoF son vulnerabilidades que se dan porque el programador, al calcular la longitud de memoria asignada a tal variable, permite que el usuario meta mas de lo permitido, esto es porque en C, por ejemplo, al meter asi:
scanf("%s",string);
se empiezan a guardar en posiciones despues de la direccion de memoria guardada, asi que no hay algo que le diga alto.
si esta información se guarda en el Stack, parte de la memoria, donde se empujan funciones, se puede hacer que se ejecute código.
Mas info en:
http://en.wikipedia.org/wiki/Buffer_overflow
Los HoF, se crean cuando se usa, (de nuevo C), una funcion, llamada malloc, que sire para especificar, cierta cantidad de memoria, lo que nos permite modificar variables.
Mas info en google xD
Los FSoF, son vulnerabilidades, al usar algo asi:
printf(variable);
documentación anexa.
Bueno.
deben leer y aparte si necesitan, investigar sobre estos temas, ya que los necesitaran para su siguiente tarea.
Esta es la historia de mi amigo PacoCitar
Hoy Paco compró un software nuevo, llamado Apahuichtle, es un WebServer, y se supone que es anti todo, porque no soporta programación del lado del servidor.
Pero al pobre paco, lo han defaceado mil veces.
Lo unico que sabe, es que es una vulnerabilidad llamada BoF. busco en google que significa y encontro que es Birds of a Feather, asi que se ha puesto a borrar todos los archivos de pajaron que tenia.
Aun asi lo siguen defaceando.
Este es el codigo fuente de Apahichtle:Código [Seleccionar]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int g, char *f[])
{
FILE *arc;
char buf[255],xyz[255],c;
int jk=0,i,cl;
scanf("%s %s %s",buf,xyz,buf);
scanf("%s",buf);
scanf("%s",buf);
scanf("%s",buf);
scanf("%s",buf);
strcpy(buf,"C:/WEB");
strcat(buf,xyz);
arc = fopen(buf, "r");
if (arc == NULL){
printf(" ARCHIVO INVALIDO %s",buf);
return 0;
}
cl=0;
c = getc(arc);
while (c != EOF){
printf("%c",c);
if (c=='\n'){
printf("\n");
c = getc(arc);
//printf("%d",cl);
cl=0;
}else{
c = getc(arc);
cl++;
}
}
fclose(arc);
return 0;
}
Paco me mando el instalador tambien, lo dejo anexo.
Debes encontrar todoss los bugs que puedas.
te recuerdo que debes leer la documentación, para que puedas encontrara las vulnerabilidades que contiene este programa.
Hola qué tal, la vulnerabilidad está en :
CitarCódigo [Seleccionar]strcpy(buf,"C:/WEB");
strcat(buf,xyz);
arc = fopen(buf, "r");
La razón es porque, a buf se le asigna un valor de 255, de hay no se puede pasar. Y claro un usuario con fines educativo no ará eso, pero y los chicos que si lo quieren hacer. Con lo que si el chico que quiere hacer el desbordamiento solo tiene que introducir más caracteres que sobrepase 255, para sobrescrivir la memoria reservada, y poder ejecutar código arbitrario.
strcpy(buf,"C:/WEB"); Copia C:/WEB en buf, Luego strcat(buf, xyz); copia la ultima linea de xyz a buf, y luego fopen actua. Y hay es dónde ocurre el desborde (Overflow).