####################################################################### Luigi Auriemma Application: Novell ZENworks Configuration Management http://www.novell.com/products/zenworks/configurationmanagement/ Versions: <= 11.0.0.1992 Platforms: Windows, Linux, NetWare Bug: stack overflow Exploitation: remote, versus server Date: probably found 20 Apr 2011 Author: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduction 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduction =============== ??? ####################################################################### ====== 2) Bug ====== novell-pbserv.exe is a service listening on port 998. The 4th field used in opcode 0x4c (PROXY_CMD_PREBOOT_TASK_INFO2) is an unicode string that gets converted in char using a function that doesn't check the 1024 bytes size of the destination buffer (something like a strcpy) resulting in a classical stack overflow: 00405101 |. 68 AC634200 PUSH novell-p.004263AC ; "[RPTI2] DTK Error String:" 00405106 |. E8 85D30000 CALL novell-p.00412490 0040510B |. 8B4C24 2C MOV ECX,DWORD PTR SS:[ESP+2C] 0040510F |. 51 PUSH ECX ; our unicode string 00405110 |. 8D5424 44 LEA EDX,DWORD PTR SS:[ESP+44] 00405114 |. 52 PUSH EDX ; stack destination buffer of 1024 bytes 00405115 |. E8 56BC0000 CALL novell-p.00410D70 ; strcpy-like function ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/zenworks_5.dat nc SERVER 998 < zenworks_5.dat ####################################################################### ====== 4) Fix ====== ??? #######################################################################