http://jvndb.jvn.jp/ja/cwe/CWE-94.htmlにphpでの攻撃例がありますが
php同様なperlでの攻撃例(脆弱なコードの例と攻撃例)
を教えてください
OSコマンドインジェクションではなく
「コードインジェクション」=スクリプトを挿入する攻撃について
それから、上記のようなご質問者様の区別には違和感があります。
この脆弱性のカテゴリにおける最も典型的な例として、SQL インジェクションおよび書式文字列の問題があります。
ご質問者様が挙げたページにも、上記のようにあります。つまり、SQLインジェクションは(コード)インジェクションに含まれるということです。
意図するOSコマンドの構文やふるまいを改ざんすることが(略)
同様に、OSコマンドインジェクションもコードインジェクションに含まれます。そのページのPHPのサンプルコードも、結局systemを使って攻撃していますね。
インジェクションというとOSコマンドやSQLの記事が多いから、ご質問されたのだと思います。しかしなぜ多いかといえば、それらが攻撃者にとって攻撃目標になりやすいからです。
防御側は相手の攻撃に対応しないといけなくて、好きな防ぎ方をするわけにいかないので、コマンドの例を避けることにメリットがあまりないと思います。
こちらが参考になると思います。
OSコマンドインジェクション攻撃 ‐ 通信用語の基礎知識
サンプルソースコード(Perl)
CGIプログラムで、メールアドレスの登録者に自動で返信する処理を想定する。#!/usr/bin/perl use strict; use CGI; my $cgi = new CGI; my $mail = $cgi->param('mail') my $fp; open(fp, "|/usr/lib/sendmail $mail"); print fp "Subject: Registration of mail address\n"; print fp "From: regist@example.com\n\n"; print fp "登録ありがとうございます。\n"; close($fp);この例では、Webのフォームなどから呼ばれ、利用者が入力したメールアドレスがCGIパラメーターmailの値となることとする。
もしメールアドレスに「nurupo@example.jp」と入力された場合、上のプログラムでは次のような文字列を作り、シェルに渡され実行される。/usr/lib/sendmail nurupo@example.jp恐らくこれが、本来想定された動作だろう。しかしもし、悪意ある利用者が「nurupo@example.jp; rm -rf /」と入力した場合、どうなるであろうか。この場合、次のコマンドが実行されてしまう。
/usr/lib/sendmail nurupo@example.jp; rm -rf /
OSコマンドインジェクションではなく
「コードインジェクション」=スクリプトを挿入する攻撃について
それから、上記のようなご質問者様の区別には違和感があります。
この脆弱性のカテゴリにおける最も典型的な例として、SQL インジェクションおよび書式文字列の問題があります。
ご質問者様が挙げたページにも、上記のようにあります。つまり、SQLインジェクションは(コード)インジェクションに含まれるということです。
意図するOSコマンドの構文やふるまいを改ざんすることが(略)
同様に、OSコマンドインジェクションもコードインジェクションに含まれます。そのページのPHPのサンプルコードも、結局systemを使って攻撃していますね。
インジェクションというとOSコマンドやSQLの記事が多いから、ご質問されたのだと思います。しかしなぜ多いかといえば、それらが攻撃者にとって攻撃目標になりやすいからです。
防御側は相手の攻撃に対応しないといけなくて、好きな防ぎ方をするわけにいかないので、コマンドの例を避けることにメリットがあまりないと思います。
コメント(1件)
あと、回答のでもシェルコード経由でphpやperlのコード入れれるとか出来なくもない。
あと、JVNのは外部ファイル経由だけど、そこもこだわりポイントかどうかとか。
perlでシェルコードではないコードインジェクションというとeval使ってるとか、引数でuseしてるとか、useする設定ファイルを書き出しているとか?