- PR -

Windows Server 2003+ASPでのCOM実行エラーについて

投稿者投稿内容
minminnana
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 246
お住まい・勤務地: 盛岡
投稿日時: 2006-10-14 15:32
引用:
(匿名認証では既定で "IUSR_マシン名" が使われます)


匿名認証じゃないとどうなるのでしょう?
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-14 16:39
引用:

minminnanaさんの書き込み (2006-10-14 15:32) より:
引用:
(匿名認証では既定で "IUSR_マシン名" が使われます)


匿名認証じゃないとどうなるのでしょう?



IIS 6.0 で ASP が実行される account は下記のようになります。

匿名認証の場合、その匿名 account で、Network logon
基本認証の場合、認証された account で Interactive Logon
統合認証の場合、認証された account で Network logon
# Digest も統合認証に準じていた記憶が・・・

それぞれ、application pool の worker process 起動 account の上で偽装されて実行されています。

んで、本題のほうですけど、Web application で cmd.exe なんか使わんに越したことないです。
# 下手すると、OS command injection の危険性がありますしね。

どうしても必要な場合には、匿名認証の account に対して許可するなんてことはせずに、COM+ server application を利用して、偽装して実行するようにしますね。
# それでも、OS command injection ができないようにちゃんと対策を行う必要があります。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-10-14 16:40
引用:

itaさんの書き込み (2006-10-13 12:11) より:
cmd = "cmd.exe /c dir D: /S /B /A-D > E:test.txt"
response.write("BASP21テスト<BR>")
response.write("CMD=" & cmd & "<BR>")
Set bobj = server.createobject("Basp21")
rc = bobj.Execute(cmd, 1, stdout)
</BODY>


こういうときは、順を追って検証していくほうが良いです。私だったらつぎの順序で試してみます。
(1) BASP21 がちゃんと呼べているのか?Execute 以外のメソッドはちゃんと使えるのか?
(2) cmd.exe 以外の簡単なプロセスは起動できるのか?たとえば notepad.exe(メモ帳) などは?(メモ帳だとデフォルトでは画面には表示できないのでタスクマネージャーなどで調べることになる。)
(3) cmd.exe で他のコマンドも動かないのか?cmd.exe の起動はできているのか?たとえば pause コマンドとかで止めてみて cmd.exe が動いているかをタスクマネージャーなどで調べてみる?(できるのかな?)
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-14 17:02
引用:
こういうときは、順を追って検証していくほうが良いです。私だったらつぎの順序で試してみます。



IIS 5.0 から IIS 6.0 ではいろいろなことが発生しますね。
とりあえず、security 絡みのことが非常に多いため、下記 tool で trace をとったほうがいいでしょうね。

Filemon
Regmon

私の場合、black box test をやることのほうが多かったので、この手の tool は欠かせなかったです。
# いちいち、自分が書いていない source を調べるなんて面どくさいし。

[ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-10-14 17:03 ]
minminnana
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 246
お住まい・勤務地: 盛岡
投稿日時: 2006-10-14 21:57
引用:
IIS 6.0 で ASP が実行される account は下記のようになります。

匿名認証の場合、その匿名 account で、Network logon
基本認証の場合、認証された account で Interactive Logon
統合認証の場合、認証された account で Network logon
# Digest も統合認証に準じていた記憶が・・・


IISの認証ユーザーで偽装されるんですね。
ありがとうございます。勉強になりました。

横道にそれてごめんなさい-->itaさん
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-14 22:53
引用:
IISの認証ユーザーで偽装されるんですね。
ありがとうございます。勉強になりました。



とりあえず、実行される account については理解されていると思いますが、同時に記した logon type に言及がないのが不安です。

Windows Server 2003 上の cmd.exe の ACL を覗いてみればわかりますが、INTERACTIVE が設定されています。cmd.exe に限らず、Windows Server 2003 では INTERACTIVE 等 logon type が絡む account で設定されている ACL が非常に多いです。

ということで、どの account で、どの logon type でってところまで押さえておかないとまずいでしょうね。
minminnana
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 246
お住まい・勤務地: 盛岡
投稿日時: 2006-10-14 23:31
引用:
Windows Server 2003 上の cmd.exe の ACL を覗いてみればわかりますが、INTERACTIVE が設定されています。cmd.exe に限らず、Windows Server 2003 では INTERACTIVE 等 logon type が絡む account で設定されている ACL が非常に多いです。


そうですね。
以前のスレでも今回と同様にINTERACTIVEに嵌っているケースがありましたよね。
私も良く嵌ります。(笑)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29818&forum=6
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-14 23:53
引用:

minminnanaさんの書き込み (2006-10-14 23:31) より:
そうですね。
以前のスレでも今回と同様にINTERACTIVEに嵌っているケースがありましたよね。
私も良く嵌ります。(笑)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29818&forum=6



これで思い出しましたが、default で cmd.exe に Batch で ACL が設定されていないのはなぜ?って疑問がふつふつと・・・

許可するとなんかものすごい問題があるのだろうか・・・

[追記]cmd.exe が一般 user から batch で実行できない問題に対処するには、BATCH にたいして ACL を振ってやるのが適切だと思っています。[/追記]

[ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-10-15 00:03 ]

スキルアップ/キャリアアップ(JOB@IT)