### 简要描述:
两个两个一起发吧,凑一对。Jeebbs 一处逻辑漏洞和一处定向XSS。轻易的获取对方cookie...明文密码...
### 详细说明:
Jeebbs基本上都没有判断referer,没有token,可造成csrf。
1、不科学的积分漏洞
积分兑换方法如下:
```
@RequestMapping(value = "/member/creditExchange.jspx")
public void creditExchange(Integer creditIn, Integer creditOut,
Integer creditOutType, Integer miniBalance, String password,
HttpServletRequest request, HttpServletResponse response) {
}
```
可以看到这里直接用了SpringMvc注入参数,而这些参数恰恰是控制程序逻辑的关键。比如构建如下URL,通过GET或者POST方式都能恶意修改用户的积分:
http://localhost/jeebbs/member/creditExchange.jspx?creditIn=26&creditOut=-27600&creditOutType=1&miniBalance=-10000000&password=wooyun
因为他的逻辑是这么写的:
```
if(user.getPoint()-creditOut>miniBalance){
balance=true;
}else{
flag=1;
}
```
从User对象里面取出积分的数值,而积分兑换威望具体需要多少是在确定兑换关系后由ajax去后台计算出来的,提交的时候也没有验证计算的结果有没有被客户端改过。其中的creditOut和miniBalance都是我们可控的。所以这个等式不管在什么情况下我们都可以让它成立。
Cookie不加密我的明文密码又出来晒太阳了。
[<img src="https://images.seebug.org/upload/201307/312232480e1c2ff8f21c5aa65a03914d35db65c7.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201307/312232480e1c2ff8f21c5aa65a03914d35db65c7.png)
[<img src="https://images.seebug.org/upload/201307/31223533a63fea5fb05874c2558eadaeac5cd69a.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201307/31223533a63fea5fb05874c2558eadaeac5cd69a.png)
2、打招呼XSS
[<img src="https://images.seebug.org/upload/201307/312238591971c925b6a5089bd55d06579ec7317e.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201307/312238591971c925b6a5089bd55d06579ec7317e.png)
逻辑有做判断:1、用户名为空。2、不允许发送消息给自己。3、用户名不存在。
在控制层并没有做过滤:
[<img src="https://images.seebug.org/upload/201307/3122391158857af1e141f348de91a419e1eecffd.png" alt="4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201307/3122391158857af1e141f348de91a419e1eecffd.png)
在调用com.jeecms.bbs.manager.impl. BbsMessageMngImpl.java的sendMsg方法的时候依旧没有过滤。到最终的BbsMessageDaoImpl 的save方法还是没有过滤就直接储存了;
一般性的做法,关系到用户交互的地方最好做referer和xss过滤检测,控制层负责收集数据的同时最好处理下用户的请求,就算controller不处理起码在service层做下处理吧。
[<img src="https://images.seebug.org/upload/201307/312239493839a280fbb712d2f56e9a74b6593acf.png" alt="5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201307/312239493839a280fbb712d2f56e9a74b6593acf.png)
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201307/31223533a63fea5fb05874c2558eadaeac5cd69a.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201307/31223533a63fea5fb05874c2558eadaeac5cd69a.png)
[<img src="https://images.seebug.org/upload/201307/312239493839a280fbb712d2f56e9a74b6593acf.png" alt="5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201307/312239493839a280fbb712d2f56e9a74b6593acf.png)
暂无评论