Preguntas con etiqueta 'python'

3
respuestas

¿Tiene bcrypt una longitud máxima de contraseña?

Hoy estuve jugando con bcrypt y noté algo: hashpw('testtdsdddddddddddddddddddddddddddddddddddddddddddddddsddddddddddddddddd', salt) Output: '$2a$15$jQYbLa5m0PIo7eZ6MGCzr.BC17WEAHyTHiwv8oLvyYcg3guP5Zc1y' hashpw('testtdsdddddddddddddddddddddddd...
hecha 31.07.2013 - 15:19
3
respuestas

No se puede entender por qué la aplicación web es vulnerable a un ataque transversal de directorio

Estaba trabajando con esta aplicación web, cuando alguien la probó con un lápiz y me envió un informe enorme que dice que mi aplicación es vulnerable a un ataque transversal de directorio. Aquí hay una muestra: Testing Path: http://127.0.0....
hecha 07.09.2016 - 13:34
1
respuesta

Seguridad Django SECRET_KEY, ¿cómo son los métodos más seguros

Estoy llegando a un punto en el que implementaré mi aplicación Django en el entorno hostil conocido como "internet" y estoy tratando de entender mejor las ramificaciones de Django SECRET_KEY . Uno de los procedimientos estándar que parece...
hecha 26.06.2014 - 08:42
2
respuestas

¿Las funciones popen (y similares) de python están afectadas por Shellshock?

Básicamente, ¿qué funciones de Python activan bash (y podrían verse afectadas por shellshock), y cuáles no? He encontrado esta pregunta al ver en algunos scripts la función popen() . Mi pregunta se relaciona con Python 2 y 3.     
hecha 29.09.2014 - 16:27
1
respuesta

Tengo la capacidad de ejecutar código Python arbitrario en el usuario 'apache'. ¿Qué daño puedo hacer?

Entonces, debido a una mala programación por parte de uno de mis colegas anteriores, una de nuestras aplicaciones web internas le permite al usuario cargar y ejecutar un archivo Python arbitrario. Esto salió a la luz recientemente a través de un...
hecha 07.06.2016 - 18:47
3
respuestas

¿Cuáles son los pros y los contras de usar sha256 para codificar una contraseña antes de pasarla a bcrypt?

Hace poco me di cuenta del hecho de que bcrypt trunca las contraseñas a 72 caracteres. En la práctica, mi intuición es que esto no plantea ningún problema de seguridad importante. Sin embargo, entiendo que significa que cualquier biblioteca de s...
hecha 22.06.2015 - 16:48
2
respuestas

___ inyección de qstnhdr ___ MongoDB Nosql en código python ______ qstntxt ___

Aquí está el fragmento de código para acceder a MongoDB.

%pre%

Me dijeron que este código es vulnerable a la inyección NoSQL ya que la variable de condición no está correctamente desinfectada. Pero no pude entender cómo funciona la inyección con python. ¿Puede alguien darme un ejemplo como qué entrada puede causar los problemas o algunas referencias a un ataque de inyección relacionado? Por cierto, también hice algunas investigaciones por mi cuenta, pero solo encontré la inyección basada en Javascript y traté de no funcionar en este caso. Gracias.

    
______ answer83234 ___

El operador %code% en MongoDB es una característica que es mejor evitar. Su rendimiento es abismal, y no solo porque no se beneficia de los índices. Casi todos los casos de uso comunes se pueden resolver de manera mucho más eficiente con una consulta o agregación de búsqueda común, especialmente una tan trivial como esta. Pero esto es un intercambio de seguridad de pila, no un flujo de pila, así que concentrémonos en las implicaciones de seguridad.

La declaración %code% pasa un fragmento de código javascript a la base de datos que la base de datos ejecutará una vez para cada documento de la colección. Afortunadamente, este script no tiene acceso al objeto %code% ni a otras funciones de shell peligrosas y funciona en copias de los documentos, por lo que el atacante al menos no puede cambiar el contenido de la base de datos como ocurre con muchas inyecciones de SQL. Pero, por ejemplo, es vulnerable a los ataques donde el atacante quiere devolver otros resultados de los previstos.

Vamos a hacer un ejemplo. Digamos que tenemos un blog. Nuestro blog tiene muchos artículos que se pueden leer en público, pero también tenemos algunos artículos privados que son para nuestro uso interno y que no deben publicarse. Así que tenemos un campo %code% en nuestros documentos que puede ser %code% o %code% dependiendo de si nuestros visitantes deben ver el artículo o no. Nuestra consulta de MongoDB para obtener una lista de todos los artículos en una categoría determinada para mostrarla al visitante del sitio web es así:

%pre%

Eso debería asegurarnos de que nadie vea nuestros artículos ocultos. O lo hace? Cuando el usuario controla la variable %code% , puede establecerla en esta cadena:

%pre%

El fragmento de código Javascript resultante que se envía a la base de datos es el siguiente:

%pre%

Cuando tiene un fragmento de código javascript con varios comandos separados por %code% , se ejecutarán como una función y se necesita una declaración %code% para determinar qué valor se devolverá al llamante. Esta función siempre devolverá verdadero. Eso significa que el usuario también verá todos los artículos de nuestra colección, incluidos aquellos que se supone que están ocultos.

    
______ answer83261 ___
  

¿Puede alguien darme un ejemplo como qué entrada puede causar los problemas?

Para su pieza concreta de código, esto debería funcionar:

%pre%

%code% se usa para escapar de la cadena y la instrucción, luego sigue el ataque real %code% (ataque DOS), y luego el %code% aún en pie se transforma en una sintaxis válida a través de %code% .

Hasta la versión 2.4 de MongoDB, el objeto %code% era realmente global, por lo que podría cambiar los datos en la base de datos, e incluso recuperar datos usando inyección ciega .

Como ya no es posible, lo máximo que puede hacer un atacante es DOS y la evasión del filtro descrita por Philipp (lo que no sería un problema para su ejemplo, pero puede ser un problema en general).

Eso todavía es bastante malo, por lo que deberías defenderte escapando %code% , %code% y %code% .

    
___

Aquí está el fragmento de código para acceder a MongoDB. client = MongoClient() db = client.test_database collection = db.test # Get data from fields condition = form.getvalue('name') if condition: where = {"$where": "this.name == '"+cond...
hecha 07.03.2015 - 00:35
3
respuestas

Demostrando la necesidad de actualizar Django

La historia: En uno de nuestros proyectos, estamos usando el framework web Django. Pero, actualmente estamos bloqueados en 1.6.11 (principalmente porque en 1.7 se abandonó el soporte de Python 2.6, estamos trabajando en ello, pero va muy le...
hecha 21.12.2016 - 20:35
1
respuesta

¿Es seguro usar los administradores de paquetes de Python como pip, easy_install o conda?

Sé que no es seguro instalar software (incluidos los paquetes de Python) de fuentes no confiables o comprometidas. Sin embargo, me pregunto qué tan seguro estoy cuando instalo un paquete confiable desde Python Package Index o desde el reposit...
hecha 05.02.2018 - 11:46
3
respuestas

Pruebas de inyección continua de SQL

Tenemos un conjunto de aplicaciones web internas de Python / Django que están bastante bien probadas en cuanto a funcionalidad, pero de vez en cuando descubrimos vulnerabilidades y, específicamente, lugares donde pueden ocurrir SQL y otros tipos...
hecha 19.12.2017 - 02:57