【TryHackMe】ffuf：Walkthrough

# 概要

TryHackMe「ffuf」のWalkthroughです。

https://tryhackme.com/r/room/ffuf

# Task2

## **Q1**.*What is the first file you found with a 200 status code?*

`ffuf`を実行します。

```
$ ffuf -u http://10.10.193.156/FUZZ -w /usr/share/wordlists/seclists/Discovery/Web-Content/big.txt
```

最初にアイコンのファイルが見つかりました。

```
favicon.ico             [Status: 200, Size: 1406, Words: 5, Lines: 2, Duration: 236ms]
```

**A**.**favicon.ico**

# Task3

## **Q1**.*What text file did you find?*

Task2での実行結果から`robots.txt`の存在を確認できました。

```
robots.txt              [Status: 200, Size: 26, Words: 3, Lines: 2, Duration: 234ms]
```

**A**.**robots.txt**

## **Q2**.*What two file extensions were found for the index page?*

indexページを対象にファイル拡張子を特定します。

```
ffuf -u http://10.10.193.156/indexFUZZ -w /usr/share/seclists/Discovery/Web-Content/web-extensions.txt
```

`phps`,`php`を発見しました。

```
.phps                   [Status: 403, Size: 290, Words: 21, Lines: 11, Duration: 235ms]
.php                    [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 2441ms]
```

**A**.**php,phps**

## **Q3**.*What page has a size of 4840?*

実行結果から`about.php`ファイルが該当すると分かりました。

```
about.php               [Status: 200, Size: 4840, Words: 331, Lines: 109, Duration: 237ms]
```

**A**.**about.php**

## **Q4**.*How many directories are there?*

`ffuf`を実行します。

```
$ ffuf -u http://10.10.193.156/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories-lowercase.txt
```

4つのファイルを検出できました。

```
config                  [Status: 301, Size: 314, Words: 20, Lines: 10, Duration: 234ms]
docs                    [Status: 301, Size: 312, Words: 20, Lines: 10, Duration: 234ms]
external                [Status: 301, Size: 316, Words: 20, Lines: 10, Duration: 236ms]
server-status           [Status: 403, Size: 293, Words: 21, Lines: 11, Duration: 235ms]
```

**A**.**4**

# Task4

## **Q1**.*After applying the fc filter, how many results were returned?*

`-fc`で非表示にするHTTPレスポンスコードを指定します。

```
$ ffuf -u http://10.10.193.156/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files-lowercase.txt -fc 403
```

11個のファイルを検出できました。

```
index.php               [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 240ms]
favicon.ico             [Status: 200, Size: 1406, Words: 5, Lines: 2, Duration: 234ms]
logout.php              [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 235ms]
robots.txt              [Status: 200, Size: 26, Words: 3, Lines: 2, Duration: 235ms]
phpinfo.php             [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 235ms]
login.php               [Status: 200, Size: 1523, Words: 89, Lines: 77, Duration: 4544ms]
.                       [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 236ms]
php.ini                 [Status: 200, Size: 148, Words: 17, Lines: 5, Duration: 237ms]
about.php               [Status: 200, Size: 4840, Words: 331, Lines: 109, Duration: 235ms]
setup.php               [Status: 200, Size: 4067, Words: 308, Lines: 123, Duration: 237ms]
security.php            [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 234ms]
```

**A**.**11**

## **Q2**.*After applying the mc filter, how many results were returned?*

`-mc`で表示するHTTPレスポンスコードを指定します。

```
$ ffuf -u http://10.10.193.156/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files-lowercase.txt -mc 200
```

6つのファイルを検出できました。

```
login.php               [Status: 200, Size: 1523, Words: 89, Lines: 77, Duration: 1377ms]
favicon.ico             [Status: 200, Size: 1406, Words: 5, Lines: 2, Duration: 235ms]
robots.txt              [Status: 200, Size: 26, Words: 3, Lines: 2, Duration: 234ms]
php.ini                 [Status: 200, Size: 148, Words: 17, Lines: 5, Duration: 234ms]
about.php               [Status: 200, Size: 4840, Words: 331, Lines: 109, Duration: 235ms]
setup.php               [Status: 200, Size: 4067, Words: 308, Lines: 123, Duration: 238ms]
```

**A**.**6**

## **Q3**.*Which valuable file would have been hidden if you used -fc 403 instead of -fr?*

`-fr`で正規表現を使用することができます。

```
$ ffuf -u http://10.10.193.156/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files-lowercase.txt -fr '/\..*'
```

`-fc 403`でフィルタリングした際には見つけられなかったファイルを発見できました。

```
wp-forum.phps           [Status: 403, Size: 293, Words: 21, Lines: 11, Duration: 233ms]
```

**A**.**wp-forum.phps**

# Task5

## **Q1**.*What is the parameter you found?*

