これをセキュリティに置くべきか、stackoverflow stackexchange に置くべきか確信が持てませんでした。最近、スクリプトの問題を修正/デバッグするように割り当てられました。スクリプトは、ユーザーを管理者ユーザーとして自動的にログインさせます。しかし、ユーザーが特殊文字を持っていると奇妙なことが起こり、それらが禁止されることが観察されました。
そこで、この知識を使ってデバッグを開始しました。私自身がセキュリティ研究者であり、脆弱性のような意味で即座に考えました (奇妙な文字が奇妙なことを行うことを知っています (XSS、SQlInjection、FormatString 攻撃など))。
そのため、コードを見た後、この「脆弱性」にすぐに気付きました。
dim objShell, WshShell
Set args = WScript.Arguments
user = args.Item(0)
passwd = args.Item(1)
set objShell = CreateObject("WScript.Shell")
oShell.run "C:\LoginSystem\Login.exe"
objShell.sendkeys user
wscript.sleep 1000
objShell.sendkeys passwd
user 変数と passwd 変数は注入可能です! これと多くの調整 (Cntl+Esc -> Run -> cmd -> useradd) を使用して、新しい管理者ユーザーを正常に取得できました。
今、私は他の人 (信頼されていない) が同じ種類の攻撃をできないようにしたいと考えています。sendkeys コマンドをエスケープまたはフィルタリングするにはどうすればよいですか? %^ などのキーを評価する代わりに入力するようにします。
私はこれだけを見ました: http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.71).aspx
そして、これをGoogleでフィルタリングする方法が見つかりません。では、VbScript Guru はいますか?
質問を拡張して問題を理解しやすくするには、このプログラムを実行できるようにする方法を見つける必要があります。起動時にウィンドウがポップアップし、ユーザーが提供されたアカウントでログインする必要があります。私はspy++を使用してそのようにボックスを選択できますが、これは彼らが理解していないC++ソースコードをサーバーに統合することを意味します.