0%

THM打靶日寄67-The Bandit Surfer

  • 扫描打点

    • 8000

      能下载三个没用的图片,试了下文件包含不行,但找到返回值注释中的 Werkzeug Debugger

      同时没扫到别的东西

      根据exploitdb上的,有PIN码的情况下可以访问 /console 来获得一个python的命令行来拿到反弹shell

      根据github上的PIN码生成逻辑,需要拿到用户名,flask路径,服务器MAC和机器ID来生成

      而路径在报错中不难找到:/home/mcskidy/.local/lib/python3.8/site-packages/flask/app.py

      id 的参数发现有sql注入,sqlmap跑一下,不能直接写shell啊嗯发现有union select

      file:///etc/passwd 能读到用户名:mcskidy

      file:///sys/class/net/eth0/address 拿到MAC:02:d8:42:57:ac:8d,并用python:print(0x02d84257ac8d)转成十进制 3127849233549

      file:///etc/machine-id 拿到机器ID:aee6189caee449718070b58132f2e4ba

      那么用上面的脚本拿到PIN:319-586-089 反弹shell出来

  • 提权

    /home 下没用别的用户,那就直接提权了

    /mcskidy 下还有个 app 文件夹

    app.py 能读到密码,但错了啊嗯

    看看远处的.git文件吧,git log 看一下:

    然后用 git diff 读一下历史改变:

    拿到密码 F453TgvhALjZ

    看下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
    . /opt/.bashrc
    cd /home/mcskidy/

    WEBSITE_URL="http://127.0.0.1:8000"

    response=$(/usr/bin/curl -s -o /dev/null -w "%{http_code}" $WEBSITE_URL)

    # Check the HTTP response code
    if [ "$response" == "200" ]; then
    /usr/bin/echo "Website is running: $WEBSITE_URL"
    else
    /usr/bin/echo "Website is not running: $WEBSITE_URL"
    fi

    同一目录下还有个 .bashrc:

    里面这个 enable -n [#] ,由于bash中 # 为注释,因此其后面所有内容都被忽略,即命令为:enable -n [

    那么就是 check.sh 启动时会以 root 执行 [ 文件

    那就到了经典劫持环节,传个恶意 [ 文件上去就行,比如复制 /bin/bash