De una condición de carrera + LFI en phpinfo() a RCE

El indonesio Agus Setya R publicó una interesante técnica mediante la cual conseguía un RCE explotando una condición de carrera en phpinfo() en conjunción con un LFI.

¿Por qué puede ser peligrosa una simple página phpinfo()? Además de contener información muy sensible del servidor, resulta que phpinfo también puede manejar peticiones http como POST, GET, FILES y otros. Si enviamos una petición FILES a phpinfo, la petición se guardará en un archivo temporal durante un periodo de tiempo muy corto.

Gynvael Coldwind escribió un impresionante artículo sobre una Condición de Carrera que puede ser explotada usando la función de Subida de Archivos en PHP. Por cierto, php 5.5.9 es vulnerable a este problema.

Si cargamos un archivo, los datos se almacenan en un archivo temporal. Es decir, podemos insertar un archivo y luego llamar al archivo utilizando una vulnerabilidad del tipo LFI (Inclusión de archivos locales). Sin embargo, este proceso debe realizarse en un tiempo muy, muy rápido, antes de que el sistema elimine automáticamente el archivo temporal.
Archivo temporal creado como resultado de subir en phpinfo.

El escenario de ataque necesita por tanto multihilo para que el proceso llevado a cabo por el script del exploit pueda ser muy rápido. Lo que se hace es crear archivos temporales los cuales seguramente no se acumularán en el servidor porque en segundos desaparecerán rápidamente. En el proceso, se realiza una petición utilizando el LFI. Si de uno de los archivos temporales se llama con éxito entonces basta con que sea nuestro payload para obtener la preciada shell.

Writeup: http://dann.com.br/php-winning-the-race-condition-vs-temporary-file-upload-alternative-way-to-easy_php-n1ctf2018/
Exploit Code: https://gist.githubusercontent.com/intrd/35483ae252c66ee3d11f7acfa7379749/raw/76488b0d95a9fd7e5a2bd3c8bbc929a45590238f/phpinfo_exploit.py
Fuente: https://medium.com/@agussetyar/local-file-inclusion-via-phpinfo-exploit-race-condition-to-remote-code-execution-6d5470445afe

Comentarios