Skip to content

Commit 10511e8

Browse files
committed
Merge remote branch 'origin/bug/fix-double-slashes'
Ran the new normalize_uri() specs, all passes, so I'm quite confident in this change.
2 parents 36bcc1f + 858cef8 commit 10511e8

23 files changed

+246
-51
lines changed

lib/msf/core/exploit/http/client.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,23 @@ def target_uri
535535
end
536536
end
537537

538+
#
539+
# Make sure the URI starts with a slash and doesn't end with one
540+
#
541+
def normalize_uri(str)
542+
543+
unless str.to_s[0,1] == "/"
544+
str = "/" + str.to_s
545+
end
546+
547+
str = str.gsub(/^\/+/, '/')
548+
unless str.length == 1
549+
str = str.gsub(/\/+$/, '')
550+
end
551+
552+
str
553+
end
554+
538555
#
539556
# Returns the target host
540557
#

modules/auxiliary/admin/sap/sap_mgmt_con_osexec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def run_host(ip)
7676

7777
begin
7878
res = send_request_raw({
79-
'uri' => "/#{datastore['URI']}",
79+
'uri' => normalize_uri(datastore['URI']),
8080
'method' => 'POST',
8181
'data' => data,
8282
'headers' =>
@@ -141,7 +141,7 @@ def osexecute(rhost, cmd_to_run)
141141

142142
begin
143143
res = send_request_raw({
144-
'uri' => "/#{datastore['URI']}",
144+
'uri' => normalize_uri(datastore['URI']),
145145
'method' => 'POST',
146146
'data' => data,
147147
'headers' =>

modules/auxiliary/scanner/http/sap_businessobjects_user_brute.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ def enum_user(user='administrator', pass='pass')
7979

8080
begin
8181
res = send_request_raw({
82-
'uri' => "/#{datastore['URI']}/services/Session",
83-
'method' => 'POST',
82+
'uri' => normalize_uri(datastore['URI']) + "/services/Session",
83+
'method' => 'POST',
8484
'data' => data,
8585
'headers' =>
8686
{

modules/auxiliary/scanner/http/sap_businessobjects_user_enum.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ def initialize
4949

5050
def run_host(ip)
5151
res = send_request_cgi({
52-
'uri' => "/#{datastore['URI']}/services/listServices",
53-
'method' => 'GET',
52+
'uri' => normalize_uri(datastore['URI']) + "/services/listServices",
53+
'method' => 'GET',
5454
'headers' => {
5555
'User-Agent' => datastore['UserAgent']
5656
}
@@ -81,9 +81,9 @@ def enum_user(user='administrator', pass='invalid-sap-password-0d03b389-b7a1-4ec
8181

8282
begin
8383
res = send_request_raw({
84-
'uri' => "/#{datastore['URI']}/services/Session",
85-
'method' => 'POST',
86-
'data' => data,
84+
'uri' => normalize_uri(datastore['URI']) + "/services/Session",
85+
'method' => 'POST',
86+
'data' => data,
8787
'headers' =>
8888
{
8989
'Content-Length' => data.length,

modules/auxiliary/scanner/http/sap_businessobjects_version_enum.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ def rport
4848

4949
def run_host(ip)
5050
res = send_request_cgi({
51-
'uri' => "/#{datastore['URI']}/services/listServices",
52-
'method' => 'GET',
51+
'uri' => normalize_uri(datastore['URI']) + "/services/listServices",
52+
'method' => 'GET',
5353
'headers' => {
5454
'User-Agent' => datastore['UserAgent']
5555
}
@@ -77,9 +77,9 @@ def enum_version(rhost)
7777

7878
begin
7979
res = send_request_raw({
80-
'uri' => "/#{datastore['URI']}/services/Session",
81-
'method' => 'POST',
82-
'data' => data,
80+
'uri' => normalize_uri(datastore['URI']) + "/services/Session",
81+
'method' => 'POST',
82+
'data' => data,
8383
'headers' =>
8484
{
8585
'Content-Length' => data.length,

modules/auxiliary/scanner/sap/sap_mgmt_con_abaplog.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def rport
4646

4747
def run_host(ip)
4848
res = send_request_cgi({
49-
'uri' => "/#{datastore['URI']}",
49+
'uri' => normalize_uri(datastore['URI']),
5050
'method' => 'GET',
5151
'headers' => {'User-Agent' => datastore['UserAgent']}
5252
}, 25)
@@ -83,7 +83,7 @@ def extractabap(rhost)
8383

8484
begin
8585
res = send_request_raw({
86-
'uri' => "/#{datastore['URI']}",
86+
'uri' => normalize_uri(datastore['URI']),
8787
'method' => 'POST',
8888
'data' => data,
8989
'headers' =>

modules/auxiliary/scanner/sap/sap_mgmt_con_brute_login.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def initialize
5151

5252
def run_host(ip)
5353
res = send_request_cgi({
54-
'uri' => "/#{datastore['URI']}",
54+
'uri' => normalize_uri(datastore['URI']),
5555
'method' => 'GET',
5656
'headers' =>
5757
{
@@ -114,7 +114,7 @@ def enum_user(user, pass)
114114

115115
begin
116116
res = send_request_raw({
117-
'uri' => "/#{datastore['URI']}",
117+
'uri' => normalize_uri(datastore['URI']),
118118
'method' => 'POST',
119119
'data' => data,
120120
'headers' =>

modules/auxiliary/scanner/sap/sap_mgmt_con_extractusers.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def rport
4949

5050
def run_host(ip)
5151
res = send_request_cgi({
52-
'uri' => "/#{datastore['URI']}",
52+
'uri' => normalize_uri(datastore['URI']),
5353
'method' => 'GET',
5454
'headers' =>
5555
{
@@ -90,7 +90,7 @@ def extractusers(rhost)
9090

9191
begin
9292
res = send_request_raw({
93-
'uri' => "/#{datastore['URI']}",
93+
'uri' => normalize_uri(datastore['URI']),
9494
'method' => 'POST',
9595
'data' => data,
9696
'headers' =>

modules/auxiliary/scanner/sap/sap_mgmt_con_getaccesspoints.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def rport
4949

5050
def run_host(ip)
5151
res = send_request_cgi({
52-
'uri' => "/#{datastore['URI']}",
52+
'uri' => normalize_uri(datastore['URI']),
5353
'method' => 'GET',
5454
'headers' =>
5555
{
@@ -89,7 +89,7 @@ def getacesspoints(rhost)
8989

9090
begin
9191
res = send_request_raw({
92-
'uri' => "/#{datastore['URI']}",
92+
'uri' => normalize_uri(datastore['URI']),
9393
'method' => 'POST',
9494
'data' => data,
9595
'headers' =>

modules/auxiliary/scanner/sap/sap_mgmt_con_getenv.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def rport
4949

5050
def run_host(ip)
5151
res = send_request_cgi({
52-
'uri' => "/#{datastore['URI']}",
52+
'uri' => normalize_uri(datastore['URI']),
5353
'method' => 'GET',
5454
'headers' =>
5555
{
@@ -89,7 +89,7 @@ def getEnvironment(rhost)
8989

9090
begin
9191
res = send_request_raw({
92-
'uri' => "/#{datastore['URI']}",
92+
'uri' => normalize_uri(datastore['URI']),
9393
'method' => 'POST',
9494
'data' => data,
9595
'headers' =>

0 commit comments

Comments
 (0)