J'écrirai un résumé de ce que j'ai fait dans le département de sécurité du Computer Study Group pour la sortie. Nous en ajouterons de plus en plus chaque vendredi.
Contenu de l'activité: Je suis allé aux parties 3 et 4 de https://google-gruyere.appspot.com/.
Défi: créer une application Web qui vous permet de faire l'expérience de l'attaque de traversée
Structure du répertoire
.
├── 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>Application Web qui vous permet d'expérimenter l'attaque de traversée</h1>
<p>Veuillez saisir le nom du fichier que vous souhaitez afficher dans le formulaire ci-dessous</p>
<p><strong>a.txt</strong> <strong>b.txt</strong> <strong>c.txt</strong>Vous pouvez choisir.</p>
<form action="/" method="POST" enctype="multipart/form-data">
<div>
<label for="name">nom de fichier:</label>
<input type="text" id="name" name="name" placeholder="Nom">
</div>
<div>
<input type="submit" value="Envoyer">
</div>
</form>
<p>{{data}}</p>
<br><br><br>
<h4>Commentaire</h4>
<p>Ce site recherche un fichier avec le nom de fichier reçu dans le répertoire et le renvoie tel quel</p>
<p>Par conséquent, si un nom de fichier qui ne devrait pas être saisi est entré, un fichier confidentiel peut être renvoyé.</p>
<h3>pass.Entrons txt</h3>
</body>
</html>
a.txt
C'est un.Le contenu de txt.
b.txt
C'est b.Le contenu de txt.
c.txt
C'est c.Le contenu de txt.
pass.txt
J'ai pu extraire de précieuses données de mot de passe.
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()
Tout ce que j'avais à faire était de configurer un serveur local, alors je l'ai écrit en utilisant Flask. C'était ridiculement facile à mettre en œuvre, donc c'était comme Flask!. Y a-t-il vraiment quelqu'un qui met en œuvre un tel vulnérable stupide?
Contenu de l'activité: J'ai fait part0, part1 et part2 de https://google-gruyere.appspot.com/.
Ce que j'ai appris: Il existe différents types de XSS (cross-site scripting) tels que le type réfléchissant, le type d'accumulation et le xss basé sur DOM. Prendre des mesures contre XSS et désinfecter (échapper).
Défi: créer une page Web sur laquelle vous pourrez découvrir XSS basé sur DOM
xss.html
<html>
<title>DOM Based XSS</title>
<h1>Un site où vous pouvez découvrir le XSS basé sur DOM</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>Si vous donnez un nom en paramètre à la fin de l'url de cette page, il réécrira dynamiquement le HTML</p>
<p>(Exemple) 〜〜xss.html?name=Taro</p>
<p>Je pense que le nom est affiché après Salut en haut.</p><br>
<P>Cependant, ce site l'exécutera lorsqu'un script malveillant est placé dans le paramètre.</P>
<p>(Exemple) 〜〜xss.html?name=<script>alert("Your PC was broken!!")</script></p>
<P>Être capable d'alerter vous obligera à exécuter un script qui a en fait un effet négatif.</P>
</html>
Recommended Posts