web-dev-qa-db-ja.com

Apache Shellからrootへのエスカレーション

Noobに関する質問が1つあります。SlackwarelinuxサーバーでShellshockを悪用しようとしましたが、リバースシェルとユーザーエージェントで接続した後、Apacheユーザーであり、Apacheユーザーにはあまり権限がないため、 rootアカウントにアクセスしたり、システムで問題を起こしたりすることは誰にもできません。私は正しいですか?

some tries

7
Vladimir

悪用したプロセス/スクリプトのUIDにアクセスするのは正しいことです。 Apache ID 必須のアクセス制御なしの場合、および開発者とApacheの役割を適切に分離しない場合、次のことができます。

  • apacheが実行するWebサイトを破壊または改ざんする
  • webサイトのコードを変更して、固定URLですべてのユーザーデータベースをリークし、参照できるようにする
  • 悪意のあるスクリプトをページに追加して、サイトの訪問者にマルウェアを提供する
  • 独自のWebサイトをホストする(たとえば、既存のボットネットのコマンドと制御インフラストラクチャを拡大する)

Apache管理者の役割を実際のプロセスから分離しない基本的な必須アクセス制御(SELinux/AppArmorなど)ポリシー(通常、実際のApacheバイナリを実行するドメインがApache _ * _ tファイルに書き込むことを許可する)とおそらく次のことができるWebコードへの読み取り専用アクセス:

  • Apacheの設定を変更
  • 既存のApacheプロセスをシャットダウンし(UIDで実行されるため)、新しい構成で新しいプロセスを開始します。

そして、おそらく他のいくつかのこと...ここでは、OS自体についてはまったく気にせず、ホストコンテンツの機能、データを盗み、既存および訪問したWebサイトを変更することを気にします。エクスプロイト後に保持するセキュリティは、実際には最初にOSをどの程度適切に区分化したかに依存します。

10

それらはonlyがApacheユーザーアカウントへのアクセス権を持っている可能性がありますが、攻撃者が 権限を昇格 rootの権限に。

ローカル権限の昇格は、あるユーザーが別のユーザーのシステム権限を取得したときに発生します。ネットワーク侵入者は、システムに足場を固めると、特権を増やすための多くの手法を利用できます。最初の侵入はどこからでも開始できます。ゲストアカウント?不用意にユーザー名とパスワードをPost Itメモに書き込んだローカルユーザーですか?日常のユーザーは通常、比較的低い特権レベルで操作します。特に、資格情報を取得したユーザーがシステムを制御できないようにするためです。侵入者は内部に入ると、特権エスカレーション手法を使用してシステムの制御レベルを高めます。

たとえば、単純に Linuxカーネル<= 2.6.36-rc8-RDSプロトコルローカル権限エスカレーション を実行すると、現在のシェルが脆弱なカーネルのルートに昇格します。

[limited@Fedora ~]$ whoami
limited
[limited@Fedora ~]$ id
uid=500(limited) gid=500(limited) groups=500(limited)

[limited@Fedora ~]$ ./linux-rds-exploit 
[*] Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg
[*] Resolving kernel addresses...
 [+] Resolved rds_proto_ops to 0xe125ca1c
 [+] Resolved rds_ioctl to 0xe124706a
 [+] Resolved commit_creds to 0xc0444f65
 [+] Resolved prepare_kernel_cred to 0xc0444dc6
[*] Overwriting function pointer...
[*] Triggering payload...
[*] Restoring function pointer...
[*] Got root!
sh-4.0# whoami
root
4
SilverlightFox