Hoy se publicaron tres nuevos advisories sobre vulnerabilidades en cámaras IP. Esta vez le tocó el turno a Zavio, TP-LINK y MayGion.
Pueden leer los detalles de cada bug en los siguientes links:
Hasta pronto!.
Mostrando entradas con la etiqueta Vulnerabilidades. Mostrar todas las entradas
Mostrando entradas con la etiqueta Vulnerabilidades. Mostrar todas las entradas
martes, 28 de mayo de 2013
Más vulnerabilidades en cámaras IP - Zavio, TP-LINK, MayGion
Etiquetas:
ipcams,
maygion,
tp-link,
Vulnerabilidades,
zavio
miércoles, 1 de mayo de 2013
Advisories - Vulnerabilidades en IP cams: D-Link & Vivotek
Hola!,
ayer se publicaron dos advisories sobre un par de bugs que encontramos con Francisco Falcón en cámaras IP D-Link y Vivotek.
Las vulnerabilidades son las siguientes:
D-Link:
Vivotek:
ayer se publicaron dos advisories sobre un par de bugs que encontramos con Francisco Falcón en cámaras IP D-Link y Vivotek.
Las vulnerabilidades son las siguientes:
D-Link:
- CVE-2013-1599: execute arbitrary commands from the administration web interface
- CVE-2013-1600: access the video stream via HTTP
- CVE-2013-1601: access the ASCII video stream via image luminance
Vivotek:
- CVE-2013-1597: dump the camera's memory and retrieve user credentials
- CVE-2013-1598: execute arbitrary commands from the administration web interface (pre-authentication with firmware 0300a and post-authentication with firmware 0400a)
Etiquetas:
Advisory,
auth-bypass,
coffeepotbug,
ipcams,
path-traversal,
rce,
Vulnerabilidades
miércoles, 29 de junio de 2011
[Advisory] HP Data Protector EXEC_CMD Buffer Overflow Vulnerability
Hola!,después de un par de meses sin ningún post volvemos con algunas noticias.
En esta pequeña entrada les quiero hablar un poco de un bug que encontré haciendo research de otro bug (ZDI-11-055).
El bug ZDI-11-055 es un path traversal que termina en Remote Code Execution.
El paquete que se envia para triggerear el Path Traversal contiene un Path (el ejecutable que queremos lanzar en la maquina remota), si este path es lo suficientemente largo, puede producir un stack overflow.
Pueden encontrar el advisory con el analisis del bug acá.
Algo importante para mencionar es que al momento de escribir este post no hay patch oficial para este bug.
Aprovecho para comentarles que en breve voy a publicar un par de tutoriales que tal vez les puedan interesar!. Asi que atenti!.
Saludos.
Etiquetas:
0day,
Advisory,
Data-Protector,
EXEC_CMD,
HP,
Vulnerabilidades
lunes, 13 de diciembre de 2010
Advisory - Symantec Intel Handler Service Remote DoS

Hola!,
quería dejarles el ultimo advisory de una vulnerabilidad que descubrí hace ya un tiempo investigando otro bug.
El análisis y una descripción tenica la pueden encontrar acá: Symantec Intel Handler Service Remote DoS
Saludos.
martes, 3 de agosto de 2010
HP OpenView NNM OvJavaLocale Buffer Overflow Vulnerability
Hola!,
este post es para dejarles el advisory de un bug que encontre (fixeado de manera silenciosa) por la gente de HP.
Link al avisory: HP OpenView NNM OvJavaLocale Buffer Overflow Vulnerability
Saludos.
este post es para dejarles el advisory de un bug que encontre (fixeado de manera silenciosa) por la gente de HP.
Link al avisory: HP OpenView NNM OvJavaLocale Buffer Overflow Vulnerability
Saludos.
Etiquetas:
HP,
NNM,
OpenView,
Vulnerabilidades,
Windows
lunes, 14 de junio de 2010
XnView MBM Processing Heap Overflow
Hola!,queria solo dejarles un advisory en el cual participe haciendo el analisis tecnico de la vulnerabilidad.
El que descubrio el bug no he sido yo sino un amigo, Mauro Olea, y entre los dos hemos escrito el advisory de dicho bug.
Link al advisory: XnView MBM Processing Heap Overflow
Saludos.
Etiquetas:
Vulnerabilidades
miércoles, 12 de mayo de 2010
Adobe Director Memory Corruption Vulnerability

