任意のコードのコマンドが実行される脆弱性

コードの実行:

  • 原理:
  • あなたは、コードの一部を呼び出すアプリケーションは、文字列関数に変換することができた場合、それはユーザーがコードインジェクションの脆弱性になります。この文字列を制御することができるかどうかを考慮しませんでした。
  • PHPで:
  • evalの
  • 主張する
  • preg_replace( '/ * / E'、 '$ RET = "\\ 1";'、$データ);
  • ASPで:
  • evalの
  • exevute
  • executeglobal
  • JSPで:
  • JSP、PHPのeval関数で、0GNL、SpeIで、等MVELとして使用される反射、反射ベースの表現エンジンとすることができるではありません。

コードが実行される脆弱性:

  • コード実行の脆弱性thinkphpによる1、我々はそのようなサイトにGoogleの検索構文を使用することができます。
  • 2、コードの監査を学んで、自分自身にいくつかのコードが実行される脆弱性を発見しました。

簡単なコードの実行:

  • <?phpの
  •     $データ= $ _GET [ 'データ'];
  •     evalの( "\ $ RET = strtolower(\" $データ\ ");");
  •     エコー$ RET;
  • ?>

使用します。

  • ?のhttp:// localhost /をデータ= $ {のphpinfo();}

防衛のコードの実行方法:

  • 1は、配列保存JSONを使用して、あなたはevalのを読んだときに使用する必要はありません。
  • 2は、ローカルにevalを使用する必要があり、厳密には(ホワイトリスト、ブラックリスト)ユーザデータを処理する必要があります。
  • 図3は、挿入前に制御単一引用符文字列コードにaddslashesエスケープ(にaddslashes、合計相場、はhtmlspecialchars、にhtmlentities、mysql_real_escape_stringの)を含みます。
  • 図4は、preg_replace_callback()交換を利用して、電子のにpreg_replace剤の使用を放棄する(preg_replace_callback())。
  • Eにpreg_replace修飾子、単一引用符に包まれたが、確かに定期的(定期的にpreg_replace +)をマッチした場合、オブジェクト5は、使用する必要があります。
发布了48 篇原创文章 · 获赞 145 · 访问量 5633

おすすめ

転載: blog.csdn.net/cldimd/article/details/105009974