[1] Introduccion
[2] ¿Como nos atacan?
[3] Htaccess & Php.ini
[3.1] ¿Para que sirven?
[3.2] Htaccess
[3.2.1] Introduccion Htaccess
[3.2.2] Codigos utiles de Htaccess
[3.3] Php.ini
[4] Evitar ataques
[4.1] XSS
[4.2] Sql injection
[4.3] Rfi
[4.4] Lfi
[4.5] dos
[5] Despedida
[-] - - - - - - - - - - - - - - - - - - [-]
Buenas creo esto manual porque veo demasiados servidores webs sin la seguridad necesaria.
Pues este manual se para mejorar o intentar mejorar la seguridad web en la red.
Tratare de explicar lo mejor posible los pasos que daremos.
[-] - - - - - - - - - - - - - - - - - - [-]
[2] ¿Como nos atacan?:
Como nos atacan un apartado muy importante bueno hay varios,muchas formas de ataque
Algunas podremos evitar otras no.
Daremos aqui algunos ejemplos de conque cosas suelen atacar nuestro website:
-XSS (Cross site scripting)
-Sql injection
-Blind Sql injection (Injeccion a ciegas)
-dos (Ataques SYN respuestas)
-Reverse ip
y muchas mas que hay pero esto es lo que en este manual intentaremos evitar que se produzca.
Pero recuerda algo para poder evitar la mayoria de esto deberas aprender a programar o a leer
el manual detenidamente y aprenderlo.
[-] - - - - - - - - - - - - - - - - - - [-]
[3.1] Para que sirven (Htaccess y Php.ini):
Estos 2 archivos muy apreciados por los webmaster vienen a configurar el servidor web con multitud
de funciones.Estos 2 archivos son muy utiles para la seguridad de nuestro website
[3.2] Htaccess:
Es un archivo de configuracion de el servidor web se le da ordenes para realizarse como restricciones
y demas. ahora nos adentraremos un poquito mas en htaccess.
[3.2.1] Intruduccion a Htaccess:
htaccess como eh dicho anteriormente es un archivo de texto que apache usa para dar ordenes
al servidor y trabajarlas. para crear el archivo .htaccess has lo siguiente:
[1]: Habre el Bloc de notas
[2]: Pincha en > Archivo > Guardar como
[3]: Pon de nombre " .htaccess "
[4]: Selecciona en tipo "Todos los archivos"
[5]: Aceptar o Guardar
Perfecto tendras creado el archivo .htaccess pero todavia no esta subido asi que simplemente subelo
a tu hosting ponlo en la carpeta que desees que trabaje (Por ahora no hay nada no hay codigos)
y perfecto tendras ya subido el archivo .Htaccess para que trabaje cuando le metas codigos.
[3.2.2] Codigos utiles de Htaccess:
Buenas aqui te enseñare algunos codigos muy utiles para evitar tonterias de los lammers o algunos
que quieren joder tu web o simplemente para mejorar tu website.
Permitir acceso desde una IP unica
Buenas pues al lugar donde se hubica el sitio donde subiste el .htaccess con el siguiente codigo
Solo se le permitira la entrada si accede desde una ip (la que desees) para eso en nuestro archivo
.htaccess lo colocamos:
Código:
deny from all
allow from (Direccion IP)
Personalizar extensiones .html,.php y demas!
Alguna vez has querido por ejemplo crear un archivo index.shit y que se lo tome como si fuese
un archivo php pero que la extension sea .shit bueno pues hay un codigo en htacess para modificar
las extensiones lo explicamos este es el codigo:
Código:
AddType application/x-httpd-php .extension
lo que haria ese codigo seria tratar los archivos con la extension ".extension" como si fuesen .php !
Ahora probemos haber si podemos tratar un archivo de extension ".painboy" como si fuese .html:
Código:
AddType application/x-httpd-html .painboy
y seria tratado como archivo html pero con la extension .painboy!
Personalizar pagina error:
Te suena verdad el tipico error 404 este error se muestra cuando no se encuentra el archivo en el
Servidor y no lo puede localizar pues si te molesta este error simplemente debes añadirle unas
2 lineas a tu .htaccess:
Código:
RewriteEngine On
ErrorDocument 404: Paginaadondellevasisecometeerror
Ok de este codigo puedes modificar varias cosas.
1: Puedes cambiar el error a otro error ya que hay varios como el 505 y demas..
Si quieres evitar el error 505 simplemente has lo siguiente coloca lo siguiente en tu archivo
.htaccess
Código:
RewriteEngine On
ErrorDocument 505: archivoaredireccionarsisedaelerror505
Desabilitar el Acceso a una carpeta
Para desabilitar a la gente el acceso a una carpeta pues nada mas debes introducir el siguiente
Codigo en tu archivo .htaccess y luego subir el .htaccess dentro de la carpeta que deseas no permitir
acceder. el codigo es el siguiente:
Código:
#deny all access
deny from all
y con eso nadie podria acceder al contenido de archivos de esa carpeta.
Personalizar pagina error:
Te suena verdad el tipico error 404 este error se muestra cuando no se encuentra el archivo en el
Servidor y no lo puede localizar pues si te molesta este error simplemente debes añadirle unas
2 lineas a tu .htaccess:
Código:
RewriteEngine On
ErrorDocument 404: Paginaadondellevasisecometeerror
Ok de este codigo puedes modificar varias cosas.
1: Puedes cambiar el error a otro error ya que hay varios como el 505 y demas..
Si quieres evitar el error 505 simplemente has lo siguiente coloca lo siguiente en tu archivo
.htaccess
Código:
RewriteEngine On
ErrorDocument NºDELARCHIVOERROR: PGINAAREDIRECCIONSIOCURREESEERROR
Bueno pues ya saben evitar errores de este tipo.por ejemplo hagan lo siguiente:
Vallan a la siguiente url: www.mundonet.us/loquequierasyquenoexista.html
y veran que mostrara algo que dice error.html eso es porque ahi tendria que dar error 404 pero
Que ocurrio pues que tenia que redireccionar al archivo error.html pero el archivo error.html no lo
eh creado asi que no se redirecciona.
Evitar Hot link
Hot link es cuando por ejemplo publicamos una img , video en algun servidorweb que no es el nuestro
Pero ese archivo esta subido en nuestro hosting pues ahi gastaria nuestra banda de ancha seria como
Un robo de banda ancha! pues con el siguiente codigo evitaremos que nos roben la Banda Ancha:
Código:
1. RewriteCond %{HTTP_REFERER} !^$
2. RewriteCond %{HTTP_REFERER} !^http://websitetuya.com$ [NC]
3. RewriteCond %{HTTP_REFERER} !^http://websitetuya/.*$ [NC]
4. RewriteCond %{HTTP_REFERER} !^http://websitetuya$ [NC]
5. RewriteCond %{HTTP_REFERER} !^http://websitetuya/.*$ [NC]
6. RewriteRule .*\.(fla|gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
Aqui lo que debes hacer es modificar websitetuya por tu website y ya.
Asi con esto lograremos evitar que consuman nuestra banda ancha con este codigo evitamos
Que los archivos (Fla,gif,jpg,jpeg,png,bmp) sean mostrados en otros sitios que no sean nuestro
servidor web claro.
Evitar mostrar modulos de apache y version
Este codigo sirve para no mostrar ese error
Ya que ese error puede dar informacion importante si nos quieren atacar asi que lo evitaremos
Colocando el siguiente codigo en nuestro archivo .htaccess:
Código:
ServerSignature Off
Query_string
Es muy importante configurar bien esto asi evitaremos varias cosas como
Sql injections,XSS y demas.
Para configurar bien colocaremos el siguiente codigo en nuestro archivo .htaccess:
Código:
RewriteCond %{QUERY_STRING} ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*\.[A-Za-z0-9].* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|).* [NC]
Evitar el Robo(Hurto) de cookies
Pues recuerdan que se podia robar cookies con una tecnica llamada xss pues eso se acabo
Con el siguiente codigo colocalo en tu .htaccess si quieres evitar que por culpa de una variable
mal programada te roben cookies a tu usuarios:
Código:
RewriteCond %{HTTP_COOKIE} PHPSESSID=([^;]+) [NC]
RewriteRule ^(.*)$ - [env=sessid:%1]
Header set Set-Cookie "PHPSESSID=%{sessid}e; path=/; HttpOnly" env=sessid
Evitando Rfi / Lfi
Buenas pues con el siguiente codigo evitaremos que por ejemplo con el siguiente codigo en php
voy poner una variable vulnerable a rfi:
Código:
<?php
echo $var;
?>
Ok lo explotariamos eso haci http://www.tuweb.com/comosellamaelar...r=loquequieras
y si muestra loquequieras significa que register_globals esta en on. pues para evitar esto pondremos
lo siguiente en nuestro archivo .htaccess
Código:
php_flag register_globals off
y con eso estariamos evitando incluir archivos,palabras y demas en cualquier variable de archivos php.
Protegiendo carpetas con contraseña
Bien para mi esto es muy importante si quieres privacidad en tus carpetas que te muestre un login
para meter el usuario y contraseña.
Bien pues añadiremos las siguientes lineas al archivo .htaccess:
Código:
AuthUserFile /rutacompleta/hacia/.htpasswd
AuthName AquiPuedesPonerLoQueQuieras
AuthType Basic
require user NOMBREUSUARIO
lo que hace eso seria buscar la ruta de el archivo .htpasswd luego mostrar "Entas entrando en
Aquipuedesponerloquequieras" luego definir que es un login basico el normal y luego
decir el unico usuario que puede acceder (Para añadir mas usuario require user nombre1 nombre2)
En el archivo .htpasswd la sintaxis es la siguiente:
NOMBREUSUARIO:CONTRASEÑA
Ejemplo:
painboy:4sxbu06GwVhd2
Bueno la contraseña que se da como puedes ver debe estar encriptada en una variacion del algoritmo
MD5 Realizada por el apache.
Bueno pues para crear el archivo htpasswd y que te de la contraseña ya encriptada y todo listo
para subir abre la consola MS-DOS y escribe lo siguiente:
Código:
htpasswd -cb .htpasswd USUARIO CONTRASEÑA
y te lo guardara en un archivo .htpasswd listo para subir al hosting y usarlo.
y con eso ya tendras tu login de proteccion de carpetas y siempre cuando intentes acceder a la
Carpeta donde se encuentra ese htaccess te pedire usuario y password y si los pones bien te da
Accesso.
[-] - - - - - - - - - - - - - - - - - - - - - - - - -[-]
[3.3] Php.ini:
Ultimamente el php se ah visto muy usado en servidores web es tan comun ver archivos php que
es necesario un archivo para configurar sus funciones y demas
a este archivo se le llama "php ini" a diferencia de el .htaccess el .htaccess engloba todo sobre
Configuracion del servidor web encambio el php ini solo trabaja sobre los archivos php
[3.3.2] Introduccion a Php.ini:
Php.ini es un archivo de configuracion de archivos php al cual se le puede desactivar,activar funciones
y demas asi que aprenderemos un poco a usarlas por ahora quiero que hagas los siguientes pasos
para crear el archivo Php.ini:
[1] Abres bloc de notas
[2] Pulsas >Archivo > Guardar como
[3] Pones de nombre "Php.ini"
[4] En tipo pones: "Todos los archivos" (vendra por defecto .txt !cambialo!)
y haci abras creado el archivo Php.ini bueno ahora subelo a tu hosting y ya tendras el archivo Php.ini
en tu servidor.
Ahora empezemos a ver instrucciones utiles de Php.ini.
[3.3.2] Codigos Utiles de Php ini
Ahora aprenderemos unos cuantos codigos utiles para nuestra configuracion de Php.ini
Espero que les sirva empezemos:
allow_url_fopen
Esta funcion lo que hace es permitir tratar incluir ficheros en la url osea tratar una url como un acceso
a un fichero esta funcion viene activada! y claramente no nos combiene ser victimas de un ataque
Asi que haremos lo siguiente ya que actualmente el php en nuestro servidor figura como lo siguiente:
allow_url_fopen = on lo que haremos sera en nuestro archivo Php.ini colocaremos el siguiente codigo
Código:
allow_url_fopen = off
y haci ya no se incluirian los archivos.
Evitar mostrar errores de Php
Para evitar mostrar errores de php y asi evitar que sea mas sencillo que venga uno y nos quiera hacer
pasar un mal rato es recomendable desactivar el mostrar errores de php asi que añadiremos
este siguiente codigo en el archivo Php.ini
Código:
display_errors = Off
display_startup_errors = Off
y ya esta eso es con eso ya no se mostrarian los errores de php.
Activando el Safe Mode
Como sabran es muy importante activar el modo seguro en nuestro servidor
Asi limitaremos y mucho a los malechores de la red que intentan modificar nuestros archivos
Asi que colocaremos el siguiente codigo en nuestro archivo Php.ini:
Código:
safe_mode = On
Register_globals
Como habia explicado mas arriba en la parte de "Codigos Utiles de htaccess" usaremos esta funcion
Para asi evitar inclusiones como de Rfi asi que por defecto esta desactivado asi que hay que
Mantenerlo asi pero por si no lo tienes coloca lo siguiente en el archivo Php.ini:
Código:
register_globals = off
[-] - - - - - - - - - - - - - - - - - - [-]
[4] Evitar Ataques:
Bien en este apartado nos centraremos un poquillo en la programacion sobre todo php y algunas
cosillas mas espero que les sea de ayuda y empezamos:
[4.1] Evitar XSS:
Bueno la verdad el tema de evitar ataques XSS Es un tema muy urgente en la red asi que lo
Trataremos asi que espero que no intentes leer esto si no eres programador o miniprogramador en
Php ya que sino no entenderas empezamos:
Bueno haber imaginemonos un libro de visitas no?
Ok que es lo que hace un libro de visitas sin filtros ni nada, Pues es un libro que muestra exactamente
lo que se escribio en el mensaje y los codigos <h1> y demas se injectan! y se ejecutan ok.
Bueno pues lo que queremos es que no se ejecuten verdad?
Pues perfecto explicare algunas funciones muy utiles para evitar esto:
strip_tags:
Bien lo que hace esta funcion es como su nombre indica "ARRANCAR" , "Romper" las tags (<>)
Bueno bien pues esta funcion eso es lo que realiza romper tags por lo tanto si la usamos
imaginate pongo algo asi:
Pues el atacante creera que su el codigo introducido en el comentario se va a ejecutar pero no!
ya que yo para que se muestre tengo que hacer lo siguiente:
Código:
<?php
$Proteccion = strip_tags($_REQUEST['Comentario'];
echo $Proteccion;
?>
Entonces si ponemos ese codigo solo se mostraria el comentario sin el tag de <h1> y haci evitamos
Que se muestre en grande lo que escribio el atacante. encambio si ponemos esto:
Código:
<?php
echo $_REQUEST['Comentario'];
?>
Mostrara en grande el comentario que hizo y nos puede hacer infinidad de cosas mas asi que
ya sabes si no quieres que te hagan eso utiliza la funcion Strip_tags.
Htmlentities
Bien lo que hace esta funcion es cojer una cadena y transformarla en entidades html
Un ejemplo esto: <script> seria transformado en: <script>
Bueno pondremos un ejemplo usando htmlentities y otro sin el miren esto:
Ok lo que el atacante quiere es mostrar su comentario en grande pero como usamos lo siguiente:
Código:
<?php
$Proteccion = htmlentities($_REQUEST['Comentario']);
echo $Proteccion;
?>
Entonces lo que hara sera envez de mostrarse todo en grande la etiqueta (tag) <h1> sera
Transformado a una entidad html y haci no se mostrara el mensaje grande.
Bueno hay muchos mas funciones de php para filtrar las cadenas pero creo que con estas dos
vas bien. hay mas como htmlspecialchars que es exactamente igual a htmlentities solo que trabaja
con UTF8.
[-] - - - - - - - - - - - - - - - - - - - - - - [-]
[4.2] Evitar Sql injection:
Bien pues este es un error muy tonto pero que tiene facil solucion algunos por ejemplo cometen
fallos como el siguiente:
Código:
SELECT * FROM painboy
Bueno pues con ese codigo podemos obtener lo que yo quiera es totalmente vulnerable a sql injection
Por un simple * podemos poner en riesgo nuestro website asi que para arreglarlo haremos lo
Siguiente:
Código:
SELECT nombre FROM painboy
Asi se concreta y solo busca ahi y no nos arriesgamos a nada.
[-] - - - - - - - - - - - - - - - - - - - - - - [-]
[4.3] Evitar Rfi
Rfi (Remote file inclusion) Su nombre lo dice todo asi que vamos con ello esta tecnica es dificil
encontrarla para ejecutar de varias formas que ahora te contare y te contare como evitarlo.
Para que RFI Funcion necesitas lo siguiente:
1- Error en la programacion
2-Tener Register_globals en on
3-allow_url_fopen en on
Bueno pues si esta todo eso como indico entonces si podras hacer un remote file inclusion
Asi que te pondre un codigo vulnerable de RFI
Código:
include($URL)
Ok bien como vemos se incluye lo que sea!
Asi que para explotarlo seria:
www.web.com/archivo.php?URL=SHELL
Bueno y claramente queremos evitar esto asi que vamos a hacer lo siguiente:
1-No cometer errores en la programacion
2-Register_globals en OFF
3-allow_url_fopen en OFF
Empezamos:
[4.3.1] No cometer errores en programacion:
Como hemos visto lineas antes se veia un codigo vulnerable a rfi ok bien pero cual es el problema
de ese codigo pues que se incluye lo que sea y lo que haremos sera usar file_exists
Pondre un codigo 100% seguro contra rfi (Remote file inclusion):
Código:
$url = intval($_GET['url']); //la variable URL solo tendra un valor entero
$archivo = “./documentos/cont”.$url.”.php”; //localizacion del archivo
if (file_exists($archivo)) include($archivo); // lo busca y si existe lo muestra
lo que hemos echo es simplemente verificar si lo que hemos introducido esta dentro de nuestro
hosting y que tenga una extension .php y si ese archivo existe pues se muestra.
[4.3.2] Register_globals en OFF
Buenas pues mira debes abrir el archivo Php.ini y introducir la siguiente linea:
Código:
Register_globals = off
y guardas y ya tendras Register_globals en OFF
Si tienes mas dudas sobre como ponerlo en off o sobre el archivo Php.ini mira mas arriba y te viene
Una explicacion mas extensa y mas entendible
[4.3.2] allow_url_fopen en OFF
Bueno pues como en register_globals es exactamente igual debes abrir el archivo
Php.ini y introducir la siguiente linea:
Código:
allow_url_fopen = off
y luego guardar el archivo php.ini y subirlo.
[-] - - - - - - - - - - - - - - - - - - - - - - [-]
[4.3] Evitar lfi
Lfi (Local file inclusion) inclusion de archivos internos (locales) bueno eso significa que sirve para mucho
No les parece para los atacantes esto es una joya ya que pueden obtener datos muy sensibles
Empezamos como para que vean como evitar este ataque:
Pondremos un codigo vulnerable a lfi para que entiendan mas o menos:
Código:
<?php
if(!$_GET['objeto']){
include('painboy.php');
}else{
$_GET['objeto'] = str_replace('http://','', $_GET['objeto']);
if(file_exists($_GET['objeto'].'.php')){
include($_GET['objeto'].'.php');
}
}
?>
Ok parece un codigo totalmente normal sin problema algun verdad pues si te das cuenta no filtra
el escalar directorios! si escalamos directorios y empezamos a ver cosas que no se podrian de ver
Nuestra website correria mucho peligro asi que les enseñare a filtrar el escalamiento de directorios
y el no incluir archivos locales para asi mostrarlos y dar informacion sensible al atacante.
Código:
<?php
$_GET['proteccion'] = str_replace(array('.','/','\\'),'',$_GET['proteccion']);
?>
Ok ahora imaginen que la variable proteccion quiere mostrar un contenido ok?
Ok pues lo que hariamos seria usar la funcion de php str_replace para borrar los codigos utiles
que al atacante le sirve para escalar directorios y mostrar asi archivos locales asi que ya saben
Usen str_replace y luego filtren lo que necesiten para evitar lo que quieran en este caso
con el ejemplo que es 100% seguro filtramos lfi.
[-] - - - - - - - - - - - - - - - - - - - [-]
[5] Recomendaciones:
Bueno aparte de esto te doy unas recomendaciones
1: No subas muchos scripts a tu hosting (muchas veces si subes muchos scripts la gente si ve que
tu website el mostrado no tiene bugs y demas o no puede con ella ira a escanear tu web y vera
que tienes mas scripts en tu hosting y intentara acceder por medio de esos scripts por medio de
algun bug que tenga esos scripts asi que mucho cuidado con lo que subes siempre intenta limitarte
al subir algo.
2: Sigue los consejos que te doy ya que son muy utiles y recuerda tener este archivo siempre en tu
Pc por si acaso lo necesitas en algun momento y no lo encuentras en la red.
3: Con respecto al login que te enseñe a hacer con htpasswd y htaccess te recomiendo esconder
el archivo htpasswd en directorios y cambiarle el nombre al archivo .htpasswd y modificar un poquillo
el login asi le dificultas la entrada al atacante.
[-] - - - - - - - - - - - - - - - - - - - [-]
[5] Despedida:
Bueno este manual se lo dedico a toda aquella gente que desea tener un website seguro y que
bueno se lo dedico a toda mi comunidad y demas bueno pues eso espero que hayan aprendido y
Demas y que apliquen lo que les digo. Si vas a poner este Manual en algun otro sitio respeta el
Copyright saludos amigos.
Ficha de contacto:
Creador: Painboy
Este comentario ha sido eliminado por el autor.
ResponderEliminar