Hola!,
Solo queria dejarles el link al advisory de un bug que descubri un par de meses atras y del cual ayer salio el advisory.
Adobe Director Memory Corruption Vulnerability
UPDATE 12/08/2010: Se realizo un update del advisory con informacion tecnica adicional. El analisis lo hizo un amigo, marciano, asi que gracias a el por la ayuda!.
---------------------------------------------------------------------------------
Adobe Director DIRAPI.DLL Invalid Read Vulnerability
1. Advisory Information
Title: Adobe Director DIRAPI.DLL Invalid Read Vulnerability
Advisory Id: CORE-2010-0405
Advisory URL: http://www.coresecurity.com/content/adobe-director-memory-corruption
Date published: 2010-05-11
Date of last update: 2010-05-11
Vendors contacted: Adobe
Release mode: Coordinated release
2. Vulnerability Information
Class: Input validation error [CWE-20]
Impact: Denial of service
Remotely Exploitable: Yes (client-side)
Locally Exploitable: No
CVE Name: CVE-2010-0128
Bugtraq ID: N/A
3. Vulnerability Description
Adobe Director is prone to a vulnerability due to an invalid read in DIRAPI.DLL, when opening a malformed .dir file. This vulnerability could be used by a remote attacker to execute arbitrary code, by enticing the user of Adobe Director to open a specially crafted file.
4. Vulnerable packages
* Adobe Director 11.5
* Adobe Director 11 (Version: 11.0.0.426)
5. Non-vulnerable packages
* Adobe Director 11.5 (Version: 11.5.7.609)
6. Solutions and Workarounds
See the Adobe Security Bulletin [1] available at http://www.adobe.com/go/apsb10-12/.
7. Credits
This vulnerability was discovered and researched by Nahuel Riva, from Core Security Technologies. Publication was coordinated by Jorge Lucangeli Obes.
8. Technical Description
The vulnerability occurs at offset 0x68174813 of the dirapi.dll module of Adobe Director. Improper validation of input data leads to a crash in the memory read instruction. This vulnerability could result in arbitrary code execution, although it was not verified.
Version: 11.0.0.426
Module crash: Dirapi.dll Version: 11.0.0.426
Crash:
68174813 |. 8906 |MOV DWORD PTR DS:[ESI],EAX
68174815 |> 8B4C24 14 |MOV ECX,DWORD PTR SS:[ESP+14]
68174819 |. 51 |PUSH ECX
6817481A |. E8 3197F5FF |CALL
6817481F |. 8946 04 |MOV DWORD PTR DS:[ESI+4],EAX
68174822 |. 83C6 08 |ADD ESI,8
68174825 |. 4D |DEC EBP
68174826 |.^ 75 C8 \JNZ SHORT DIRAPI.681747F0
EAX=00000000
DS:[02889B20]=???
Registers:
EAX 00000000
ECX 00000068
EDX 00000001
EBX FFE4B4D4
ESP 0012DFB8
EBP 0000373D
ESI 02889B20
EDI 01BC9964
EIP 68174813 DIRAPI.68174813
C 0 ES 0023 32bit 0(FFFFFFFF)
P 1 CS 001B 32bit 0(FFFFFFFF)
A 0 SS 0023 32bit 0(FFFFFFFF)
Z 1 DS 0023 32bit 0(FFFFFFFF)
S 0 FS 003B 32bit 7FFDD000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_NEGATIVE_SEEK (00000083)
EFL 00250246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty -??? FFFF 00000000 00000000
ST1 empty -??? FFFF 00000000 00000000
ST2 empty -??? FFFF 00000000 00000000
ST3 empty -??? FFFF 00000000 00000000
ST4 empty 0.0000106994366433355
ST5 empty 0.6322773098945617676
ST6 empty -0.0034003453329205513
ST7 empty 1041416.9375000000000
3 2 1 0 E S P U O Z D I
FST 4220 Cond 1 0 1 0 Err 0 0 1 0 0 0 0 0 (EQ)
FCW 007F Prec NEAR,24 Mask 1 1 1 1 1 1
Stack Trace:
Call stack of main thread
Address Stack Procedure / arguments Called from Frame
0012DFC4 68175563 DIRAPI.681747A0 DIRAPI.6817555E
0012DFE4 6817003B DIRAPI.68175290 DIRAPI.68170036
0012E018 6817020D DIRAPI.6816FF40 DIRAPI.68170208
0012E01C 00A923C8 Arg1 = 00A923C8
0012E020 00000011 Arg2 = 00000011
0012E024 00000003 Arg3 = 00000003
0012E028 0012E050 Arg4 = 0012E050
0012E02C 00001100 Arg5 = 00001100
0012E048 680F6D50 DIRAPI.681701A0 DIRAPI.680F6D4B
0012E04C 00000000 Arg1 = 00000000
0012E050 00000003 Arg2 = 00000003
0012E054 00000091 Arg3 = 00000091
0012E058 0012E07C Arg4 = 0012E07C
0012E05C 00001100 Arg5 = 00001100
0012E068 6800CFC0 DIRAPI.680F6D30 DIRAPI.6800CFBB
0012E088 680817EC DIRAPI.6800CF80 DIRAPI.680817E7
0012E0B4 680823E3 DIRAPI.68081760 DIRAPI.680823DE
0012E0C8 680836A7 DIRAPI.68082380 DIRAPI.680836A2
0012E638 680839E2 DIRAPI.68082EA0 DIRAPI.680839DD 0012E634
0012E63C 00A86E8C Arg1 = 00A86E8C
0012E640 0012F5EC Arg2 = 0012F5EC
0012E644 00000000 Arg3 = 00000000
0012E648 00000000 Arg4 = 00000000
0012E64C 0000001A Arg5 = 0000001A
0012E674 68042D8C DIRAPI.68083970 DIRAPI.68042D87 0012F5EC
0012E678 00A86E8C Arg1 = 00A86E8C
0012E67C 0012F5EC Arg2 = 0012F5EC
0012E680 00000000 Arg3 = 00000000
0012E684 00000000 Arg4 = 00000000
0012E688 0000001A Arg5 = 0000001A
0012E6B0 6800A111 DIRAPI.68042C90 DIRAPI.#88+7C
0012E6B4 00A92588 Arg1 = 00A92588
0012E6B8 0012F5EC Arg2 = 0012F5EC
0012E6BC 00000000 Arg3 = 00000000
0012E6C0 0000001A Arg4 = 0000001A
0012E6DC 2018BB23
0012E83C 2027E776 ? Director.2018BAB0 Director.2027E771
9. Report Timeline
* 2010-04-14: Vendor contacted.
* 2010-04-14: Vendor requests PoC file.
* 2010-04-14: Core replies with the PoC file and the draft advisory.
* 2010-04-14: Adobe replies that will investigate the issue and sets a preliminary release date for June/July.
* 2010-04-15: Core agrees with the preliminary release date.
* 2010-04-28: Core requests an update on the situation, and asks whether Adobe was able to confirm if the bug is exploitable.
* 2010-04-28: Adobe replies that the issue was investigated and is scheduled to be fixed in the next release of Adobe Shockwave Player, planned for May; they did not carry out further exploitability research.
* 2010-04-28: Core requests a specific publication date for the fix.
* 2010-05-06: Adobe informs Core that the release date for the fix has been set to May 11th.
* 2010-05-07: Core asks Adobe if they want to provide the text for the "Solutions and Workarounds" section of the advisory.
* 2010-05-07: Adobe replies with the text for the "Solutions and Workarounds" section of the advisory.
* 2010-05-11: Advisory published.
10. References
[1] Adobe Security Bulletin http://www.adobe.com/go/apsb10-12/.
11. About CoreLabs
CoreLabs, the research center of Core Security Technologies, is charged with anticipating the future needs and requirements for information security technologies. We conduct our research in several important areas of computer security including system vulnerabilities, cyber attack planning and simulation, source code auditing, and cryptography. Our results include problem formalization, identification of vulnerabilities, novel solutions and prototypes for new technologies. CoreLabs regularly publishes security advisories, technical papers, project information and shared software tools for public use at: http://www.coresecurity.com/corelabs.
12. About Core Security Technologies
Core Security Technologies develops strategic solutions that help security-conscious organizations worldwide develop and maintain a proactive process for securing their networks. The company's flagship product, CORE IMPACT, is the most comprehensive product for performing enterprise security assurance testing. CORE IMPACT evaluates network, endpoint and end-user vulnerabilities and identifies what resources are exposed. It enables organizations to determine if current security investments are detecting and preventing attacks. Core Security Technologies augments its leading technology solution with world-class security consulting services, including penetration testing and software security auditing. Based in Boston, MA and Buenos Aires, Argentina, Core Security Technologies can be reached at 617-399-6980 or on the Web at http://www.coresecurity.com.
13. Disclaimer
The contents of this advisory are copyright (c) 2010 Core Security Technologies and (c) 2010 CoreLabs, and may be distributed freely provided that no fee is charged for this distribution and proper credit is given.
14. PGP/GPG Keys
This advisory has been signed with the GPG key of Core Security Technologies advisories team, which is available for download at http://www.coresecurity.com/files/attachments/core_security_advisories.asc.
---------------------------------------------------------------------------------
Chau!
Etiquetas:
Vulnerabilidades
martes, 15 de diciembre de 2009
Otra vez Adobe Reader, 0-day
Hola!,Solo un pequeño post para comentarles que hoy se dio a conocer un nuevo 0-day en Adobe PDF Reader y Professional que parece se estaba explotando desde inicios de Diciembre.
Aparentemente, el bug esta en la funcion Doc.media.newPlayer() y se trata de un memory corruption. Se puede explotar embebiendo codigo javascript que ejecute la funcion antes mencionada y ademas agregando codigo javascript para generar un heap spray.
Para mas informacion:
1- extraexploit analisis 1.
2- extraexploit analisis 2.
3- F-secure analisis.
4- Metasploit exploit module.
5- CVE Mitre.
Hasta la proxima!.
Etiquetas:
0day,
Exploits,
Vulnerabilidades
viernes, 13 de noviembre de 2009
Quick Post - Exploit Writing Tutorials
Hola!,Solo queria informarles acerca de una serie de tutoriales que Peter Van Eeckhoutte esta escribiendo desde hace un tiempo.
Hasta ahora ha publicado 7 tutoriales explicando lo basico en el arte de escribir exploits; vienen muy bien para la gente que quiera introducirse en este mundo del ninjitsu :P
Aca pueden encontrar la web de Peter y bajarse los tutoriales en formato PDF o leerlos on-line.
Para el que quiera bajarse todos los tutoriales en PDF, los puede bajar de aqui.
Ademas, aqui pueden encontrar una completa guia que muestra como hacer exploits para Metasploit y muchos aspectos mas de este framework.
Disfrutenlo!!!
Etiquetas:
Exploits,
Tutoriales,
Vulnerabilidades,
Windows
jueves, 15 de octubre de 2009
Nuevo differ - TurboDiff
Hola a todos!,hoy queria comentarles un poco acerca de un nueo differ que se ha publicado en la internet :P
Se trata de un nuevo differ (un programa para comparar .exe, .dll, etc en busca de diferencias) escrito por Nicolas Economou (CORE Security Technologies) y presentado en la Ekoparty 2009 en Argentina.
Basicamente, la mayor diferencia con el resto de los differs actuales (Bindiff, Patchdiff, DarumGrim) es que este differ esta pensado para la busqueda de vulnerabilidades, esta especialmente pensado y programado para que no se le pase el mas minimo detalle a la hora de identificar un minimo cambio como un JA por un JB, cosa que al resto de los differs suele pasarsele por alto en ocasiones, incluso detecta diferencias en funciones que no son analizadas correctamente por IDA (si, me falto decir que es un plugin de IDA :).
Yo lo he utilizado un poco y me parecio bastante mejor que bindiff, el unico punto debil son los graficos puesto que no se comparan con los de bindiff pero el punto fuerte es que es mucho mas preciso que bindiff y el resto de differs a la hora de buscar vulnerabilidades.
Un buen post al respecto lo pueden enconrar aqui.
El source code y el plugin compilado lo pueden encontrar en la web de Corelabs, aqui.
update1: para ser imparciales y no ejercer favoritismos :P debo de decir que hace unos dias estuve probando Bindiff 3.0 y he tenido los mismos resultados que con turbodiff en cuanto a funciones cambiadas, sin embargo, turbodiff sigue siendo un poco mas rapido en el analisis que bindiff pero sin duda este ultimo mejoro bastante desde la version 2.0.
Hasta la proxima!.
Etiquetas:
IDA,
News,
Plugins,
Tools,
Vulnerabilidades
viernes, 9 de octubre de 2009
El colador de CA (Computer Associates)
Hola!,
Queria contarles acerca de un bug que encontre mientras hacia un exploit para un producto de la compañia CA (Computer Associates - www.ca.com).
El producto en cuestion es el archi-conocido ARCserve Backup, un software corporativo para realizar backups.
Los que trabajan en esta cuestion de buscar bugs y hacer exploits saben de sobra que la mayoria de los productos ofrecidos por esta empresa (CA) pareciera que vienen programados por chicos de 15 años que solo saben utilizar strcpy() y gets(); ARCserve esta lleno de bugs y para comprobarlo, basta con solo colocar "arcserve backup vulnerability" en Google para ver la cantidad de advisories que mencionan vulnerabilidades en este software (acá).
En fin, quiero contarles un poco como fue que di con un bug extra en la misma función que ya tenía otro bug! XD.
La historia fue mas o menos asi:
Estaba tratando de hacer un exploit para CVE-2008-4397. Dicha vulnerabilidad nos permite ejecutar comandos de manera remota, sin autenticacion e incluso lograr dropear un .exe que nos de acceso completo a la maquina victima. Por ejemplo, si enviaramos el comando "cmd /c ntsd -c calc.exe" se ejecutaria el ntsd con la calculadora attacheada.
La funcion vulnerable es accesible mediante RPC (MSRPC). La interfaz que contiene dicha funcion es:
[
uuid(506b1890-14c8-11d1-bbc3-00805fa6962e),
version(1.0)
]
Esa interfaz se encuentra en la libreria Asdbapi.dll y es accesible mediante el servicio llamado "CA Message Service" que escucha en el puerto 6504/TCP y que corre con privilegios de SYSTEM.
La funcion vulnerable es la siguiente:
/* opcode: 0x156, address: 0x28EAAAB0 */
long sub_28EAAAB0 (
[in] handle_t arg_1,
[in][ref][string] char * arg_2,
[in][ref][string] char * arg_3,
[in][ref][string] char * arg_4,
[in][ref][string] char * arg_5,
[in] long arg_6,
[in][ref][size_is(arg_1)] char * arg_7,
[in] long arg_8,
[in, out][ref] long * arg_9,
[out][ref][size_is(*arg_9)] char ** arg_10
);
}
Como podemos ver, el OPCODE que representa a la funcion es el 0x156. Si desensamblamos esta funcion con IDA, veremos que comienza de esta manera:
.text:28EAAAB0 ; int __stdcall sub_28EAAAB0(PRPC_MESSAGE Message)
.text:28EAAAB0 sub_28EAAAB0 proc near
.text:28EAAAB0
.text:28EAAAB0 Args= dword ptr -128h
.text:28EAAAB0 var_124= dword ptr -124h
.text:28EAAAB0 ppMemory= byte ptr -120h
.text:28EAAAB0 var_11C= dword ptr -11Ch
.text:28EAAAB0 var_118= dword ptr -118h
.text:28EAAAB0 var_114= dword ptr -114h
.text:28EAAAB0 pStubMsg= _MIDL_STUB_MESSAGE ptr -110h
.text:28EAAAB0 var_34= dword ptr -34h
.text:28EAAAB0 var_30= dword ptr -30h
.text:28EAAAB0 var_2C= dword ptr -2Ch
.text:28EAAAB0 var_28= dword ptr -28h
.text:28EAAAB0 lpBuffer= dword ptr -24h
.text:28EAAAB0 var_20= dword ptr -20h
.text:28EAAAB0 var_1C= dword ptr -1Ch
.text:28EAAAB0 var_18= dword ptr -18h
.text:28EAAAB0 var_10= dword ptr -10h
.text:28EAAAB0 var_4= dword ptr -4
.text:28EAAAB0 Message= dword ptr 8
.text:28EAAAB0
.text:28EAAAB0 push ebp
.text:28EAAAB1 mov ebp, esp
.text:28EAAAB3 push 0FFFFFFFFh
.text:28EAAAB5 push offset unk_28EC0BC0
.text:28EAAABA push offset _except_handler3
.text:28EAAABF mov eax, large fs:0
.text:28EAAAC5 push eax
.text:28EAAAC6 mov large fs:0, esp
.text:28EAAACD sub esp, 11Ch
.text:28EAAAD3 push ebx
.text:28EAAAD4 push esi
.text:28EAAAD5 push edi
.text:28EAAAD6 mov [ebp+var_18], esp
.text:28EAAAD9 push offset stru_28EBC410 ; pStubDescriptor
.text:28EAAADE lea eax, [ebp+pStubMsg]
.text:28EAAAE4 push eax ; pStubMsg
.text:28EAAAE5 mov esi, [ebp+Message]
.text:28EAAAE8 push esi ; pRpcMsg
.text:28EAAAE9 call ds:NdrServerInitiali
Esa parte corresponde al prologo de la funcion vulnerable. Si nos fijamos, un poco mas abajo realiza un par de comprobaciones sobre los tipos de datos enviados en el paquete, si se corresponde con los tipos esperados, entonces continuara por esta parte:
.text:28EAAC0F loc_28EAAC0F:
.text:28EAAC0F mov [ebp+var_4], ebx
.text:28EAAC12 lea edx, [ebp+ppMemory]
.text:28EAAC18 mov [ebp+var_28], edx
.text:28EAAC1B mov dword ptr [ebp+ppMemory], ebx
.text:28EAAC21 lea eax, [ebp+ppMemory]
.text:28EAAC27 push eax ; ppMemory
.text:28EAAC28 push esi ; int
.text:28EAAC29 push ecx ; int
.text:28EAAC2A mov ecx, [ebp+lpBuffer]
.text:28EAAC2D push ecx ; lpBuffer
.text:28EAAC2E push edi ; nNumberOfBytesToWrite
.text:28EAAC2F mov edx, [ebp+var_124]
.text:28EAAC35 push edx ; int
.text:28EAAC36 mov eax, [ebp+var_34]
.text:28EAAC39 push eax ; int
.text:28EAAC3A mov ecx, [ebp+var_30]
.text:28EAAC3D push ecx ; int
.text:28EAAC3E mov edx, [ebp+Args]
.text:28EAAC44 push edx ; Args
.text:28EAAC45 mov eax, [ebp+var_1C]
.text:28EAAC48 push eax ; int
.text:28EAAC49 call sub_28E19360
.text:28EAAC4E add esp, 28h
.text:28EAAC51 mov [ebp+var_11C], eax
.text:28EAAC57 mov [ebp+pStubMsg.BufferLength], 17h
.text:28EAAC61 cmp esi, ebx
.text:28EAAC63 jz short loc_28E
En la funcion sub_28E19360 es un wrapper que solo pushea los argumentos para la funcion ASDB_ReportRemoteExecuteCML:
.text:28E19360 ; int __cdecl sub_28E19360(int, char Args, int, int, int, DWORD nNumberOfBytesToWrite, LPCVOID lpBuffer, int, int, int ppMemory)
.text:28E19360 sub_28E19360 proc near
.text:28E19360
.text:28E19360 Args= byte ptr 8
.text:28E19360 arg_8= dword ptr 0Ch
.text:28E19360 arg_C= dword ptr 10h
.text:28E19360 arg_10= dword ptr 14h
.text:28E19360 nNumberOfBytesToWrite= dword ptr 18h
.text:28E19360 lpBuffer= dword ptr 1Ch
.text:28E19360 arg_1C= dword ptr 20h
.text:28E19360 arg_20= dword ptr 24h
.text:28E19360 ppMemory= dword ptr 28h
.text:28E19360
.text:28E19360 mov eax, [esp+ppMemory]
.text:28E19364 mov ecx, [esp+arg_20]
.text:28E19368 mov edx, [esp+arg_1C]
.text:28E1936C push eax ; ppMemory
.text:28E1936D mov eax, [esp+4+lpBuffer]
.text:28E19371 push ecx ; int
.text:28E19372 mov ecx, [esp+8+nNumberOfBytesToWrite]
.text:28E19376 push edx ; int
.text:28E19377 mov edx, [esp+0Ch+arg_10]
.text:28E1937B push eax ; lpBuffer
.text:28E1937C mov eax, [esp+10h+arg_C]
.text:28E19380 push ecx ; nNumberOfBytesToWrite
.text:28E19381 mov ecx, [esp+14h+arg_8]
.text:28E19385 push edx ; int
.text:28E19386 mov edx, dword ptr [esp+18h+Args]
.text:28E1938A push eax ; int
.text:28E1938B push ecx ; int
.text:28E1938C push edx ; Args
.text:28E1938D call ASDB_ReportRemoteExecuteCML
.text:28E19392 add esp, 24h
.text:28E19395 retn
.text:28E19395 sub_28E19360 endp
Esta funcion en la responsable de ejecutar los comandos enviados desde el exterior, por ejemplo, si enviamos: "..\\..\\..\\..\\..\\..\\..\\..\\..\\Windows\\system32\\cmd /c \"""\""""
Le estamos indicando el path (mas precisamente, el bug es del tipo path traversal) del cmd que sera el que nos ejecute el comando que le indiquemos con los parametros que le indiquemos.
Los "..\\" son para trigerear la primera de las vulnerabilidades, el path traversal, pero si nos fijamos un poco mas adentro, en una de las funciones (sub_28E3F6B0), tenemos un sprintf():
[...]
.text:28E3F8D9 lea edx, [esp+7C0h+Args]
.text:28E3F8E0 push offset aSSSRSOSS ; "%s\\%s -s -r %s -o %s %s"
.text:28E3F8E5 push edx ; Dest
.text:28E3F8E6 call ds:sprintf
[...]
El bug es obvio, no hay ningun tipo de chequeo sobre el tamaño del string que se va a copiar al stack, con lo cual, enviando como comando un string lo suficientemente "largo" lograriamos sobreescribir el RET de la funcion e incluso el exception handler y saltar a ejecutar codigo.
Previo a llegar a esta zona del bug, hay un chequeo(sub_28E01230) sobre uno de los argumentos que se envian, el paquete debe de contener el hostname de la maquina a la cual estamos atacando:
[...]
.text:28E01250 push eax
.text:28E01251 push offset Buffer
.text:28E01256 call ds:_mbsicmp
.text:28E0125C add esp, 8
.text:28E0125F test eax, eax
.text:28E01261 jz short loc_28
[...]
Si el salto se produce, entonces llegaremos a la zona vulnerable, en caso contrario nos hechara fuera.
Para conseguir el hostname podemos hacer un request utilizando SMB, utilizando python + impacket es sencillo.
Esto que les he comentado, lo probe en la version CA ARCserve Backup r11.5 sin ningun SP ni patch level.
El bug fue arreglado en el SP2 de 11.5 en el cual reescribieron la funcion vulnerable.
Aclaro que en realidad aca son dos bugs. Si se fijan en el PoC mas abajo, lo primero que hacemos es trigerear el path traversal y luego el overflow.
El PoC (Proof Of Concept) lo pueden encontrar aqui:
Bueno, eso es todo por el momento.
Hasta la proxima!.
Etiquetas:
Analisis,
Exploits,
Vulnerabilidades

