iBlocked dir traversal - fiche - A pastebin adjusted for gopher use Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/fiche.git URL:git://vernunftzentrum.de/fiche.git vernunftzentrum.de 70 1Log /ckeen/repos/fiche/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/fiche/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/fiche/refs.gph vernunftzentrum.de 70 1LICENSE /ckeen/repos/fiche/file/LICENSE.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit 680bb77f2c2cd4e39344502268f4552932052881 /ckeen/repos/fiche/commit/680bb77f2c2cd4e39344502268f4552932052881.gph vernunftzentrum.de 70 1parent 12205151078b89e48cee70ee450207a39046ae57 /ckeen/repos/fiche/commit/12205151078b89e48cee70ee450207a39046ae57.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Mon, 9 Oct 2017 20:15:22 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iBlocked dir traversal Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i extras/lines/lines.py | 8 ++++++-- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i1 file changed, 6 insertions(+), 2 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/extras/lines/lines.py b/extras/lines/lines.py /ckeen/repos/fiche/file/extras/lines/lines.py.gph vernunftzentrum.de 70 i@@ -19,14 +19,18 @@ def main(): Err vernunftzentrum.de 70 i @app.route('/') Err vernunftzentrum.de 70 i def beautify(slug): Err vernunftzentrum.de 70 i # Return 404 in case of urls longer than 64 chars Err vernunftzentrum.de 70 i- if (len(slug) > 64): Err vernunftzentrum.de 70 i+ if len(slug) > 64: Err vernunftzentrum.de 70 i abort(404) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i # Create path for the target dir Err vernunftzentrum.de 70 i target_dir = os.path.join(args.root_dir, slug) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+ # Block directory traversal attempts Err vernunftzentrum.de 70 i+ if not target_dir.startswith(args.root_dir): Err vernunftzentrum.de 70 i+ abort(404) Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i # Check if directory with requested slug exists Err vernunftzentrum.de 70 i- if (os.path.isdir(target_dir)): Err vernunftzentrum.de 70 i+ if os.path.isdir(target_dir): Err vernunftzentrum.de 70 i target_file = os.path.join(target_dir, "index.txt") Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i # File index.txt found inside that dir Err vernunftzentrum.de 70 .