【TryHackMe】Introduction to Django：Walkthrough

# 概要

TryHackMe「Introduction to Django」のWalkthroughです。

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

# Task2

## **Q1**.*How would we create an app called Forms?*

**A**.**python3 manage.py startapp Forms**

## **Q2**.*How would we run our project to a local network?*

**A**.**python3 manage.py runserver 0.0.0.0:8000**

# Task4

## **Q1**.*Flag from GitHub page*

下記リポジトリにアクセスします。

https://github.com/Swafox/Django-example

READMEにフラグがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/51692c32-4295-fe0b-3fdf-636467d5395b.png)

**A**.**THM{g1t_djang0_hUb}**

# Task5

## **Q1**.*Admin panel flag?*

ポートスキャンを実行します。

```
$ nmap -Pn -T4 -sVC -A -p- 10.10.115.76 -oN nmap_result
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 35:30:91:45:b9:d1:ed:5a:13:42:3e:20:95:6d:c7:b7 (RSA)
|   256 f5:69:6a:7b:c8:ac:89:b5:38:93:50:2f:05:24:22:70 (ECDSA)
|_  256 8f:4d:37:ba:40:12:05:fa:f0:e6:d6:82:fb:65:52:e8 (ED25519)
8000/tcp open  http-alt WSGIServer/0.2 CPython/3.6.9
|_http-title: DisallowedHost          at /
|_http-server-header: WSGIServer/0.2 CPython/3.6.9
| fingerprint-strings: 
|   FourOhFourRequest: 
|     HTTP/1.1 400 Bad Request
|     Date: Thu, 19 Dec 2024 14:35:54 GMT
|     Server: WSGIServer/0.2 CPython/3.6.9
|     Content-Type: text/html
|     Connection: close
|     <!DOCTYPE html>
|     <html lang="en">
|     <head>
|     <meta http-equiv="content-type" content="text/html; charset=utf-8">
|     <meta name="robots" content="NONE,NOARCHIVE">
|     <title>DisallowedHost
|     /nice ports,/Trinity.txt.bak</title>
|     <style type="text/css">
|     html * { padding:0; margin:0; }
|     body * { padding:10px 20px; }
|     body * * { padding:0; }
|     body { font:small sans-serif; background-color:#fff; color:#000; }
|     body>div { border-bottom:1px solid #ddd; }
|     font-weight:normal; }
|     margin-bottom:.8em; }
|     margin:1em 0 .5em 0; }
|     margin:0 0 .5em 0; font-weight: normal; }
|     code, pre { font-size: 100%; white-space: pre-wrap; }
|     table { border:1px solid #ccc; border-collapse: collapse; width:100%; ba
|   GetRequest: 
|     HTTP/1.1 400 Bad Request
|     Date: Thu, 19 Dec 2024 14:35:48 GMT
|     Server: WSGIServer/0.2 CPython/3.6.9
|     Content-Type: text/html
|     Connection: close
|     <!DOCTYPE html>
|     <html lang="en">
|     <head>
|     <meta http-equiv="content-type" content="text/html; charset=utf-8">
|     <meta name="robots" content="NONE,NOARCHIVE">
|     <title>DisallowedHost
|     /</title>
|     <style type="text/css">
|     html * { padding:0; margin:0; }
|     body * { padding:10px 20px; }
|     body * * { padding:0; }
|     body { font:small sans-serif; background-color:#fff; color:#000; }
|     body>div { border-bottom:1px solid #ddd; }
|     font-weight:normal; }
|     margin-bottom:.8em; }
|     margin:1em 0 .5em 0; }
|     margin:0 0 .5em 0; font-weight: normal; }
|     code, pre { font-size: 100%; white-space: pre-wrap; }
|     table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
|_    tbody
```

ポートの稼働状況が分かりました。

|ポート|サービス|バージョン|
|:-:|:-:|:-:|
|22|ssh|OpenSSH 7.6p1|
|8000|http|WSGIServer/0.2 CPython/3.6.9|

