IIS6.0で動作するCGIからOSコマンドを実行する

方法が分かったので知識を共有しますが、よろしくない方法を使っています。

警告

この方法はIIS6.0が持つ規定のセキュリティばかりでなく、Windowsそのもののセキュリティを著しく低下させます。
少なくとも外部公開向けサーバや、非常に重要な基幹システム、セキュリティポリシーが明確化された環境等では適用しない事を推奨します。
また、以下の情報は、不完全かつ不正確な情報ですので、ご了承ください。

なぜOSコマンドが実行できないのか

インターネット ゲスト アカウントである「IUSR_[ホスト名]」は、「Guestsグループ」に所属しているため、OSコマンドを実行するアクセス権限が無いためです。
なお、念のためにCOMセキュリティのアクセス許可・起動とアクティブ化のアクセス許可の両者に「IUSR_[ホスト名]」または「Guestsグループ」を設定しましたが、OSコマンドを実行する事はできませんでした(当然ですが)。

アクセス権は何を設定すればいいか

「IUSR_[ホスト名]」を「Administratorsグループ」に所属させます。
※念のため「PowerUsersグループ」で試しましたが、ダメでした(これも当然ですが)。
IUSR_[ホスト名]の所属グループを変更したら、インターネットサービスを再起動してください。

Perlのサンプルコード

#!D:/usr/local/Perl/bin/Perl.exe

print "Content-type: text/html\n\n";
if(! open(fp,"DIR /B C:\\|")){
	print "DIRコマンドを実行できませんでした。";
	exit(1);
}
while(<fp>){
	print $_;
}
close(fp);
exit(0);