Linked Servers
Overview
Discovering linked servers
EXEC sp_linkedservers;Executing SQL queries on linked server
select version from openquery("dc01", 'select @@version as version')
select * from openquery("dc01", 'select @@version as version')C# Example
public void sql_shell_linked_server()
{
#region SQL Shell Linked Server
Console.WriteLine($"\nExecuting SQL commands on {LinkedServer}");
SQLQuery = $"SELECT myuser from openquery(\"{LinkedServer}\", 'select SYSTEM_USER as myuser');";
Command = new SqlCommand(SQLQuery, Instance);
DataReader = Command.ExecuteReader();
DataReader.Read();
Console.WriteLine($"[+] Linked Server user: {DataReader[0].ToString()} on {LinkedServer}");
DataReader.Close();
Console.WriteLine("[*] Enter 'exit' to return to the main menu");
while (true)
{
Console.Write("sql> ");
string cmd = Console.ReadLine();
if (cmd == "exit")
{
break;
}
else
{
try
{
cmd = cmd.Replace("'", "''");
SQLQuery = $"select * from openquery(\"{LinkedServer}\", '{cmd}')";
Command = new SqlCommand(SQLQuery, Instance);
DataReader = Command.ExecuteReader();
Console.WriteLine();
DataReaderOutput();
Console.WriteLine();
DataReader.Close();
}
catch (Exception ex)
{
Console.WriteLine($"[!] ERROR: {ex.ToString()}");
}
}
}
#endregion
}Enabling xp_cmdshell
C# Example
Running xp_cmdshell
C# Example
Last updated