ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルで root コマンドを実行する

PHP_PHP チュートリアルで root コマンドを実行する

WBOY
WBOYオリジナル
2016-07-13 17:42:301012ブラウズ

C を学ぶ前に、しばらく PHP を勉強しました。root コマンドを実行するために PHP を使用する必要があったのですが、ある日スーパー プラグインを検索するまで失敗しました。
C の学習に時間を費やすうちに、実行する外部コマンドを C 言語でラップできることがわかり、試してみたところ、うまくいきました。
PHP を使用すると、外部ツールを使用せずに root コマンドを実行できます。
プラットフォーム: Linux 実験用コマンド iptables 現在のディレクトリは /var/www/html/http です
プログラムを作成するときは、root ユーザーを使用してください

iptables は root 以外のユーザーが実行できないことは誰もが知っています

まずはCプログラムを書きます

名前: ipt.c

[コード]

#include
; #include
; #include
#include
;
int main()
{
uid_t uid、euid

uid = getuid(); euid = geteuid();
printf("私のuid:%u ",getuid()); //ここに表示されている現在の uid はコメントアウトできます。
printf("私の EUID:%u ",geteuid()); //ここに表示されるのは現在のeuidです
If(setreuid(euid, uid)) //これら 2 つの ID を交換します
エラー("setreuid"); printf("setreuid uid 後:%u ",getuid());
Printf("後 sertreuid euid :%u ",geteuid());

system("/sbin/iptables -L"); // iptables -L コマンドを実行します
0 を返す
}
[/コード]


ファイル gcc -o ipt -Wall ipt.c をコンパイルします

このパスに ipt 実行可能ファイルを生成します。
ここで PHP Web ページを使用して ipt を呼び出すと、setreuid を実行しても機能しません

次に行うことは chmod u+s ./ipt です


-rwsr-xr-x 1 ルート ルート 5382 7 月 2 日 21:45 ipt

S ビットが設定されました

それを呼び出す別の php ページを作成します。
[コード]
エコー

;

$last_line = システム(/var/www/html/http/ipt, $retval);
エコー

出力の最後の行: $last_line 。
戻り値: $retval; ?>
[/コード]

ブラウザで見る


[color=Red]チェーン入力 (ポリシー ACCEPT)
ターゲット プロト オプト ソース デスティネーション デスティネーション

チェーンフォワード (ポリシードロップ)
ターゲット プロト オプト ソース デスティネーション デスティネーション
すべて同意します -- どこでもどこでも状態 関連、確立

チェーン出力 (ポリシー承認)
目標 [color=Blue]私のUID:48
私のEUID:0
setreuid uid の後:0
セルトロイド・ユーイド以降:48[/color]


-------------------------------------------------- ---------------------------------
出力の最後の行: afer sertreuid euid :48
-------------------------------------------------- ---------------------------------
戻り値: 0


コマンドは正常に実行されました。

ご存知のとおり、Apache の uid は 48 です。 setreuid を呼び出した後、有効なユーザー ID と実際のユーザー ID が交換されます (chmod u+s が有効になるときでなければなりません)。これにより、Apache の現在の uid を 0 にします。 rootコマンドを実行します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486042.html技術記事 C を学ぶ前に、しばらく PHP を勉強していました。root コマンドを実行するために PHP を使用する必要があったのですが、ある日、スーパー プラグインを検索するまでは失敗しました。C を勉強するにつれて、そのことが分かりました。 ..

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。