TryHackMe

TryHackMe(THM): OWASP Top 10 -Writeup 2/3

みんな大好きOWASPルームの続き

前の記事

もくじ
  1. Task 12 [Severity 4] XML External Entity
  2. Task 13 [Severity 4 XML External Entity – eXtensible Markup Language
  3. Task 14 [Severity 4] XML External Entity – DTD
  4. Task 15 [Severity 4] XML External Entity – XXE Payload
  5. Task 16 [Severity 4] XML External Entity – Exploiting
  6. Task 17 [Severity 5] Broken Access Control
  7. Task 18 [Severity 5] Broken Access Control (IDOR Challenge)
  8. Task 19 [Severity 6] Security Misconfiguration
  9. Task 20 [Severity 7] Cross-site Scripting

Task 12 [Severity 4] XML External Entity

No answer needed

XXE攻撃の説明。

XMLを外部から受け取るページは、外部実態参照の形でWEBサーバ内部のファイルなどを不正に取り込られてしまうことがある。DoS攻撃とか他のこともできる。

XXE攻撃には in-band と out-of-band (OOB-XXE)がある。

Task 13 [Severity 4 XML External Entity – eXtensible Markup Language

XMLとはなんぞや?みたいな話。
そういや私10年以上まえにXMLマスターという資格をとったことがあるんですよ、びっくりするほど意味がなかったけど、ここで少しだけ役に立った。

Full form of XML

eXtensible Markup Language

Is it compulsory to have XML prolog in XML documents?

No

Can we validate XML documents against a schema?

Yes

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

XML Prolog

Task 14 [Severity 4] XML External Entity – DTD

XMLのDTDとは何か?という話。前フリが丁寧(長い)

DTDはDocumentTypeDefinitionの略です。DTDはXML文書の構造を定義するために書くやつです。

参考にさせていただいた

www.atmarkit.co.jp

How do you define a new ELEMENT?

!ELEMENT

How do you define a ROOT element?

!DOCTYPE

How do you define a new ENTITY?

!ENTITY

Task 15 [Severity 4] XML External Entity – XXE Payload

Try the payload mentioned in description on the website.

No answer needed

ためしてみよう!的な話。

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




f:id:nomizooon:20210306124143p:plain

今後参考になりそうなチートシートをみつけたので貼っておく
github.com

Using PensiveNotes

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

Make sure you change this password immediately!

ログインできた。初期パスワードは変えましょう。

f:id:nomizooon:20210306142931p:plain

thm{4b9513968fd564a87b28aa1f9d672e17}

Task 20 [Severity 7] Cross-site Scripting

XSSの話。XSS脆弱性は好きだなあ(成果がわかりやすいから)

XSSの攻撃用スクリプトがどこにあるかによって、反射型・持続型がある。あとDOMベースっていうのもある。
詳しいことは徳丸本とか読むのがよさそう。

便利サイトのご紹介

www.xss-payloads.com

Deploy the VM

No answer needed

「Hello」と表示するXSSを実行する

f:id:nomizooon:20210306144016p:plain

まあ多分いろんなやり方があるんだろうけど

<script>javascript:alert(’Hello’);</script>
f:id:nomizooon:20210306144419p:plain

こういうときに便利なページ

github.com

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

自分のパソコンのIPアドレス???と誤読して混乱したけど、ヒントを見たらデプロイしたマシンのホスト名で良いらしかった。英語難しい。

<script>javascript:alert(window.location.hostname);</script>




f:id:nomizooon:20210306145201p:plain

f:id:nomizooon:20210306145103p:plain

次はStored XSSの画面へいってアカウントを作成する

Then add a comment and see if you can insert some of your own HTML.

HTMLが使えるかの確認。こういうときはなんとなく <hr> タグを使ってしまう(短くて楽だから)

<hr>
f:id:nomizooon:20210306145914p:plain

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

やることは今までと一緒。ベスト・キッドと思って繰り返す。

<script>alert(document.cookie);</script>
f:id:nomizooon:20210306150341p:plain

Change “XSS Playground” to “I am a hacker” by adding a comment and using Javascript.

XSS Playgroundって何かとおもったらサイト名だった(ちゃんと見て)

サイト名のところのID名を調べる

f:id:nomizooon:20210306150730p:plain

thm-title だということがわかる。

というわけでこう

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




f:id:nomizooon:20210306151511p:plain

こちらを参考にさせていただいた

laboradian.com

タスク20まで終わったのでまた切ります。もう少しだけ続くんじゃ!