Ejecute el comando bash cuando haya espacios y '' / \? & | se filtran?

4

Tengo algún código PHP que ejecuta comandos bash y tiene un error que puede hacerlo vulnerable a la ejecución remota de código.

El comando ejecutado sería $(id) , pero si ejecuto cualquier otro comando como ls -la , el espacio se reemplaza automáticamente con - . También comprobé la fuente y descubrí que, además de los espacios, se filtran los siguientes caracteres: ''/\<>?&| .

¿Cómo puedo omitir el filtro y ejecutar un comando como wget link ?

Demostración en vivo.

    
pregunta user2444995 09.04.2018 - 03:55
fuente

1 respuesta

4

Si los espacios están filtrados pero no las pestañas, solo use una pestaña. Si ambos se filtran pero $ no, puedes usar ${IFS} .

Si puede hacer sustituciones de comandos y espacios, puede ser útil usar varios especificadores de formato printf , tr con rangos y eval para alcanzar caracteres prohibidos.

    
respondido por el Gilles 09.04.2018 - 07:11
fuente

Lea otras preguntas en las etiquetas