¿Cómo elimino un archivo sin permisos?

22

Un hacker ha dejado caer un archivo en mi directorio tmp que está causando problemas. Nada malicioso, excepto la creación de GB de entradas de error_log porque su script está fallando. Sin embargo, el archivo que están utilizando para ejecutar no tiene permisos e incluso como ROOT no puedo eliminar ni cambiar el nombre de este archivo.

----------  1 wwwusr wwwusr 1561 Jan 19 02:31 zzzzx.php

root@servername [/home/wwwusr/public_html/tmp]# rm zzzzx.php
rm: remove write-protected regular file './zzzzx.php'? y
rm: cannot remove './zzzzx.php': Operation not permitted

También he intentado eliminar por inodo

root@servername [/home/wwwusr/public_html/tmp]# ls -il

...
1969900 ----------  1 wwwusr wwwusr 1561 Jan 19 02:31 zzzzx.php

root@servername [/home/wwwusr/public_html/tmp]# find . -inum 1969900 -exec rm -i {} \;

rm: remove write-protected regular file './zzzzx.php'? y
rm: cannot remove './zzzzx.php': Operation not permitted

¿Cómo elimino este archivo?

Bradley
fuente
15
Si yo fuera tú, estaría buscando destruir y pavimentar esa caja. Claramente tiene al menos un agujero de seguridad, que es lo suficientemente malo como para que alguien pueda escribir nuevos archivos con permisos personalizados fuera de la raíz del documento, y además, lograr que PHP / Apache intente cargarlo. Mi amigo, estás realmente empeñado. Si quieres recuperar esa caja, debes destruirla desde la órbita. Es la única forma de estar seguro .
Warren Young el
Gracias Warren Esta es en realidad una caja nueva que se mueve sobre cuentas que nunca antes se habían visto comprometidas. Estoy tratando de averiguar cuáles son las configuraciones que son diferentes (ambos cuadros de CPanel).
Bradley
2
El hecho de que el sistema operativo sea reciente y la instalación nueva no significa que no pueda comprometerse. Un error detectado hoy en un sistema operativo que se envió hace 6 meses puede persistir durante años, ya que las personas continúan instalando el sistema operativo más antiguo desde los CD que son cada vez más antiguos. Incluso si hay un parche para la falla, la ventana entre la instalación y la actualización permite el compromiso. Dejando eso de lado, si me equivoco de que algún mal actor colocó ese archivo en su sistema, un administrador de sistemas concienzudo tendría que al menos tratar de explicar su presencia de otra manera.
Warren Young

Respuestas:

26

El archivo probablemente ha sido bloqueado usando atributos de archivo .

Como root, haz

lsattr zzzzx.php

Atributos a(modalidad de apertura) o i(inmutable) presentes impediría su rm. Si están ahí, entonces

chattr -ai zzzzx.php
rm zzzzx.php

debería eliminar tu archivo.

ire_and_curses
fuente
Evitaría llamarlos atributos de archivo extendido , ya que podría causar confusión con los atributos de archivo extendido establecidos setfxattry utilizados para almacenar atributos ACL o SELinux ...
Stéphane Chazelas
@Stephane Chazelas - ok. ¿Los "atributos de archivo" simples funcionan para usted?
ire_and_curses
1
No se me ocurre nada mejor. Solían ser atributos de archivo ext2, pero ahora son compatibles con otros FS en Linux como xfs de btrfs, por lo que ya no se les puede llamar así.
Stéphane Chazelas
3

Desafortunadamente, Warren no publicó como respuesta sino como comentario; No puedo enfatizar lo suficiente que es totalmente correcto.

Eliminar / cambiar un archivo no solucionará su problema REAL; hará que UN síntoma desaparezca. Desconecte la caja, tome una imagen para análisis forense posterior y vuelva a instalar, con una versión más nueva (con suerte con nuevas correcciones de seguridad) de lo que estaba ejecutando.

Repito: eliminar el archivo NO ES UN ARREGLO .

tink
fuente
77
No publiqué una respuesta porque mi comentario no responde la pregunta formulada.
Warren Young
Je ... supongo que todavía soy demasiado nuevo para la forma de hacer cosas de cambio de pila. Prefiero que me voten por "no responder" que no decir lo que hay que decir; D
tink
La pregunta no se trata de solucionar ese problema, se trata de eliminar un archivo sin permisos. ¡Y es una pregunta interesante!
wim
55
@tink: Eso es lo que existen para : a decir cosas que deben decirse, que son no responde a la pregunta.
Warren Young
Obviamente, esto hace responder a la pregunta que se hizo. ¡Limpiar el disco eliminará el archivo! Por lo general, no es un método razonable para eliminar un archivo, pero en este caso, es la forma más razonable, ya que al mismo tiempo resuelve el problema subyacente. (Además, incluso si esto no respondió literalmente a la pregunta como se hizo explícitamente, ¡lo que sí hace! - no está mal publicar una solución al problema real de un OP ).
Eliah Kagan