0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XXEとActiveScript

Posted at

XXEとActiveScript

XXEとは

XXE(XML External Entity)とは、XMLの外部参照機能を利用して、サーバ内部のファイル内容を取得(漏えい)したり、内部ネットワーク上のファイルにアクセスしたりする不正行為

XXEは、XMLを扱うアプリケーションで発現する可能性があるので、XML文書を取り扱う際には注意する必要がある。

ActiveScriptとXML

ActiveScript(VBScript/JScript)&WSH/ASPでXMLを扱うには、MS-XMLの利用が考えられる。

よって、以降は、MS-XML を使って、再現させたり、対策を考えてみたりしよう。

テスト環境

Windows10+WSH5.8+VBScript

結論

とりあえず、MS-XML では、外部参照は無効化されているので心配しなくてよいのかもしれない。
→私の環境だけの話かもしれないという点は留意してほしい

MS-XMLでXMLを読む

loadするファイルを普通のin.xmlにすると、こんな感じ。

077.png

読めた。

MS-XMLで外部参照のあるXMLを読む

loadするファイルを普通のin1.xmlにすると、こんな感じ。

078.png

読めない。エラーになった。

resolveExternals プロパティ

外部参照を読む/読まないを制御するフラグがあるようなのだけど、どうも私の環境では有効に機能しないようだ。

IE XXE

IE XXEという話もあるようなので、WSH/ASPでもXXEには注意した方がいいような気がするのだけど、自分の環境で動作しないとなると、どうにもならない orz

ソースコード(testvbs.vbs)

testvbs.vbs
Option Explicit

Dim objDOM
Dim rtResult
Dim argObj
Dim xmlFile

Set argObj = WScript.Arguments
If 0 < argObj.Count Then
 xmlFile = argObj(0)
 Set argObj = Nothing
Else
 Set argObj = Nothing
 WScript.Quit
End If

Set objDom = WScript.CreateObject("MSXML2.DOMDocument.3.0")

objDom.resolveExternals = True

If objDom.load(xmlFile) = True Then
rem WScript.Echo "isResolving is " & CStr(objDom.isResolving)
 DispData objDom.childNodes, ""
Else
 WScript.Echo "load Error"
End If
Set objDom = Nothing

WScript.Quit

Sub DispData(objNode, header)
 Dim obj
 For Each obj In objNode
  WScript.Echo header & obj.nodeName & " - " & obj.nodeValue
  If obj.hasChildNodes = True Then
   DispData obj.childNodes, header & " "
  End If
 Next
End Sub

戻る

XXE基本編へ戻る

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?