パスワード変更画面の場合1

# sWebMachineGun.exe実践編

パスワード変更画面では、「新しいパスワード」と「確認のためのパスワード」の二つを同時に置換する必要がある

ポイント1は、sWebMachineGun.exeでは、「DuplicationList」という重複パラメータ置換指定があるので、それを使うこと

ポイント2は、sWebMachineGun.exeでは、マクロ「%R%」が「置換後文字列」というマクロなので、それを使って、更新したパスワードを元に戻すこと

## 診断対象

こんな感じ
<table border="1">
<tr><th align="center">パスワード変更画面</th><th align="center">結果画面</th></tr>
<tr><td><a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/a1834b6d-f014-84be-3c34-45f08c45ab18.png"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/a1834b6d-f014-84be-3c34-45f08c45ab18.png" width="70%" height="70%"></a></td><td><a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/778050d1-ce2e-6a95-24a0-b8d5fc1ca643.png"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/778050d1-ce2e-6a95-24a0-b8d5fc1ca643.png" width="70%" height="70%"></a></td></tr>
<tr><td colspan="2" valign="top">POST /sanaki/yourdata/testPasswordChange.asp HTTP/1.0<BR>
Content-Type: application/x-www-form-urlencoded<BR>
Content-Length: 0<BR>
<BR>
oldPassword=password&NewPassword=Newpassword&NewPasswordConfirm=Newpassword</td>
</tr>
</table>

変数「NewPassword」と「NewPasswordConfirm」は同時に置換していく必要がある

さらに、再度「パスワード変更を実施して、元のパスワードに戻す」という処理を入れないと、一度パスワード変更に成功してしまうと「既存のパスワードが違います」エラーで溢れることになる

## sWebMachineGun.exeの設定

メインの設定は、HTTPリクエストの設定と、置換方法の設定

### sWebMachineGun.exeの設定1

「Request」タブに、二つのHTTPリクエストを設定する

最初は置換処理のメインとなるHTTPリクエスト

![023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/21b65ad3-ec57-753c-4213-4600cb381dc0.png)

この画面は、「[一つのHTTPリクエスト(一番シンプル)](https://qiita.com/tomoki0sanaki/items/bf5425c33bab876b6287)」とかと同じなので、特に説明は不要だろう

二つ目は、もしパスワードが更新されたときに備えて、再び元のパスワードに戻すリクエストが必要。
そうしないと、一度パスワード更新に成功してしまうと、それ以降は「既存のパスワードと一致しません」というエラーばかり出て、脆弱性診断にはならない
「直近5回のパスワードには戻せません」というメッセージが表示されるようなら、リクエストを6回分用意して、最終的に元のパスワードに戻す必要があるかもしれない

![024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/e8197989-906b-dda2-ff0b-96c77a3a3963.png)

変数「oldPassword」の値が「%R%」となっているのは、マクロで置換後文字列を意味しているので、これでパスワードは元に戻ることになる

### sWebMachineGun.exeの設定2

「Setting」タブの置換方法は、キャプチャ画像を分かりやすくするために2つだけ。

- 「値」の前方に「'&quot;\'\&quot;`a--&gt;&lt;s&gt;【マーキング文字】【変数名】/&lt;/s&gt;」を追加する
- 「値」の前方に「'」を追加する

「お勧め」ボタンにはいろいろな置換方法が用意してありますよ。

「UseName」をチェックして、パラメータの解析(名前と値を解析)を実施するように指示する

![025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/9eb709c0-14d3-4d93-d5a4-2baa6d302a56.png)

「Duplication」というボタンを押下して、ダイアログを表示させる

### sWebMachineGun.exeの設定3(Duplicationの設定)

「Setting」タブの「Duplication」ボタンの押下で表示されたダイアログ/ウィンドウ

- 左上が、編集中の対象変数の名前。
- 対象変数には「ArgName1」という変数名の名前。
- 対象変数には「ArgName2」という変数名の名前の中のJSON/XML/BSONの名前。
- 例えば「ArgName1」が「name1」で「ArgName2」が「name2.name3」だとすると、変数「name1」の値がJSONになっていて、JPathで「name2.name3」が重複する変数の値。ということになる
- ボディ全体がJSON/XML/BSONの場合は、「ArgName1」は空欄にする
- タイプは、とりあえず「normal」を選択
- 右上は、対象変数の組。
- 「Add」ボタンで、下側の一覧に追加される
- 画面では「password」と「passwordConfirm」という二つの変数が組となっている
- 画面下が、セットされた重複変数の組を示す→ここまでセットして、リクエストに反映される
- 「Set」ボタンで、登録が完了する

![026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/d74cc9ce-c6ad-a558-143f-688e5ebaa9ae.png)

## sWebMachineGun.exeの実行

「Execute」ボタンで、実行できるのですが、結果はこんな感じで、変数「NewPassword」の時は変数「NewPasswordConfirm」も一緒に置換されるていることが分かると思う。

![027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/2509fce3-ded3-4ba4-0b32-1376125a36ca.png)

2つ目のリクエストテンプレートの「%R%」も置換後文字列に置き換わっている事が分かると思う。

![028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/78228fd0-cf0a-1dc6-9516-25cd54b11a53.png)

# sWebMachineGun.exe Index

[sWebMachineGun.exe のメインメニューに戻る](https://qiita.com/tomoki0sanaki/items/e2b7767551a576b1dbd3)