tiempo real matrices graficos graficas graficar grafica funciones coordenadas barras python security auditing

real - Funciones de Python explotables



matplotlib python (5)

El módulo de subprocess contiene funcionalmente desagradable que desaprobó estas formas de ejecutar comandos / procesos:

os.system os.spawn* os.popen* popen2.* commands.*

También hay exec que ejecutará el código de python y eval que "evaluará" una expresión y se puede usar para manipular variables.

Esta pregunta es similar a las funciones PHP explotables .

Los datos contaminados provienen del usuario, o más específicamente un atacante. Cuando una variable contaminada alcanza una función de sumidero, tiene una vulnerabilidad. Por ejemplo, una función que ejecuta una consulta SQL es un sumidero, y las variables GET / POST son fuentes de corrupción.

¿Cuáles son todas las funciones de sumidero en Python? Estoy buscando funciones que presenten una vulnerabilidad o debilidad del software . Estoy particularmente interesado en las vulnerabilidades de ejecución remota de código. ¿Hay clases / módulos completos que contienen funcionalmente peligroso? ¿Tienes algún ejemplo de vulnerabilidades interesantes de Python?


La función de input , que evalúa la cadena dada y devuelve el resultado, tiene algunas restricciones, pero aún puede ser explotable.


Tiendo hacia lo paranoico cuando busco este tipo de cosas. Más aún porque tiendo a hacer mucha metaprogramación.

  • La mayoría de los comandos de efectos secundarios (que cubren otras publicaciones)
    • Manipulación de archivos ( open , zipfile , zipfile , ...)
    • llamadas de red ( urllib2 , socket , ...)
    • serialización / persistencia de datos ( pickle , shelve , ...)
    • proceso / gestión de subprocess ( subprocess , os.fork , os.kill , ...)
  • construidos
    • getattr
    • setattr
    • delattr
    • eval
    • exec
    • execfile
    • __import__

Y probablemente otros los estoy olvidando. También desconfío de la entrada del usuario a través de las funciones donde estoy modificando sys.path, sys.modules, etc.


desde la documentación de pickle :

Warning The pickle module is not intended to be secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.


eval y exec son los clásicos. Sin embargo, open y el file pueden ser abusados ​​también:

open(''/proc/kcore'', ''w'').write(''0'' * 1000 * 1000 * 1000)

Luego están los módulos os , sys , subprocess y dircache . Casi cualquier cosa que toque el sistema de archivos o se pueda usar para convertir datos en código ejecutable (como os.system ) estará en la lista.

Como S. Lott señaló en los comentarios, escribir en el sistema de archivos y ejecutar programas externos arbitrarios no es específico de Python. Sin embargo, merecen la consideración de los auditores de seguridad. La mayoría de estas funciones se pueden utilizar de forma segura sin preocuparse demasiado por la seguridad. eval y exec , por otro lado, son grandes banderas rojas grandes. Su uso seguro requiere un cuidado meticuloso.