`8000`番ポートにアクセスするとエラーが出ています。
`ALLOWED_HOSTS`にIPアドレスを追加する必要がありそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/80ac530c-d37d-8a12-5389-1cec9792a9cb.png)


ユーザー名とパスワードが既に与えられているのでSSHログインが出来ました。

```
$ ssh django-admin@10.10.115.76
django-admin@py:~$
```

`messagebox`ディレクトリを発見しました。

```
$ ls -la
total 60

(省略)

drwxr-xr-x  4 django-admin django-admin 4096 Apr 10  2020 messagebox
```

中にはDjangoアプリのデータがあります。

```
$ ls -la
total 160
drwxr-xr-x 4 django-admin django-admin   4096 Apr 10  2020 .
drwxr-xr-x 9 django-admin django-admin   4096 Dec 19 14:12 ..
-rw-r--r-- 1 django-admin django-admin 135168 Apr 10  2020 db.sqlite3
-rw-r--r-- 1 django-admin django-admin   6148 Apr 10  2020 .DS_Store
drwxr-xr-x 5 django-admin django-admin   4096 Apr 10  2020 lmessages
-rwxr-xr-x 1 django-admin django-admin    630 Apr 10  2020 manage.py
drwxr-xr-x 3 django-admin django-admin   4096 Apr 10  2020 messagebox
```

`messagebox/settings.py`の`ALLOWED_HOSTS`にIPアドレスを追加します。

```messagebox/settings.py
ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1', '10.10.115.76']
```

`8000`番ポートにアクセス出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d515cc47-4186-2695-c8a4-0efb82575ada.png)

`/admin`が管理パネルなので与えられている認証情報でログインを試みると失敗しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d24ab510-2a38-33e9-0b62-3d74b949485a.png)

Djangoのスーパーユーザーを作成します。

```
$ python3 manage.py createsuperuser
Username (leave blank to use 'django-admin'): admin
Email address: admin@admin.com
Password: 
Password (again): 
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.                                     
This password is too common.                                                                           
Bypass password validation and create user anyway? [y/N]: y                                            
Superuser created successfully.
```

作成したアカウントでログインに成功しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/ef73ebd6-e693-5887-46f7-173e4d35ee23.png)

`Users`からフラグを得られました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/4ddd5d7e-9272-daae-eeb0-e3dffacd2a89.png)

**A**.**THM{DjanGO_Adm1n}**

## **Q2**.*User flag?*

続いて`Users`を見ていくとSSH用のアカウントもあるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/80222efc-c82a-9577-f1f4-73598b5b764b.png)

指定されたpastebinのURLにアクセスするとハッシュ値があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/c56d0ac6-5dce-c345-0d03-30584b1271e5.png)

ハッシュ値を解析し、平文を特定できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/309294b0-ff12-aeef-281a-a38b45db4eb3.png)

`StrangeFox`アカウントでSSH接続に成功しました。

```
$ ssh StrangeFox@10.10.115.76
StrangeFox@py:~$
```

`/home/StrageFox/user.txt`からユーザーフラグを入手できました。

```/home/StrageFox/user.txt 
THM{SSH_gUy_101}
```

**A**.**THM{SSH_gUy_101}**

## **Q3**.*Hidden flag?*

**Hint**.*Did you see any identical files?*

`/home/django-admin/messagebox/messagebox/home.html`にフラグを発見しました。

```/home/django-admin/messagebox/messagebox/home.html 
{% extends 'base.html' %}
{% block title %}Home page{% endblock %}

{% block content %}
        <body bgcolor="#E6E6FA">
        <h1><center>Message box v1.1</center></h1>
        <br>
        <center><p>Hi! Welcome back to your inbox. Seems like you got a new message!</p></center>
        <center><p>Check it out here:</p></center>
        <center><p><a href="/messages">Messages</a></p></center>
        <!-- Flag 3: THM{django_w1zzard} -->

{% endblock %}
```

**A**.**THM{django_w1zzard}**