Users login

Create an account »


Users login

Home » Hacking News » Arbitrary Command Execution on SQL Server 2000

Arbitrary Command Execution on SQL Server 2000

by Nikola Strahija on August 22nd, 2002 A stored procedure on an SQL Server is a series of SQL queries that can be written once and run many times. One of the internal Microsoft stored procedures on SQL Server 2000 that the 'public' role has permissions to execute fails to validate user input before passing it to xp_cmdshell. The xp_cmdshell extended stored procedure runs an operating system command and it is possible for a low privileged and malicious user to insert and run their own arbitrary commands.

If a Microsoft SQL Server is configured as a distributor, so it can
replicate data between servers, a low privileged and malicious user may
execute the 'sp_MScopyscript' stored procedure and insert arbitrary commands
which will be run in the security context of the SQL Server account. If the
SQL Server is running as LocalSytem then this attack will invariably fail.
The reasons behind this is due to the fact that, before the user supplied
commands are executed, the server must create a directory over a network
share on the distributor. As the Local System account has no pivileges on
the network, the stored procedure will fail at this point. If the server is
running in the context of a domain user then the "make directory" command
should work provided replication has been setup properly. Once this command
has executed the stored procedure then inserts the user supplied @scriptfile
parameter into a command: from the text of sp_MScopyscript

select @cmd = N'copy "' + @scriptfile + N'" "' + @directory + N'"'
exec @retcode = master..xp_cmdshell @cmd, NO_OUTPUT

By supplying a malformed @scriptfile parameter an attacker can run arbitrary

use master
declare @cmd nvarchar(4000)
exec sp_MScopyscriptfile N'c:autoexec.bat" c:cp.txt&echo hello >
c:ccc.bbb & echo "hello',@cmd OUTPUT
print @cmd

The above query will copy the autoexec.bat file to cp.txt but also echo
hello to a file called ccc.bbb.

If the server is running with Administrator privileges an attacker will be
able to insert pretty much any command. For example the could create a
Windows NT user and add it to the administrators group.

Fix Information
The last cumulative patch provided by Microsoft ( see
bulletin/MS02-043.asp ) appears to address this problem. If you have not
applied this patch yet NGSSoftware recommend you do so as soon as possible.
For those who have to wait to apply the patch due to testing periods etc
NGSSoftware recommend that you at least prevent the 'public' role from
running this stored procedure. You can do this by running the following
query from Query Analyzer:

Newsletter signup

Signup to our monthly newsletter and stay in touch with IT news!

Free E-books

We've got ebooks! But they're not online. :( Please give us a few days to bring downloads back.


Have something to say or just wanna drop us a line? Please keep this in mind: to spam, we reply with spam.

Contact us »