WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 2438查看
  • 2回复

主题

好友

2712

积分

禁止访问

发表于 2010-2-7 11:22:24 |显示全部楼层
sa无法执行net命令的原因探析
以前经常看到一句话,据说是牛人说的:SA注入拿不到系统权限就是水平问题!前几天遇到的情况足以推翻这句所谓我名言!SA注入点在很多种情况下是相对比较容易拿一点,但是不是说有SA就有系统权限呢,其实不然!SA下不能拿到系统权限的情况也比较多,我就简单的说明一下我前几天遇到的情况,至于其他方面大家提出共同研究就是了,嘿嘿。
  几天前朋友把一个SA注入点发在群里,说他实在是拿不到系统权限。我问他什么环境,他说可以执行部分命令,也有回显,也可以列目录,WEB与DATA服务器并不分离。这种情况起码拿到shell是比较容易的事情,组件没有删除的话。我问了下他拿到webshell没,那小子居然说没拿到……一心只想得到系统权限……一心只想进3389!我原来也认为SA都拿不下服务器的确是水平问题的,所以答应帮他看看这个注入点!NBSI检测,显示权限的确为SA,执行命令有回显。本以为加个用户不就得了,但问题没有想象中的这么简单!执行net user命令显示出了所有用户,但是执行net user hackest hackest /add 的时候提示拒绝访问!net1 user hackest hackest /add同样提示拒绝访问!情况似乎的确比较复杂……开始我以为是net.exe、net1.exe这两个文件的权限做过权限设置,用cacls.exe更改net.exe和net1.exe的文件访问属性也提示拒绝访问!所以打算上传一个本地的net.exe再执行添加用户的操作。但是用VBS文件下载不了,加密了依然下载不了……服务器用的是瑞星!要传文件的话还是先老老实实的拿到webshell再说吧,列目录确定WEB路径,啊D上传了一个海阳eval版一句话ASP马。有个一句话就已经很足够了嘛,嘿嘿。有了webshell就查看存在注入的文件,找到数据库连接文件,得到MSSQL的有SA权限的用户名和密码,因为目标服务器的mssql不允许外连,所以弄了个sqlrootkit.asp上去,用得到的用户名和密码成功连接,并且可以执行部分命令。先来看看net.exe文件的访问属性,据此显示是正常的默认权限,看来权限没有做过更改!在sqlrootkit.asp里执行cacls.exe c:\windows\system32\net.exe 返回的结果如下:
  利用xp_cmdshell扩展执行cacls.exe C:\windows\system32\net.exe
  C:\windows\system32\net.exe NT AUTHORITY\INTERACTIVE:R
  NT AUTHORITY\SERVICE:R
  NT AUTHORITY\BATCH:R
  BUILTIN\Administrators:F
  NT AUTHORITY\SYSTEM:F
  BUILTIN\Administrators:F [资源来自"岁月联盟"]
  可以看出权限很正常的,没有做过什么**的设置,跳到c:\windows\system32目录下查看net.exe文件的大小也正常,没有替换成别的什么嘛。net1.exe的情况和net.exe情况一样,无论是文件的大小还是文件的访问权限都很正常,但是为什么SA注入点却没有权限加上用户呢!然后我又把net.exe上传到everyone完全控制的目录,再在sqlrootkit.asp里执行添加用户的命令,但是依然提示“拒绝访问”(如果把net.exe删掉,让系统自动恢复net.exe,就会把net.exe 这个文件的属性都还原成默认状态的了,这个可以解决部分net.exe做过权限设置的服务器)!
  搞了两天,毫无进展,忍无可忍,邀请朋友参加讨论。职业**、Lenk、花非花、当然还有我,四个人讨论了一晚都没有解决问题,甚至连为什么会这样也没搞清楚!而且还到EST上发帖公开了,嘿嘿(帖子地址:有兴趣的可以去看下,对理解这个文章比较有帮助)。其实最主要的问题是我根本无法利用这个注入点来执行任意我上传的exe文件!要是能执行mt.exe,克隆一下再用pspasswd.exe更改一下密码就行了。不过以上所说的克隆和改密码都需要足够的权限!但在此文中遇到的这个注入点,我们可以慢慢确定注入点根本就不具有system权限!根据EST朋友的跟帖,我总算明白了为什么SA下依然无法拿到服务器权限了! "岁月联盟"提供
  首先执行whoami,返回:
  利用xp_cmdshell扩展执行whoami
  ctnt-ct17854\sqlsqlsql
  意思是问问系统“我是谁”,系统回答到“我是sqlsqlsql呀”得知当前MSSQL运行的用户为sqlsqlsql,一看这样子都不像是有system权限的用户!所以我们来继续确定下sqlsqlsql的身份,执行net user sqlsqlsql返回如下信息:
  net user sqlsqlsql
  用户名 sqlsqlsql
  全名 sqlsqlsql
  注释 newccc
  用户的注释
  国家(地区)代码 000 (系统默认值)
  帐户启用 Yes
  帐户到期 从不
  上次设置密码 2005-9-30 16:18
  密码到期 从不
  密码可更改 2005-9-30 16:18
  需要密码 Yes
  用户可以更改密码 No
  允许的工作站 All
  登录脚本
  用户配置文件
  主目录
  上次登录 2007-5-24 3:03
  可允许的登录小时数 All
  本地组成员 *Users
  全局组成员 *None
  命令成功完成。
  情况现在似乎比较明朗了,MSSQL是以sqlsqlsql这个用户的身份启动的,而sqlsqlsql这个只是个普通用户,属于Users组的。换句话说就是MSSQL下的SA最高境界也只能是Users组成员的权限,也就是一个普通用户的权限而已。普通用户自然不具有添加系统用户的权限,所以之前遇到的问题基本上都可以 迎刃而解了!其实你在本地以普通用户的身份操作一下就容易理解很多的了,很多东西都不能干的,普通用户权限受限较多,起码有一点,就是它是无法实现添加系统用户的操作,除非溢出提权!
  不知道大家明白了没,现在这种情况似乎比较多,一天内可以遇到三个这类SA一样无法拿下服务器的注入点,所以那句“SA注入拿不到系统权限就是水平问题”是错误的!建议结合EST的帖子再看本文会容易理解一点,嘿嘿 .

主题

好友

4

积分

禁止访问

发表于 2010-3-15 10:01:36 |显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

主题

好友

186

积分

注册会员

发表于 2010-5-10 00:12:51 |显示全部楼层
谢谢分享~很有用
回复

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-4-29 05:34 , Processed in 0.061715 second(s), 17 queries .

返回顶部