Ⅰ. 概要
実習では、以前の投稿に続き、データベースサーバーのインストールと、Web Application Serverとの接続を行います。Hping3ツールを使用して、DDoS攻撃に関連する簡単な実習を行います。また、John the Ripperツールを使用して、アカウントのパスワードを特定する攻撃手法の実習を行います。さらに、SQLインジェクションを例として、簡単なインジェクション攻撃についても学習します。
Ⅱ. データベース
DBサーバーは MariaDBこのデータベースを使用する予定です。データベースサーバーをインストールする前に、接続できることを確認してください。 ConnectorをTomcat (WAS)サーバーにダウンロードし、環境変数を設定します。 環境変数には、JavaとTomcatの両方を登録します。これは、TomcatとJavaがConnectorのようなライブラリを利用できるようにするためのものです。
※ 環境変数は、Linux (Ubuntu) で設定 /etc/profile登録手続きを代行します。そして、 セット コマンドを使用して、環境変数の設定情報を確認することができます。

`/etc/profile` ファイルを以下のように修正することで、目的を達成できます。 `export` は環境変数の設定を意味し、`PATH` には、既存のパスに加え、Java や Tomcat の実行に関連するパスを追加します(`bin` ディレクトリは実行に関連するディレクトリです)。 最後に、`CLASSPATH` に Tomcat の `lib` ディレクトリを指定します。これにより、Connector がダウンロードされます。 MariaDB 接続ツールダウンロードリンクを提供します。
MySQL :: MySQL Connector/J (過去バージョン) のダウンロード
MariaDB Connector と呼ばれるものですが、実際には MySQL と同じデータベースであるため、同じように扱える可能性があります。詳細については、検索して確認することをお勧めします。
※ ソース: /etc/profile コマンドを入力すると、変更した設定ファイルをすぐに適用できます。

このリンクをコピーして、「wget」コマンドを使って、任意の場所にダウンロードしてください。 `sudo apt install binutils` パッケージをインストールした後 'ar -x mysql-connector-j_8.0.33-1ubuntu20.04_all.deb' ファイルを開き、「tar xvzf data.tar.xz」で圧縮ファイルを展開すると、以下のような「usr」フォルダが作成されるはずです。

`/usr/local/apache-tomcat-9.0.82/lib/usr/share/java/mysql-connector-j-8.0.33.jar` にある `mysql-connector-j-8.0.33.jar` ファイルを、`/usr/local/apache-tomcat-9.0.82/lib` フォルダに移動し、`debian`, `control`, `data`, `deb`, `usr` ファイルとディレクトリはすべて削除してください。 以下のファイルとディレクトリは残してください。

指示されたコマンドにより、環境設定を適用し、Tomcatサーバーを再起動します。その後、データベースサーバーのインストールのため、別の仮想マシンプログラムにアクセスします。 `sudo apt install mariadb-server`MariaDBをインストールします。「sudo systemctl enable mariadb」を実行することで、仮想マシンの起動時に自動的に起動するように設定することも可能です。

インストール後、管理者権限でrootアカウントを使用してMariaDBシェルにアクセスし、さまざまなデータベース操作を実行できます。
create database test; #스키마 생성
create user 'test'@'%' identified by '1234'; #새로운 계정 생성
grant all privileges on *.* to test@'%'; #스키마에 대한 계정 권한 부여
flush privileges; #권한 변경 즉시 적용コメントには記載しておきますが、データベースの理解には学習が必要です。関連するコマンドや動作については、別途学習することを強く推奨します。内容が多岐にわたるため、ここではコメントによる説明で代用し、本文を簡潔にまとめます。
create table member(
id int,
name varchar(15),
password varchar(20)
);
insert into member(id, name, password)
values
(1, '일', 'abcd'),
(2, '이', 'bcde'),
(3, '삼', 'cdef'),
(4, '사', 'defg'),
(5, '오', 'efgh');そして、ここでは、ある種のデータが存在するという前提で説明を進めます。
今後は、Tomcat (WAS) サーバーで、正常にデータが転送されているかを確認します。 /usr/local/apache-tomcat-9.0.82/webapps このパスの既存のルートディレクトリの名前を、例えば「ROOT.ori」のように自由にに変更し、`mkdir`コマンドを使用して新しいルートディレクトリを作成します。その後、ルートディレクトリに移動し、`index.jsp`ファイルを作成します。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*" %>
<!DOCTYPE html>
<%
String DB_URL = "jdbc:mysql://10.10.10.10:3306/test";
String DB_USER = "test";
String DB_PASSWORD = "1234";
String sql = "";
Connection conn = null;
PreparedStatement ptmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
sql = "select * from member where id = 1";
ptmt = conn.prepareStatement(sql);
rs = ptmt.executeQuery();
if (rs.next()){
out.println("Success "+rs.getString("name")+" "+rs.getString("password"));
}else {
out.println("실패");
}
}catch(Exception e){
out.println(e);
}finally{
conn.close();
ptmt.close();
rs.close();
}
%>添付ファイルテスト.sqlファイルのダウンロード接続が正常に機能しているかを確認することが重要ですので、上記のように記述します。最後に、データベースサーバーは127.0.0.1のみにアクセスを許可しているため、`/etc/mysql/mariadb.conf.d/50-server.cnf`というパスにアクセスし、 バインドアドレス 特定の箇所を、すべてのIPアドレス(0.0.0.0)に置き換えます。

そして、`sudo systemctl restart mysqld`コマンドを実行することで、データベースサーバーを再起動できます。

