Ich werde eine Zusammenfassung meiner Arbeit in der Sicherheitsabteilung der Computer Study Group für die Ausgabe schreiben. Wir werden jeden Freitag mehr und mehr hinzufügen.
Aktivitätsinhalt: Ich ging zu Teil 3 und Teil 4 von https://google-gruyere.appspot.com/.
Herausforderung: Erstellen einer Webanwendung, mit der Sie Path Traversal Attack erleben können
Verzeichnisaufbau
.
├── templates
│ └── index.html
├── a.txt
├── b.txt
├── c.txt
├── pass.txt
└── app.py
index.html
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Hello Jinja2</title>
</head>
<body>
<h1>Webanwendung, mit der Sie Path Traversal Attack erleben können</h1>
<p>Bitte geben Sie den Dateinamen der Datei, die Sie anzeigen möchten, in das unten stehende Formular ein</p>
<p><strong>a.txt</strong> <strong>b.txt</strong> <strong>c.txt</strong>Sie können aus wählen.</p>
<form action="/" method="POST" enctype="multipart/form-data">
<div>
<label for="name">Dateiname:</label>
<input type="text" id="name" name="name" placeholder="Name">
</div>
<div>
<input type="submit" value="Senden">
</div>
</form>
<p>{{data}}</p>
<br><br><br>
<h4>Kommentar</h4>
<p>Diese Site sucht nach einer Datei mit dem empfangenen Dateinamen im Verzeichnis und gibt sie unverändert zurück</p>
<p>Wenn daher ein Dateiname eingegeben wird, dessen Eingabe nicht erwartet wird, kann eine vertrauliche Datei zurückgegeben werden.</p>
<h3>pass.Geben wir txt ein</h3>
</body>
</html>
a.txt
Das ist ein.Der Inhalt von txt.
b.txt
Dies ist b.Der Inhalt von txt.
c.txt
Dies ist c.Der Inhalt von txt.
pass.txt
Ich konnte wertvolle Passwortdaten extrahieren.
app.py
# -*- coding: utf-8 -*-
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['POST'])
def post():
name = request.form.get('name')
data = ""
try:
f = open(name)
data = f.read()
f.close()
except:
pass
return render_template('index.html', data = data)
if __name__ == '__main__':
app.run()
Alles was ich tun musste war einen lokalen Server einzurichten, also schrieb ich ihn mit Flask. Es war lächerlich einfach zu implementieren, also fühlte es sich an wie Flask! Gibt es wirklich jemanden, der solch eine dumme Verwundbare implementiert?
Aktivitätsinhalt: Ich habe Teil 0, Teil 1 und Teil 2 von https://google-gruyere.appspot.com/ gemacht.
Was ich gelernt habe: Es gibt verschiedene Arten von XSS (Cross-Site Scripting), z. B. Reflective Type, Accumulation Type und DOM-basiertes Xss. Ergreifen Sie Maßnahmen gegen XSS und desinfizieren Sie (Flucht).
Herausforderung: Erstellen einer Webseite, auf der Sie DOM Based XSS erleben können
xss.html
<html>
<title>DOM Based XSS</title>
<h1>Eine Site, auf der Sie DOM Based XSS erleben können</h1>
Hi
<script charset="UTF-8">
var pos=document.URL.indexOf("name=")+5;
document.write(unescape(document.URL.substring(pos,document.URL.length)));
</script>
<br><br>
<p>Wenn Sie am Ende der URL dieser Seite einen Namen als Parameter angeben, wird HTML dynamisch neu geschrieben</p>
<p>(Beispiel) 〜〜xss.html?name=Taro</p>
<p>Ich denke, der Name wird oben nach Hi angezeigt.</p><br>
<P>Diese Site führt es jedoch aus, wenn ein schädliches Skript in den Parameter eingefügt wird.</P>
<p>(Beispiel) 〜〜xss.html?name=<script>alert("Your PC was broken!!")</script></p>
<P>Wenn Sie alarmieren können, müssen Sie ein Skript ausführen, das sich tatsächlich negativ auswirkt.</P>
</html>
Recommended Posts