
7-Zip hasta 21.07 en Windows permite la escalada de privilegios y la ejecución de comandos cuando un archivo con la extensión .7z se arrastra al área Help>Contents.
No he publicado ningún código poc en ningún lugar para el ataque de escalada de privilegios. Los códigos poc encontrados no tienen nada que ver con la escalada de privilegios. Para su información.
7-Zip es un archivador de archivos libre y gratuito. La versión de Símbolo del sistema de 7-Zip está pensada para sistemas similares a Unix, incluso AmigaOS está incluida entre estos. También se puede ejecutar para DOS mediante el Puerto DOS compatible o con el extensor HX-DOS en el Símbolo del sistema de Windows.
Escribiré en turco, para que ustedes también aprendan un poco de turco.
Primero quiero mencionar mi historia de encontrar la vulnerabilidad. Vi un payload que realizaba la vulnerabilidad XXE en WinRAR. También permitía ejecutar comandos a través de JavaScript usando ActiveXObject y WScript.Shell mediante el archivo HTML Helper. Esto no era diferente del HTA utilizado en los lolbins, pensé en cómo podría convertir la situación a mi favor.
(https://www.exploit-db.com/exploits/47526)
En realidad, mi objetivo era obtener una reverse-shell desde el ordenador objetivo después de hacer doble clic en las extensiones de tecnologías de compresión como 7z, zip, rar, etc., y pensaba si podría usar el archivo HTML Helper para ello. Después de largos procesos de fuzzing con WinAFL, descubrí que había un heap-overflow en FzGM.exe, pero no tenía sentido porque después del heap overflow mi autoridad seguiría siendo la misma desde el mismo usuario. Por eso no usé CreateRemoteThread, porque necesitaba llamar a la API y para poder desencadenar esta API necesitaba un archivo chm. Cuando examiné el código fuente, noté que había operaciones incorrectas al llamar a la API de Windows especialmente en dos lugares, y esto creaba directamente un problema de autorización. Este punto de descubrimiento crea un proceso hijo (child process) bajo FzGM.exe, como se ve en la siguiente imagen. Normalmente esperaríamos que este proceso ocurriera en hh.exe.


Si no incluyera la API y la configuración se hiciera correctamente mediante la función, esperaría que creara un proceso hijo bajo hh.exe, pero el archivo 7-zip.chm lo llama por sí mismo. Un ejemplo típico: si edita el archivo 7-zip.chm y aplica una ejecución de comandos, podrá verlo entonces. Después del heap overflow, aproveché el problema de autorización de la API llamada y luego la configuración defectuosa dentro del archivo 7z.dll, en lo que he estado trabajando durante mucho tiempo. No tiene sentido hacer CreateRemoteThread(). Lo que necesito ejecutar y llamar dentro de mi payload no es la propia API de HTML Helper, sino el punto donde esta API está enganchada (hook) a través de 7-zip, y poder ejecutar ese punto. Pero como este payload solo funciona con la integración de hh.exe, por eso funciona con funciones como arrastrar y soltar. La invocación del archivo 7-zip.chm a través del botón HELP en 7-zip, y mi redirección de la dirección llamada aquí al "base pointer" que presenta el problema de autorización dentro del payload, nos lleva a un usuario superior. El siguiente paso es que psexec esté dentro del payload y, con el comando psexec -s cmd.exe, elevarse a privilegios de sistema como nt authority/system.

poc video:
La mayoría de las preguntas eran sobre la advertencia de ActiveX; este problema se puede resolver de la forma más básica así. Antes de que el payload se ejecute;
<'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0' -Name '1201' -Value '0' -PropertyType "DWord"> proporciona el control; si este valor es 1, aparece el popup en pantalla; si se asigna un nuevo valor como 0, se omite (bypass). Pero cabe señalar que afecta al usuario que esté ejecutando el payload en ese momento.
Le comuniqué los puntos necesarios al desarrollador y esto también fue aceptado por el lado de CVE. No puedo entender que las personas se crean autoridad y que se genere la percepción de que debería entregarles el exploit. A pesar de que ya había indicado que lo publicaría después de la actualización, esta falta de respeto cometida antes de que la actualización se haya realizado, creo que proviene de considerarse a sí mismos una autoridad. Puede que nunca quiera publicar el código poc del ataque de escalada de privilegios; es mi libre voluntad y no me importa en absoluto lo que nadie piense al cuestionar si esto es correcto.
Primer método: Si 7-zip no recibe una actualización, se puede eliminar el archivo 7-zip.chm. Segundo método: Todos los usuarios dentro del programa deben tener acceso con permisos de lectura y ejecución.
La regla sigma relevante https://github.com/kagancapar/CVE-2022-29072/blob/main/7z_CVE-2022-29072.yml