0x01 本地提权
条件:已经实现了本地低权限账号的登陆
1.1 远程溢出
1.2 直接获得账号密码
本地提权的目的就是希望获得更高的权限,对目标进一步的进行控制
0x02 本地提权的基础知识
系统账户之间权限隔离
- 操作系统安全的基础
- 用户空间
- 内核空间(也划分了很多账号)
系统账号:
- 用户账户登陆时获取权限令牌
- 服务账号无需用户登陆已经在后台启动服务(跟随系统启动而启动)
最高管理员账号:
- windows为==admininstrator==
- linux为==root==
最高管理员可以生成很多应用账号,管理员赋给不同的权限,登陆的时候,系统赋予权限的令牌,令牌在登陆的时候绑定在用户会话上,每一次登陆的令牌不是一样的,随机.
不同系统默认的用户情况:
windwos:
- user
- Administrator==有一些控制表项不能去修改和删除==
- system 启动运行内核级别的权限(最高)
administrator和system两个是相互包含的,
linux
- root=administrator+system
- user
0x03 windows操作系统的提权
- 首先给windwos xp增加一个用户,由于我的xp是在域环境中,所以设置密码需要一个强的密码。
其中net user xingqing *
修改用户的密码,net user xingqing password
是增加一个用户xingqing.
net user xingqing
查看当前xingqing ,,可以看到它是属于当前的users组。Users是Windows中预设的一个用户组,介绍是:防止用户进行有意或无意的系统范围的更改,但是可以运行大部分应用程序。这个用户组包含了所有可登录的用户,默认权限是读取和执行(非系统分区)拒绝访问(所有System Volume Information文件夹及其子文件与子文件夹和其他用户配置文件夹)
读取和执行(系统分区下其他文件与文件夹)
响应的用户权限以及组说明
- Users
普通用户组,这个组的用户无法进行有意或无意的改动。因此,用户可以运行经过验证的应用程序,但不可以运行大多数旧版应用程序。Users 组是最安全的组,因为分配给该组的默认权限不允许成员修改操作系统的设置或用户资料。Users 组提供了一个最安全的程序运行环境。在经过 NTFS 格式化的卷上,默认安全设置旨在禁止该组的成员危及操作系统和已安装程序的完整性。用户不能修改系统注册表设置、操作系统文件或程序文件。Users 可以创建本地组,但只能修改自己创建的本地组。Users 可以关闭工作站,但不能关闭服务器。
- Users
- Power Users
高级用户组,Power Users 可以执行除了为 Administrators 组保留的任务外的其他任何操作系统任务。分配给 Power Users 组的默认权限允许 Power Users 组的成员修改整个计算机的设置。但Power Users 不具有将自己添加到 Administrators 组的权限。在权限设置中,这个组的权限是仅次于Administrators的。 - Administrators
管理员组,默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。分配给该组的默认权限允许对整个系统进行完全控制。一般来说,应该把系统管理员或者与其有着同样权限的用户设置为该组的成员。 - Guests
来宾组,来宾组跟普通组Users的成员有同等访问权,但来宾账户的限制更多。 - Everyone
所有的用户,这个计算机上的所有用户都属于这个组。 - SYSTEM组
这个组拥有和Administrators一样甚至更高的权限,在察看用户组的时候它不会被显示出来,也不允许任何用户的加入。这个组主要是保证了系统服务的正常运行,赋予系统及系统服务的权限。
- 使用命令将其加入administrators组。
net localgroup Administrators xingqing /add
发生1317,用户不存在的系统错误,查资料得是因为你的用户和计算机名一样造成的,我们重新添加一hack的账户,然后继续使用上面的命令成功将hack添加到administrators组。
- 接下来使用命令将hack这个账户,提升为system权限
我们打开任务管理器,查找用户为system的程序
- 使用at命令提升为system
使用范围: xp,2003使用,win7和win8,win2012,win2008已经删除。
使用at /?
查看需要的命令参数,at time /interactive cmd
,interactive是交互式命令行参数。whoami在windows服务器程序会有,默认的xp不存在这个命令。
就会使用system重新启动命令行,它的权限就是system。接下使用cmd打开的所有程序都是system权限。
接下来输入taskmgr
使用system打开任务管理器,然后kill explore进程,最后再重新打开explore进程(文件,新建,explorer.exe),重新加载就是system权限。
- schtasks
2003测试失败
at命令很容易将计划任务安排到第二天去,
schtasks虽然强大,但是命令极为复杂
- sc命令
使用范围:win7和win8,其他未测试
命令功能: 创建系统服务,SC.exe提供的功能类似于“控制面板”中“管理工具”项中的“服务”。
services.msc运行都是服务。
cmd /k start
打开一个新的窗口。
sc Create systemcmd binPath="cmd /k start" type= own type= interact
创建一个服务名字为systemcmd ,然后服务所属我自己(own),并且是以交互的方式(可以看见,不会出现在后台)
sc start systemcmd
启动这个服务,由于所有的服务是由system启动,所以cmd会成为system权限。
1060错误未知,待解决
- 使用微软工具提system
https://docs.microsoft.com/zh-cn/sysinternals/downloads/,windows sysinternals解压后将psexec.exe传至xp
先打开kali ,在路径/usr/share/windows-binaries下将whoami.exe传到xp的windwos/system32文件夹中,
使用psExec.exe -i -s cmd
。目前是失败的
- 注入进程提权
找一个已经是system的服务,然后注入进程得到system权限,使用processinjector工具,放到c目录执行-l显示可以注入的进程。
然后记住pid,然后
,注入进程执行cmd程序将shell放在4444端口,等待连接。
使用kali的nc进行连接:
,直接就是system权限。
然后使用下载的套件sysinternals里面的Procexp.exe查看注入的进程services服务,
这种后门非常隐蔽。即使注销用户,服务进程依然在,后门依然可以连接。
- WMI