IRF-Tomcat-Example


I

这是IRF系列的第一篇。何为IRF,IRF是Enomothem于2023年1月31日提出的漏洞管理信息方法,IRF分别为Information、Recurrence和Fix plan

I: 漏洞的基本信息、物体Object(什么应用)、时间Time(可选)、空间Space(版本范围,受影响范围)

R: 漏洞复现方法、具备的条件

F: 漏洞修复计划。

基本信息

Tomcat样例(Example)泄露,下载Tomcat后在解压后的文件目录里有tomcat自带的webapp/docs和webapp/example文件夹,docs是tomcat的说明文档,example是tomcat自带的示例。

漏洞分析:docs是文档,所以基本不存在风险,但是examples里面有session,而tomcat的session是共享的,这使得在不需要任何权限的情况下,可以通过examples的session示例对tomcat中的session进行修改,这样的话可能会造成某人通过examples篡改session,从而获取管理员权限等问题。

修复计划:所以在使用tomcat部署应用的时候,建议先备份或者直接删掉webapp/docs和webapp/example文件夹。

OTS

  • Tomcat
  • ALL version

R

分析

表单部分代码,接收用户输入的Name和Value值

out.println("<P>");
out.print("<form action="");
out.print(response.encodeURL("SessionExample"));
out.print("" ");
out.println("method=POST>");
out.println(rb.getString("sessions.dataname"));
out.println("<input type=text size=20 name=dataname>");
out.println("<br>");
out.println(rb.getString("sessions.datavalue"));
out.println("<input type=text size=20 name=datavalue>");
out.println("<br>");
out.println("<input type=submit>");
out.println("</form>");

核心代码,将接收的用户输入的Name和Value值写入到Session中

HttpSession session = request.getSession(true);
out.println(rb.getString("sessions.id") + " " +session.getId());
out.println("<br>");
out.println(rb.getString("sessions.created") + " ");
out.println(new Date(session.getCreationTime()) +"<br>");
out.println(rb.getString("sessions.lastaccessed") + "");
out.println(new Date(session.getLastAccessedTime()));
String dataName = request.getParameter("dataname");//获取dataname参数的值
String dataValue = request.getParameter("datavalue");//获取datavalue参数的值
if (dataName != null && dataValue != null) {
    session.setAttribute(dataName, dataValue);//将dataname和datavalue写入session
}

用户通过表单提交Name和Value参数,然后通过request.getParameter()函数获取这两个参数的值,再通过session.setAttribute() 函数将Name和Value的值写入Session中。

复现

/examples/servlets/servlet/SessionExample

在Name of Session Attribute: 里输入 login

在Value of Session Attribute:里输入 admin

提交后显示login=admin已经写入session

验证

首次打开因为没有Session被重定向到登入页面。

利用样例漏洞后,再次打开index.jsp,显示成功登录。

F

删掉webapp/docs和webapp/example文件夹。

对目录进行访问限制


文章作者: Enomothem
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Enomothem !
  目录