Kali渗透测试之提权1——本地提权
本地提权
定义:我们已经登录到目标系统的计算机上,拿到目标系统的shell,在这个shell基础之上,进行提权。
现在的操作系统都是多用户操作系统,一个操作系统可以设置多个用户账号,这些账号可以是用户账号,也可以是为某个应用程序专门设置的应用程序账号。这样做的目的是进行不同账号之间权限的隔离,因为所有的事情都由一个账号去做的话,必须赋予该账号最大的权限,一旦该账号密码失窃,对方就会直接控制我们的服务器。所以每个账号我们都应该赋予它完成本职工作的足够权限。这样即使对方拿到账号密码,距离完全控制目标操作系统还相距甚远。
操作系统还有用户空间和内核空间,用户账号都工作在用户空间中;出于安全考虑,操作系统在内核空间也划分了不同的账号,不同的账号它们的权限也是不同的。
默认操作系统中有一个最高权限的管理员账号,在Windows中为Administrator,在Linux中为root。我们可以用最高权限的账号,生成很多的用户账号和应用程序账号,并对不同的账号赋予不同的权限。只有当用户登录进操作系统时,操作系统会根据管理员设置的权利项,把相应的权限赋予给当前登录账号,生成一个实时的令牌文件,这个令牌上绑定了该用户具有什么样的权限、可以做哪些操作。这个令牌在用户登录时绑定到用户登录的会话上,当用户退出或注销时,这个令牌会失效,下一次再生成一个唯一的令牌,每次生成令牌都有随机数在里面,因此同一用户的令牌是不完全一样的。
服务账号跟随操作系统启动而启动,无需用户登录,已在后台启动服务。
不同操作系统间的默认用户情况:
Windows系统用户类型
- user:隶属于users组,这个组的用户无法进行有意或无意的改动,因此,用户可以运行经过验证的应用程序,但不可以运行大多数旧版应用程序,users组是最安全的组,因为分配给改组的默认权限不允许成员修改操作系统的设置或用户资料;users可以创建本地组,但只能修改自己创建的本地组。users可以关闭工作站,但不能关闭服务器。
- Administrator:中文意思就是' 系统管理员 '。即所谓的' 超级用户 '。每台电脑装上系统后,在你自己新建的账户外,会自动新建一个叫administrator 的管理计算机(域)的内置账户,它平时是隐藏的,它是计算机管理员的意思,是拥有计算机管理的最高权限;
- System:中文意思就是' 系统 '。在Windows中拥有比管理员更大的权限,主要作为系统服务或进程的运行账户,保证系统服务的正常运行。
Linux系统用户类型
- user:普通用户
- root:管理员用户,可对操作系统做任何修改
一、Windows系统下进行提权
ADMIN提权为SYSTEM
1、at命令
该命令只能在Windows XP、2003上使用,命令 ' at /? ' 可查看其帮助信息。
- at 11:15 /interactive cmd //在11:15以交互式的方式打开一个cmd
之后在具有system权限的cmd窗口上启动其他进程,都具有system权限。
接下来就是将桌面环境改成由SYSTEM启动,这样就可以实现执行任何命令都会是以SYSTEM执行。
- explorer.exe就是桌面环境,可以看到现在的桌面环境是由管理员 'chengqianqian' 启动的,结束该进程。
- 新建一个任务explorer
- 点击确定后,可以看到新打开了一个由system用户启动的explorer.exe进程,且当前账号变成了SYSTEM。现在,执行任何命令都会是以SYSTEM执行。
2、使用sc命令创建系统服务
SC命令是XP系统中功能强大的DOS命令,用于检索和设置有关服务的控制信息,在命令行中直接输入SC会显示SC命令的帮助信息。
原理:所有的服务都会默认以system账号去启动
sc create:在注册表和“服务控制管理器”中为服务创建子项和项目。
- sc Create syscmd binPath= "cmd /K start" type= own type= interact // syscmd — 服务名称;cmd /k start — 重新启动一个命令行的窗口;type=own — 表示cmd是由当前账户启动的;type=interact — 交互式cmd
- sc start syscmd //启动syscmd服务
默认情况下没有启动syscmd服务,我们可以点击左上角的 “ 启动 ”来启动该服务,也可使用命令行的方法启动该服务。
3、Psexec.exe
- 下载路径:http://technet.microsoft.com/enus/sysinternals/bb545027
- psexec -i -s cmd //使用Psexec工具打开system权限的cmd窗口,i — 交互式,s — system权限
4、注入进程提权
- 原理:把我的进程注入到一个现有的system账号运行的进程中,这样我的进程也就具有了system账号的权限了。
- 特点:可提升为不同权限的账号;不会有新的进程增加,极其隐蔽。
- pinjector.exe — 进程注入器,需翻墙下载。下载路径 — http://www.tarasco.org/security/Process_Injector/
- 查看 pinjector.exe 的帮助信息。
- 查看所有进程PID,找一个具有system权限的进程作为被注入的进程。(也可注入到具有其他权限的进程中)
- 注入进程,在操作系统中没有增加任何新的进程。-p — 指定被注入进程PID,开放6666端口
- 在kali中连接注入进程的端口,命令 — nc 192.168.247.132 6666;此时要关闭Windows XP的防火墙;提权的同时实现远程控制。
二、Linux系统下进行提权
普通账户提权为root账户
1、Dirtycow提权(脏牛提权)
下载路径 — https://github.com/FireFart/dirtycow
- 对dirty.c文件进行编译,生成可执行文件exp
- 执行exp文件,并设置密码
- 查看passwd文件,可以看到root用户被修改为用户firefart,密码为123
- 切换账户,此时的用户firefart用户就具有管理员root的权限
- 获得管理员权限后,接下来就是留后门了。
- 清除痕迹,恢复root账户
mv /tmp/passwd.bak /etc/passwd