黑客网站入侵 编程 搭建 渗透 破解
3.87K subscribers
416 photos
12 links
Download Telegram
Weblogic 远程命令执行漏洞(CVE-2020-14645)分析

漏洞复现
漏洞利用 POC,以下的分析也是基于该 POC 进行分析

漏洞分析
了解过 JDNI 注入的都知道漏洞在 lookup() 触发,这里在 JdbcRowSetImpl.class 中 326 行 lookup() 函数处设置断点,以下为漏洞利用的简要调用链条

我们从头分析,我们都知道反序列化的根本是对象反序列化的时候,我们从 IO 流里面读出数据的时候再以这种规则把对象还原回来。我们在 in.readObject() 处打断点,跟进查看 PriorityQueue.readObject() 方法
Merlin后渗透利用框架

为了更好的理解Merlin Agent远控木马的功能,我们先简单使用Merlin后渗透利用框架复现木马上线的过程:

● Merlin Server:运行后默认监听本地的50051端口
●Merlin CLI:运行后默认连接本地的50051端口(Merlin Server)
●Merlin CLI:使用命令开启HTTPS端口监听,默认443端口
●Merlin CLI:远程控制
golang字符串
通过分析,发现在IDA中可看到大量golang库字符串信息,导出函数,通过分析,发现样本存在多个导出函数,尝试查看说明文档及源代码,梳理导出函数信息
配置信息
通过分析,发现样本在进入main_run函数中执行代码时,将从自身样本中提取配置信息,配置信息中包含了内置外联地址、UserAgent、加解密算法等。
远控功能
通过分析,发现样本具备大量远控功能
自动化提取Merlin Agent样本配置信息

由于Merlin Agent样本是开源样本,因此,当我们对其进行样本分析时,只需要尝试提取此样本的特有行为即可。

结合前述分析,我们知道攻击者的自定义行为均存放于配置信息中。

由于此样本是由golang编译的,因此,逻辑上存放于样本中的字符串是无序的,我们可能需要采用上述提取配置信息的方法,基于IDA并定位函数再提取配置信息。
一探究竟--Merlin Agent样本是怎么编译的?
查看Merlin项目说明文档,发现Merlin Agent样本是使用Makefile文件编译

● Merlin Agent EXE木马的Makefile文件内容如下:在Makefile中自定义配置信息,由Makefile调用go build -ldflags="-X xxxx"命令实现变量值的传递

Merlin Agent DLL木马的Makefile文件内容如下:在Makefile中自定义配置信息,由Makefile调用go build -ldflags="-X xxxx"命令实现变量值的传递
自定义提取Merlin Agent样本配置信息

根据上述结论,我们发现,只要使用官方提供的编译方式,即会导致配置信息直接暴露于样本文件中。

因此,针对此类样本,我们即可编写自动化程序实现自动化提取配置信息。

自动化程序提取配置信息
自动化提取配置信息的脚本代码如下:
package main

import (
"bytes"
"fmt"
"io/ioutil"
"os"
"strings"
)

func main() {
filename := os.Args[1]
data, _ := ioutil.ReadFile(filename)
if strings.Contains(string(data), -ldflags=") {
index := strings.Index(string(data), -ldflags=")
offset := bytes.Index(data[index:index+0x1000], []byte{0xA})
configdata := strings.ReplaceAll(strings.TrimSuffix(strings.TrimPrefix(string(data[index:index+offset]), -ldflags="), "), \", ")
fmt.Println(strings.ReplaceAll(configdata, -, string([]byte{0xA})+-))
}
}
检测Merlin Agent木马

为了实现Merlin Agent木马的自动化检测,笔者尝试在网络中搜索了一番,在/Neo23x0/signature-base/blob/38d1f4f0f87c009289a1aef111af9d89d75ed260/yara/gen_merlin_agent.yar地址中找到了针对Merlin Agent木马的yara规则。

虽然此yara规则的时间确实还是比较久了,不过还是能成功检测当前最新版本的Merlin Agent木马了。

yara规则扫描结果如下:(笔者抽选了多个版本的Merlin Agent木马,发现都能成功扫描)
ByteCTF2021_mobile 环境搭建

步骤:
安装dokcer。
在虚拟机上,运行flask服务器。将打包好的pwn.apk放在服务器上。一是,在之后运行的脚本中可以在服务器上下载这个apk。二是,做URL参数解析,用来接收传出的flag。
from flask import Flask, request, send_from_directory
import os
app = Flask(name, static_folder='dist')

@app.route("/")
def hello():
return "hello world"
# URL参数解析
@app.route('/getUrlParam')
def getUrlParam():
# name=request.args["name"]
# password=request.args["password"]
flag = request.args["msg"]
with open("./flag.sql",'w') as f:
f.write(flag)
# print("name:"+name)
# print("password:"+password)
s = "flag: %s"%flag
print(s)
return s
@app.route('/test')
def test():
print("test")
return app.send_static_file('test.html')
# easydroid XSS
@app.route('/exp.html')
在~/ByteCTF2021_Android/babydroid/src_babydroid目录下执行run.sh脚本,生成babydroid容器。docker镜像中有Android虚拟环境。下载镜像需要十到十五分钟。