IExpress

IExpress, a component of Windows 2000 and later versions of the operating system, is used to create self-extracting packages from a set of files. Such packages can be used to install software.

Overview
IExpress can be used for distributing self-contained installation packages (INF-based setup executables) to multiple local or remote Windows computers. It creates a self-extracting executable (.EXE) or a compressed Cabinet (.CAB) file using either the provided front end interface (IExpress Wizard), or a custom Self Extraction Directive (SED) file. SED files can be modified with any plain text/ASCII editor, like Notepad. All self-extracting files created by IExpress use CAB compression algorithms, are compressed using the Cabinet Maker tool, and are extracted using the WExtract  tool.

is located in the  folder of both 32 and 64-bit installations of Windows. The front end interface (IExpress Wizard) can be started by manually navigating to the respective directory and opening the executable (IExpress.exe), or by typing IExpress into the Run window of the Start Menu. It can also be used from the command line (Windows Command Prompt or batch file) to create custom installation packages, eventually unattended. (automated operation):

IExpress Wizard interface guides the user through the process of creating a self-extracting package. It asks what the package should do: extract files and then run a program, or just extract files. It then allows the user to specify a title for the package, add a confirmation prompt, add a license agreement that the end-user must accept in order to allow extraction, select files to be archived, set display options for the progress window, and finally, specify a message to display upon completion.

If the option to create an archive and run a program is selected, then there will be an additional step, prompting the user to select the program that will be run upon extraction.

Security
The self-extracting packages created with IExpress have (inherent) vulnerabilities which allow arbitrary code execution because of the way they handle their installation command and their command line processing. Additionally, because of the way Windows User Account Control handles installers, these vulnerabilities allow a privilege escalation.

More specifically, the vulnerability comes in two versions: the most obvious one is that a /c: switch tells the package to run an arbitrary command in the extracted directory; the other is that the directory is predictable and writable by any ordinary user, so that the usual msiexec.exe command can be replaced by an attack payload. The latter has been fixed by Microsoft in MS14-049, but the former is only addressed by a policy to deprecate IExpress. There is also a DLL hijacking exploit possible with IExpress.