このような変化を確認することができます。今、すべてのサーバーが稼働している状態で、Webサーバーの住所にアクセスすると、


単にWASサーバーとの接続が確立されるだけでなく、データベースサーバーのデータも取得できる!
Ⅲ. Hping3
大量のパケットを送信し、サーバーを停止させる目的を持つ DDoS攻撃まずは、簡単に体験してみようと思います。 `sudo apt install hping3`インストール作業を行います。インストールが完了したら `sudo hping3 --icmp 10.10.10.7 (3層構成のWebサーバーのIPアドレス) --rand-source --flood`指示を実行してみます。

したがって、パケットを送信しますが、このパケットは特別なログに記録されないため。 tcpdump パケットの履歴をファイルとして保存し、ダウンロードする必要があります。ウェブサーバーで「tcpdump -w test.pcap」というコマンドを実行すると、パケットのログをファイルとして保存できます。

そのような指示を入力すると、自動的に書き込みが継続されるため、個別に書き込みを停止する必要があります。 WinSCP プログラムを使用して、test.pcapファイルを自身のオペレーティングシステムに送信してください。 Wireshark プログラムとして表示すると、

このような多数のping攻撃の記録が表示されるでしょう。これは、実質的に効果のないDDoS攻撃の試みと考えることができます。
※ tcpdump で特定のポート番号を監視: `tcpdump` コマンドには、特定のポートからのパケットのみを保存するオプションもあります。
Ⅳ. ジョン
「イギリスの連続殺人犯、ジャック・ザ・リップという人物に由来」 ジョン・ザ・リッパー「クラックツール」というものが存在します。これは、UNIXのオペレーティングシステムのパスワードを解読するために開発されたもので、非常に簡単なパスワードであれば、すぐに解読できるというものです。 様々な暗号アルゴリズムこのファイルが存在します。このファイルには、この亀裂に関する暗号化リストが記載されています。
john --wordlist=경로 및 파일명このコマンドを使用できます。すでにインターネット上で公開されている 脆弱なパスワードリストファイルこのファイルをダウンロードし、Johnというプログラムを起動できるように設定することができます。本格的に体験するために `sudo apt install john`これを取り付けます。動作確認のため `sudo adduser test1 (ユーザー名)` コマンドを使用して、新しいLinuxアカウント(パスワードは「piglet」で簡単に設定)を作成します。新しいアカウントが正常に作成されたかどうかを確認するために、/etc/passwd ファイルを確認します。

任意のディレクトリに「john」というディレクトリを作成します。既存の「passwd」ファイルにはハッシュ化されたパスワードが格納されているため、ハッシュ化されたパスワードが保存されている「/etc/shadow」ファイルを「unshadow」して、「passwd」ファイルの該当部分をハッシュ化されたパスワードに置き換えて、新しいファイルとして保存する必要があります。これは、「john」ディレクトリ内で行うことになります。 `sudo unshadow /etc/passwd /etc/shadow` > ./passwdコマンドを実行し、変換されたLinuxのユーザーアカウントのパスワードファイルを保存します。保存したpasswdファイルを開くと、

このような状態が保存されている様子を確認できます。次に、実際に「クラック」(ランダムな方法でアカウントのパスワードを特定する)を実行し、パスワードを特定する方法は、 「ジョンを探すための暗号ファイル」設定で「実行」を選択してください。実際に検索するまでに時間がかかる場合があるため、事前に作成した「test1」アカウントのパスワードのみを検索するように設定します。 `john --user=test1 ./passwd` コマンドを入力すると、検索結果が表示されます(自動で表示されます)。

※ /etc/sudoers このファイルが存在し、このファイルを編集することで、通常のユーザーアカウントに管理者権限を付与できます。本来、このファイルを編集すると危険な可能性があるため、警告が表示されますが、無視しても構いません。

これらの変更を保存した後、再度ログインすると、管理者権限を利用できるようになります。また、 /etc/ssh/sshd_config ファイルが存在し、このファイルはSSHプロトコルを使用してアクセスする場合、rootアカウントに関する情報が含まれています。 SSHサーバーでのログインの許可または拒否の設定これにより、直接ルート権限でログインできるようになるか、またはそれを阻止することができます。ファイルを開くと、以下のような表示になります。

PermitRootLogin の設定を修正してください。
※ 注射 これは、ある概念に基づいた手法で、悪意のあるコードを使って、プログラムの脆弱性を攻撃する方法です。具体的には、ウェブサイトがログイン時にデータベースからユーザーテーブルを検索する際に、
select * from member where id = '' and pw = ''そうですね。その際、パスワードを
aaa' or 'x' = 'x「ロ」という値を入力した場合、SQLクエリは
select * from member where id = 'abc' and pw = 'aaa' or 'x' = 'x'そして、このシステムは以下のように動作します。 またはどちらか一方の条件が真であれば、ログインが成功するため、SQLインジェクション攻撃によって、ログインが突破される可能性があります。これは、基本的なSQLインジェクション攻撃の例であり、アカウントの変更時に権限を変更したり、JavaScriptのコードを挿入してログインを妨害するケースも考えられます。
おまけ
ついに、今週の授業に関連する重要な部分はほぼ整理できたようです。最後の日に(金曜日)行われたDockerに関する部分はまだ残っていますが、今後予定されているクラウドに関する授業で取り扱うことができると考えているので、時間になったらまとめて投稿します。後で学習した場合、まとめて投稿するか、ある程度学習してから個別に投稿するかを検討します。
ログイン