Documente Academic
Documente Profesional
Documente Cultură
shell inversa
Enviado por Edu4rdSHL el Mié, 15/05/2019 - 00:05
Inyección de comandos
La inyección de comandos es una técnica utilizada por los hackers/crackers para
ejecutar comandos del sistema en un servidor, generalmente a través de una
aplicación web o algún tipo de GUI. Esto puede suceder cuando una aplicación
proporciona funcionalidades para el usuario que implican el uso de comandos del
sistema. Cuando la entrada no se limita correctamente, se permite la ejecución de
comandos que originalmente no estaban destinados a ejecutarse.
Dado que la aplicación básicamente actúa como una especie de shell improvisado,
este tipo de ataque puede llevar a consecuencias catastróficas. Dependiendo del
nivel de privilegio que tenga la aplicación, un atacante puede hacer cualquier
cosa, incluso ver archivos de configuración, modificar o eliminar datos, o incluso
obtener un shell o crear una puerta trasera.
ping
ls
whoami
Hasta ahora, todos los comandos que hemos ejecutado han sido de bajo impacto,
útiles para recopilar información sobre el servidor pero no mucho más. ¿Qué pasaría
si pudiéramos obtener una shell en el sistema y vulnerarlo por completo? Bueno,
usando la popular herramienta Netcat, podemos hacer eso.
Una bind shell es una shell de comados que se abre en el sistema víctima,
normalmente en un puerto especifico. En este caso la máquina atacante realiza la
conexión al servidor y puerto especificos para obtener la shell del sistema. Como
contraparte, este tipo de ataques pueden ser fácilmente detectados por un firewall
que bloquee conexiones entrantes, por lo tanto este tipo de shells no son muy
usadas.
Una reverse shell hace todo lo contrario a la anterior. El sistema víctima es quien
realiza la conexión con la máquina atacante que ha sido preparada previamente para
quedar a espera de una conexión. Debido a que establece una conexión saliente, es
más difícil de bloquear para un firewall ya que probablemente no filtre las
conexiones salientes. Esta es la opción preferida al momento de obtener una shell.
Primero, usamos el siguiente comando en nuestro sistema local para abrir un puerto
de espera para las conexiones entrantes. El uso de Netcat es nc , el distintivo -l
abre un puerto y -p 1234 le indica que use el puerto 1234, pero cualquier puerto
aleatorio funcionará.
nc -l -p 1234
A continuación, en la utilidad de ping de la aplicación web, agregue el siguiente
comando para generar un shell en el servidor y conectarse de nuevo a nuestra
máquina:
Las prácticas seguras de codificación y las revisiones de códigos son cada vez más
vitales para el proceso de desarrollo; Limitar lo que se puede explotar desde el
principio es una gran manera de reforzar la postura general de seguridad de una
organización y sus aplicaciones. Así mismo, el uso de API fiables que proporcionan
entradas parametrizadas es siempre una apuesta segura, así como la ejecución de
aplicaciones con los privilegios más bajos posibles.
· Conclusión
Una y otra vez hemos visto cómo una entrada mal validada puede llevar a la
explotación, especialmente cuando se trata de aplicaciones web. La inyección de
comandos se basa en la funcionalidad que implica los comandos del sistema
operativo, generalmente a través de una aplicación web o GUI. Cuando se permite la
ejecución de comandos no deseados en el sistema, un atacante puede ser el
propietario del servidor y obtener un shell, como demostramos con Netcat. Esto solo
muestra cómo implementaciones aparentemente inofensivas pueden verse comprometidas
y explotadas.
Con esto finalizamos este artículo, cualquier duda o inquietud dejarla en los
comentarios. Registrate en el foro, síguenos en Facebook, Twitter, unete a nuestro
chat en Discord y no olvides compartirnos en las redes sociales.
Etiquetas
hacking webSeguridad Informaticadvwa
Acerca del autor
Edu4rdSHL
Especialista en Seguridad Informática bajo certificación OSCP, experto en técnicas
de privacidad y seguridad en la red, analista de criptografía, Fundador de Security
Hack Labs. Desarrollador de BlackArch Linux. Twitter: @edu4rdshl XMPP:
edu4rdshl@conversations.im Threema ID: 736WU8VV