####################################################################### 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 5th field used in opcode 0x6c (PROXY_CMD_GET_NEXT_STEP) 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: 00407296 |. 68 D86A4200 PUSH novell-p.00426AD8 ; "[RNT] Error String:" 0040729B |. E8 F0B10000 CALL novell-p.00412490 004072A0 |. 8B4C24 2C MOV ECX,DWORD PTR SS:[ESP+2C] 004072A4 |. 51 PUSH ECX ; our unicode string 004072A5 |. 8D9424 D8000000 LEA EDX,DWORD PTR SS:[ESP+D8] 004072AC |. 52 PUSH EDX ; stack destination buffer of 1024 bytes 004072AD |. E8 BE9A0000 CALL novell-p.00410D70 ; strcpy-like function ####################################################################### =========== 3) The Code =========== http://aluigi.org/poc/zenworks_6.dat nc SERVER 998 < zenworks_6.dat ####################################################################### ====== 4) Fix ====== ??? #######################################################################