Nessus Vulnerability Scannerは、レガシーコードのWebサイトに対して実行されました。 ヌルバイト注入 PHPでの攻撃がありますが、これをVBScriptで従来のASPで修正する方法は見つかりませんでした。クエリ文字列からヌルバイトインジェクションを防ぐ方法
ここに私たちの公共サイト上でスキャナの攻撃です:
http://www.mortgagedataweb.com/mds/marketshare/ParmsV2.asp?Menu=%00<"kzwezl%20>
私はQueryString
入力に有効性チェックを追加しようとしましたが、私の努力が働いていません。 %00
については、適切な値をチェックしようとする試みが隠されてしまいます。ここではいくつかの関連するコードスニペットは、次のとおり適切です
Function getUserInput(input)
Dim newString
If Len(input) = 0 Then
getUserInput = ""
Exit Function
End If
newString = input 'this was omitted in original post but was in fact in the code
newString = Replace(newString, Chr(0), "") 'I thought this would fix it !
newString = Replace(newString, "--", "")
newString = Replace(newString, ";", "")
newString = Replace(newString, Chr(34),"'")
newString = Replace(newString, "'", "")
newString = Replace(newString, "=", "=")
newString = Replace(newString, "(", "[")
newString = Replace(newString, ")", "]")
newString = Replace(newString, "'", "''")
newString = Replace(newString, "<", "[")
newString = Replace(newString, ">", "]")
newString = Replace(newString, "/*", "/")
newString = Replace(newString, "*/", "/")
getUserInput = newString
End Function
implied_Menu = UCase(getUserInput(Request.QueryString("Menu"))) 'store Menu value for Fast-Path link
Select Case implied_Menu
Case "FHA_ZP", "C_ZP", "J_ZP", "F_ZP"
implied_SQLName = MARKETSHAREZip
Case "P_ALL", "P_MA", "P_ST", "P_ZP", "P_CT", "P_NATION"
implied_SQLName = PMIMARKETSHARE
Case "FHA_ALL_D", "FHA_MA_D", "FHA_ST_D", "FHA_CT_D", "FHA_ZP_D", "FHA_NATION_D"
implied_SQLName = FHAMARKETSHAREDETAILS
Case ""
implied_SQLName = MARKETSHARE
Case Else
Response.Write("<h2>Invalid Menu parameter</h2>")
Response.End
End Select
メニューの値がされている次のいずれか
- 完全に欠落している有効な一連の
- 部分(つまりは
Menu=
はQueryString
ではないが、あります)値がSelect Case
ロジック上にスケッチされている
私の開発マシンでは、%00
を次のように変更できます。 %0
と表示され、エラーがResponse.Write
というメッセージで表示されている場合は、Response.End
となりますが、%00
に関するものが自分のチェックを過ぎてしまいます。
置き換える前に 'newString'に値を割り当てていません。 –
@ Kul-Tiginのように、 'newString'で' Replace() 'を呼び出す前に' input'を 'newString'に代入する必要があります。 – Lankymart
元の投稿にコードを貼り付けるのに誤りがありました。 newStringへの入力値の割り当ては、実際にはコード内にありましたが、このオリジナルの投稿に正しく反映されませんでした。問題は依然として存在する。 –