制限されたシェルを使用してSSH経由で接続されたUbuntu 18.04ユーザーがいます。より正確には、/ etc / passwdのシェルは/ bin / bashですが、その設定はcommand=
Pythonauthorized_keys
スクリプトの実行を制限します。とりわけ、このスクリプトはユーザーが提供したデータをファイルに書き込みます。ファイルパスはユーザーが操作することもできます。攻撃者はこの脆弱性を悪用して任意のファイルを上書きする可能性があると仮定します(ユーザーに書き込み権限があります)。これを悪用して、そのユーザーで任意のコードを実行することで、無制限のシェルを効果的に取得できますか?
攻撃者が制御するデータは、ファイルの先頭に配置されず、以下のようにXMLでラップされています。
<?xml version="1.0" encoding="utf-8"?>
<blah>
<blah blah="ATTACKER_CONTROLLED_DATA" />
<blah>
私は.bashrc
それを次のようにオーバーライドしようとしました。
<?xml version="1.0" encoding="utf-8"?>
<blah>
<blah blah=""
echo exploit?
"" />
<blah>
ただし、bashはこれを解析できないため実行されません。
authorized_keys
ファイルはrootユーザーが所有し、読み取り専用アクセス権を持っているため、ユーザーはこれらのファイルを直接上書きすることはできません。ディレクトリと同じです.ssh
。ホームディレクトリへの書き込みアクセス権がありますが、スクリプトはディレクトリを移動/削除できません。
明らかにこれ理論的に悪用されるかもしれませんが、実際にそのようなことが起こる可能性があることを証明したいと思います。
答え1
データ出力ファイルパスがユーザーが機能し、記録されたデータがユーザーによって提供される場合、そのユーザーは書き込みアクセス権を持つ任意の場所に効果的に書き込むことができます。
SSHを介して実行制限を設定して、ユーザーが残したコードを実行できないようにするのは良いスタートです。注意しない場合は、サービス/サーバーの再起動時に適用される構成ファイルを変更したり、通常のプロセスの実行中に追加のタスクを実行するようにサービススクリプトを変更したりできます。
ファイル設定をしたくないのに、.bashrc
なぜファイルへの書き込みアクセス権を付与するのですか?悪意のあるユーザーが何かを上書きして、このスクリプトに問題が発生しないように権限が正しく設定されていることを確認してください。デフォルトでは、データを記録したい正確な場所にのみ書き込むことができます。