Pregunta

Como parte de mi clase de seguridad que teníamos para explotar una serie de vulnerabilidades en una versión menos seguro de ubuntu. He resuelto todos los problemas, sin embargo, me encontré con un problema que estoy esperando que alguien puede arrojar algo de luz sobre.

Cada desafío era un binario setgid, que cuando se toma durante daría al atacante el siguiente nivel de privilegio. Con el fin de agregarse al grupo de ese nivel, se podría ejecutar el comando de l33t que esencialmente corrió adduser <user> <group>.

En una de mis hazañas, mi código shell simplemente hizo una llamada a l33t ejecutivo y he recibido este mensaje: dependencia inseguros en printf mientras se ejecuta en setgid /usr/share/perl5/Debian/AdduserCommon.pm línea 64.

Para evitar el problema, he creado una cáscara de bourne dos líneas que funcionó bien:

#!/bin/sh
l33t

Puede alguien explicar por qué vi el problema de dependencia inseguro?

¿Fue útil?

Solución

Si no lo sabe ya sobre mancha modo : hacía que a todos la entrada del usuario para ser marcado como “contaminada”, y se negará a cualquier valor de salida “manchado” (siendo la implicación que debe explícitamente “untaint” de entrada no fiable).

De todos modos, la línea 64 de AdduserCommon.pm es un sprintf en la función dief ... Así que sospecho que lo que está sucediendo es que, cuando se llama directamente l33t, el guión adduser se encuentra con algún tipo de error, entonces el error mancha se produce cuando intenta adduser al informe de ese error.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top