SQL Server DBA WriteFile

倾旋
倾旋
技术分享|2020-1-1|最后更新: 2023-6-22|
type
status
date
slug
summary
tags
category
icon
password
URL

0x01 前言

本文非基础类的普及文章,主要分享内网中遇到的一个有趣案例。

0x02 Bypass注入点

通常情况下,遇到SQL Server注入点,我会比较关注是否是DBA权限,如果是,那么就可能拿到执行命令的权限,进而反弹到C2上,方便后续的后渗透工作。
一开始在一处比较复杂的功能点发现了SQL Server的注入,也是首先利用AND进行判断:
notion image
参数:ModuleType存在注入点,但是后面有一层站点全局输入的检测机制,从简单的测试来看,是不存在语法分析的一种,比较容易绕过。
我尝试了以下方案:
  1. and -> And
  1. and -> /**/And
  1. and -> /*xsww!s*/And
  1. and -> /*xswwS1154-_[0)}!s*/And
  1. and -> /***/And
最终发现第五种可以绕过,使得后端无法辨别/***/是否和And是一个本体。
那么我猜想到了一个简单的表达式,似乎和这个过滤规则比较相向:/*\w{0,}*/
notion image

0x03 tamper 自动化实现

这里我比较懒,直接改了以下space2comment.py,这个脚本在Kali Linux中的sqlmap目录下:
notion image
核心代码:
只需要替换/**/即可:
notion image
接着,就可以跑出注入了~
PS:我比较习惯于添加--random-agent参数,理由是在注入的过程中,避免被流量感知设备发现。
notion image

0x04 xp_cmdshell

到这一步的时候,我遇到了一个问题,SQLMAP调用exec master..xp_cmshell的时候被拦截了,因为后端还检测是否有execmaster,于是我还要将tamper加两句:
最终结果:/***/execute/***//***/xp_cmdshell/***/'whoami'
点击发包,还是无法执行,被360拦截了!
notion image
这个Error Code 5 ,是Windows的错误代码,中文意思就是:“拒绝访问”。
现在xp_cmdshell被拦截的很多了,但是sp_oacreate应该可以使用的:
参考我之前写的一篇文章:Regsvr32 ole对象
后续我发现该服务器无法出网,还是站库分离
因此无法执行操作系统命令

0x05 写入文件

在写文件这块,我浪费了大量的时间,首先要确定能否向站点目录写文件,当前写文件的操作是否被拦截等等因素。
一开始的思路是调用xp_cmdshell,采用echo去写,目前已无法执行命令,就此作罢,吸了一口芙蓉王,精神焕发,遂查到数据库备份的方式。
提交:
页面返回正常。
但是,我的站点目录如果是中文呢?在Burp里处理就非常麻烦!
还记得之前的IIS 7.5吗,IIS在接收到一个请求后,会自动将数据进行Unicode解码,如果流量设备、WAF不支持此特性的话,就可以进行绕过,这里我着重解决中文目录的问题。
notion image
到这此文就结束了,我并没有成功Getshell,只是回顾我解决问题的思维方式,希望能对大家有用!
 
 
©2021-2024 倾旋. All rights reserved.