ネットワーク セキュリティの詳細な研究の最初のレッスン - 一般的なフレームワークの脆弱性 (RCE コードの実行)


1. コード実行の概要

コード実行の定義:
------ アプリケーションが文字列をコードに変換できる関数 (PHP の eval など) を呼び出すとき、ユーザーが文字列を制御しているかどうかは考慮されないため、コード実行の脆弱性が発生します。リモート コード実行は、実際にはサーバー Web サイトのコードを呼び出して実行します。

------ コード実行の脆弱性とは、アプリケーション自体が厳密にフィルタリングされておらず、ユーザーが実行リクエストを通じてアプリケーションにコードを挿入できることを意味します。


2. コード実行関連機能

  • PHP:eval、assert
  • JavaScript:eval
  • Vbscript: 実行、評価
  • Python:実行
  • Java: Java には、PHP の eval 関数のような、文字列をコード実行に直接変換できる関数はありませんが、リフレクション メカニズムがあり、OGNL、SpEL など、リフレクション メカニズムに基づいたさまざまな式エンジンがあります。 、MVEL など。これらはコード実行の脆弱性を引き起こす可能性があります。

1、評価

文字列を関数として実行するには、セミコロン; で終わる完全なステートメントを渡す必要があります。最も一般的に使用される関数は次のとおりです。

<?php eval('echo "hello";'); ?>

2、アサート

文字列であるかどうかを判断し、文字列である場合はコードとして実行されます。
在php7.0.29之后的版本不支持动态调用

低版本
<?php  assert($_POST['a']); ?>

7.0.29之后
<?php
	$a = 'assert';
	$a(phpinfo());
?>

3. ${ } コードを実行します

中間のphpコードが解析されます。

${
    
    phpinfo()};

3. コマンド実行とコード実行の違い

  1. 関与する機能が異なります

  2. コマンド実行
    :一般にオペレーティングシステムのコマンド
    远程コードの実行:一般にスクリプトコードのことを指します。


おすすめ

転載: blog.csdn.net/p36273/article/details/132919905