JAVA代码审计-垃圾租车系统

2018-5-8 小屿 Java

前言

最近刚开始学习JavaWeb,弱鸡入门,看了我师傅园长MM在N多年前写的攻击JavaWeb应用和freebug的某租车系统JAVA代码审计文章后决定也去找点辣鸡漏洞。

0×00 注入

freebug那个文章说没找到注入,不过看了下是有注入的

搭建好环境后先首先看了下filter,就只有一个filter路径在

opencar/WebRoot/WEB-INF/lib/urlrewritefilter-4.0.3.jar!/org/tuckey/web/filters/urlrewrite/UrlRewriteFilter.class

貌似是写的url重写之类的东西,接着发现这个程序居然在每个servlet进行session判断,为什么不用filter来实现。。

运行环境后从主页瞎点链接发现了url为goods后面是些参数,找到源码路径

/opencar/src/com/weishang/my/action/GoodsList.java

QQ20180508-043730@2x.png

继续跟进下方参数传进的方法进入ShopService.class文件,位于

/opencar/WebRoot/WEB-INF/lib/car-weishang-1.0.jar!/com/weishang/my/service/ShopService.class:2498

QQ20180508-044544@2x.png

直接拼接字符串带入查询,造成sql注入,正确做法是用?占位符

简单验证一下
QQ20180508-044827@2x.pngQQ20180508-044837@2x.png


数据库日志

QQ20180508-045028@2x.png

0×01 CSRF

整个程序对csrf都没验证,可以直接csrf添加一个超级管理员,添加的管理员默认密码为123456

<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://localhost:8080/admin/addAdmin" method="POST">
      <input type="hidden" name="item" value="" />
      <input type="hidden" name="username" value="yzmm~233" />
      <input type="hidden" name="name" value="test" />
      <input type="hidden" name="sex" value="" />
      <input type="hidden" name="role" value="1" />
      <input type="hidden" name="qq" value="10000" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

QQ20180508-050230@2x.png

可以写个filter校验敏感操作的referer

QQ20180508-050921@2x.png

不过getServerName其实是可控的,篡改http请求中的Host即可,网上校验referer的代码有人用的contains,用contains的话referer只要路径包括ServerName就满足,例如 http://attacker.com/yourServerName。

还是用token比较好。

0×02 越权

随便进用户前台看了下,删除收货地址,定位源码文件

com/weishang/my/action/user/WxDeleteAddress.java

QQ20180508-052758@2x.png

仅对登陆进行了判断,遍历id即可删除他人收货地址

除了越权删除外还可以越权读取,下订单篡改address_id即可在用户前台订单看到他人收货地址信息。

0×03 结语

写这个主要是在网上搜到了freebug的那个文章看了一下

失眠睡不着,熬了很久夜(T^T)无聊看了下代码写了这个弱鸡审计过程

标签: 代码审计

发表评论:

Powered by xia0yu