漏洞简介
天地伟业Easy7是一款用于视频监控管理的软件系统。
该系统的 /Easy7/rest/obj/getActiveEffectTemp 接口存在SQL注入漏洞,攻击者可以通过构造恶意请求执行任意SQL语句,可能导致敏感信息泄露或数据库被篡改。
影响版本
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进行权限校验,因此绝大部分接口都是可以直接访问的。
再来看本次的漏洞接口 /Easy7/rest/obj/getActiveEffectTemp 对应的 getActiveEffectTemp() 方法实现逻辑
@Controller
@RequestMapping({"/inquestRoom"})
public class CLS_REST_InquestRoom {
private static final Logger log = LoggerFactory.getLogger(CLS_REST_InquestRoom.class);
@Resource(
name = "boInquestRoom"
)
private CLS_BO_InquestRoom boInquestRoom;
@RequestMapping({"/getActiveEffectTemp"})
@RequestMapping({"/getActiveEffectTemp"})
public void getActiveEffectTemp(HttpServletRequest req, HttpServletResponse resp, String id) throws IOException {
resp.getWriter().print(JSONObject.fromObject(this.boObj.getActiveEffectTemp(id)));
}
参数id被直接带入boInquestRoom.getActiveEffectTemp方法
public CLS_VO_Result getActiveEffectTemp(String id) {
CLS_VO_Result result = new CLS_VO_Result();
if (id != null && !"".equals(id)) {
List<CLS_VO_OBJ> objList = this.daoObj.getActiveEffectTemp(id);
result.setRet(0);
result.setContent(objList);
return result;
} else {
result.setRet(-7);
log.error("getActiveEffectTemp id == null");
return result;
}
}
继续跟进 daoInquestRoom.getActiveEffectTemp方法

最终在dao层,参数id是未经任何过滤或校验直接拼接在IN自查询SQL语句中执行,从而造成SQL注入漏洞。
漏洞复现
POST /Easy7/rest/obj/getActiveEffectTemp HTTP/1.1
Host: easy7.mrxn.net
Content-Type: application/x-www-form-urlencoded
id=SQLI_POC

成功延时5秒