パラメータ名を`FUZZ`にすることでパラメータ名のファジングを行えます。

```
$ ffuf -u 'http://10.10.69.164/sqli-labs/Less-1/?FUZZ=1' -c -w /usr/share/seclists/Discovery/Web-Content/raft-medium-words-lowercase.txt -fw 39
```

`id`というパラメータを発見しました。

```
id                      [Status: 200, Size: 721, Words: 37, Lines: 29, Duration: 3035ms]
```

**A**.**id**

## **Q2**.*What is the highest valid id?*

パラメータ名が分かったので値のファジングを行います。

```
$ for i in {0..255}; do echo $i; done | ffuf -u 'http://10.10.69.164/sqli-labs/Less-1/?id=FUZZ' -c -w - -fw 33
```

`14`が最大のパラメータだと分かりました。

```
9                       [Status: 200, Size: 725, Words: 37, Lines: 29, Duration: 2315ms]
11                      [Status: 200, Size: 725, Words: 37, Lines: 29, Duration: 2313ms]
7                       [Status: 200, Size: 725, Words: 37, Lines: 29, Duration: 2315ms]
1                       [Status: 200, Size: 721, Words: 37, Lines: 29, Duration: 2394ms]
3                       [Status: 200, Size: 726, Words: 37, Lines: 29, Duration: 2399ms]
14                      [Status: 200, Size: 725, Words: 37, Lines: 29, Duration: 4395ms]
4                       [Status: 200, Size: 725, Words: 37, Lines: 29, Duration: 4399ms]
12                      [Status: 200, Size: 725, Words: 37, Lines: 29, Duration: 4555ms]
10                      [Status: 200, Size: 725, Words: 37, Lines: 29, Duration: 4555ms]
5                       [Status: 200, Size: 728, Words: 37, Lines: 29, Duration: 7110ms]
8                       [Status: 200, Size: 723, Words: 37, Lines: 29, Duration: 7903ms]
6                       [Status: 200, Size: 728, Words: 37, Lines: 29, Duration: 9502ms]
2                       [Status: 200, Size: 731, Words: 37, Lines: 29, Duration: 9503ms]
```

**A**.**14**

## **Q3**.*What is Dummy's password?*

パスワードのファジングを行います。
`-X`でHTTPメソッドを`-d`でリクエストボディを指定し、`-H`でHTTPリクエストヘッダーを指定します。

```
$ ffuf -u http://10.10.69.164/sqli-labs/Less-11/ -c -w /usr/share/seclists/Passwords/Leaked-Databases/hak5.txt -X POST -d 'uname=Dummy&passwd=FUZZ&submit=Submit' -fs 1435 -H 'Content-Type: application/x-www-form-urlencoded'
```

パスワードを特定できました。

```
p@ssword                [Status: 200, Size: 1526, Words: 100, Lines: 50, Duration: 1121ms]
```

**A**.**p@ssword**

# Task8

## **Q1**.*How do you save the output to a markdown file (ffuf.md)?*

**Hint**.*format first*

オプションの解説をします。

- **-of**
    - 出力のフォーマットを指定します
    - json, ejson, html, md, csv, ecsvの指定ができます
    - allで全フォーマットを指定します
- **-o**
    - ファイルに出力を指定するオプションです
- **md**
    - Markdown形式を指定します
- **ffuf.md**
    - 出力するファイル名を指定します


**A**.**-of -o md ffuf.md**

## **Q2**.*How do you re-use a raw http request file?*

`-request`で生のHTTPリクエストファイルを使用できます。

>-request            File containing the raw http request
>> ffuf -hより

**A**.**-request**

## **Q3**.*How do you strip comments from a wordlist?*

`-ic`オプションでワードリストのコメントを除外できます。

>-ic                 Ignore wordlist comments (default: false)
>> ffuf -hより

**A**.**-ic**

## **Q4**.*How would you read a wordlist from STDIN?*

Task5 Q2で使用したように`-w -`と指定することで、出力をワードリストに使用できます。

```
$ for i in {0..255}; do echo $i; done | ffuf -u 'http://10.10.69.164/sqli-labs/Less-1/?id=FUZZ' -c -w - -fw 33
```
**A**.**-w -**

## **Q5**.*How do you print full URLs and redirect locations?*

`-v`オプションを使用することで、フルURLとリダイレクト先も出力します。

> -v                  Verbose output, printing full URL and redirect location (if any) with the results. (default: false)
>> ffuf -hより

**A**.**-v**

## **Q6**.*What option would you use to follow redirects?*

`-r`オプションでリダイレクトを追跡できます。

> -r                  Follow redirects (default: false)
>> ffuf -hより

**A**.**-r**

## **Q7**.*How do you enable colorized output?*

`-c`オプションで出力をカラー化できます。

> -c                  Colorize output. (default: false)
>> ffuf -hより

**A**.**-c**