【湃哒星说安全】基于实战对抗的单点渗透思路记录
0x00 背景
在对应用系统现有安全防护策略进行风险评估时,渗透测试工程师需要选择一些测试方法和使用一些工具来寻找应用系统或现有防护系统存在的弱点,进而利用该弱点突破其安全防线,直通目标。本文是对实际攻防案例的简单总结,仅表述作者个人测试思路,如有不足,请谅解。
0x01 Tomcat 利用
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,进行渗透测试时会常常遇到,渗透测试工程师通常会使用默认口令或弱口令方式进入Tomcat Manager管理界面,将提前制作的webshell以war包形式进行发布,Tomcat会对war包进行解压和自动部署,从而获取服务器权限。
测试环境:
服务器:Windows 10 专业版
Java环境:Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
后门程序:cmd.jsp
首先,使用用户名口令登录Tomcat Web Application Manager管理后台,用户名:tomcat,口令:tomcat,如下所示:

在war文件上传处上传webshell后门文件,获得服务器权限,访问webshell后门并执行系统命令(wmic process list brief)。

真实环境:
利用Tomcat Web Application Manager后台弱口令进入管理后台界面,部署war后门文件。

上传war后门文件时,浏览器显示该网页无法正常运作,进而对上传数据包进行分析发现数据包被防护系统reset。因此进行初步判断war文件被拦截,所以尝试对war文件进行测试。


0x02 war后门制作
Tomcat war后门文件制作步骤如下:
1、安装 jdk;
2、webshell 文件;
3、执行 "jar cvf webshell.war webshell.jsp"命令,生成webshell.war后门文件。

0x03 WAF 拦截
重新生成war后门文件,为了判断防护系统是否对文件内容进行拦截,于是对war后门文件内容进行修改,写入测试内容“Hello World!”。


在Manager页面上传之前生成的test.war后门文件时被拦截。


0x04 WAF 绕过
Web应用防火墙(Web Application Firewall,WAF)是专门针对Web应用的安全解决方案。它将安全与业务隔离,降低了因Web应用攻击带来的损失和网站安全开发的成本。针对恶意访问web应用防火墙主要解决方案如下:
-
基于精准访问防护,设置HTTP请求的过滤规则,拦截恶意访问。
-
基于CC攻击防护,在给定URL下统计访问频次,拦截高频恶意访问。
-
利用大数据和机器学习的原理,以访问特征和用户为单位进行拦截。
为了应对WAF,渗透测试工程师们经过研究总结了多种绕过方式,互联网上已经公开的WAF绕过方式有很多种,此处我选择使用超大数据包去绕过WAF的防护,具体过程如下:



0x05 拦截冰蝎流量
制作冰蝎war后门文件并上传服务器,使用冰蝎客户端连接远程webshell时发现被WAF拦截。结合上文可得出如下结论:应用防火墙对上传文件格式进行拦截,同时对网络流量进行分析和阻断,因此除了绕过对文件格式的限制,还需要对通信流量进行加密传输。



0x06 冰蝎流量特征
入侵检测系统通过关联特征来拟合异常行为,能够细化分解流量内容,使得异常检测能够提高精确度。在冰蝎客户端连接webshell时候,首先进行会一次GET请求,获取远程webshell加密密钥进行AES加密,并且将获得密钥保存到session中与当前会话绑定。

客户端将payload的类打包好,通过ASM框架从jar包中以字节流的形式取出class文件。服务端通过ClassLoader的子类Myloader的get方法来间接调用defineClass方法,将客户端发来的二进制class字节数组解析成Class并实例化。
客户端使用GET请求获得的密钥对paylod进行AES加密然后进行base64编码,cookie以POST方式发送至服务器端,并将执行结果取回(如果结果是加密的,则进行AES解密)。服务端会通过客户端传来cookie值的session获得客户端的密钥进行解密。
基于GET请求包的检测特征:
-
url包含 .jsp?pass=
-
请求body包含Content-Length: 16
基于GET响应包的检测特征:
-
返回16位密钥
基于POST请求包的检测特征:
-
Content-Type: application/octet-stream
基于POST响应包的检测特征:
-
Transfer-Encoding: chunked
0x07 Caidao流量转发
网络配置:
# 加载CaidaoMP.py本地监听8080端口
# 配置Proxifier 目标程序caidao.exe -> https 通过-> 127.0.0.1:8080
# 配置Proxifier 目标内网IP地址 10.X.X.X -> sock5 通过 - > frp代理

参考文章
https://github.com/Ch1ngg/CaidaoMitmProxy
https://wh0ale.github.io/2019/09/23/%E5%86%B0%E8%9D%8E%E9%80%9A%E4%BF%A1%E7%A0%94%E7%A9%B6/
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
