HMV-Connection靶场复盘

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

端口有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 | ┌──(root㉿kakeru)-[~/connections] |
提权
用suid提权
这里使用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)为新的进程,即启动bashshell。/bin/bash:指定执行的程序,即bashshell。"bash":传递给bash的参数,第一个参数通常是执行命令本身。"-p":让bash保持root权限,如果gdb以root权限运行,新启动的bashshell 也会保持root权限。
4. -ex quit
- 作用:在执行完上述 Python 脚本后,立即退出
gdb。gdb执行完命令后会退出,但新启动的bashshell 会继续运行。