From 01ee900980bb56f87a72bec96c3f15a70335b90c Mon Sep 17 00:00:00 2001 From: dub-flow <89262088+dub-flow@users.noreply.github.com> Date: Wed, 15 May 2024 15:54:34 +0200 Subject: [PATCH] Added Nginx-Flask bypass example --- flask/Dockerfile | 17 +++++ flask/Pipfile | 12 ++++ flask/Pipfile.lock | 136 +++++++++++++++++++++++++++++++++++++++ flask/app.py | 15 +++++ flask/bypass.png | Bin 0 -> 34174 bytes flask/docker-compose.yml | 24 +++++++ nginx.conf | 20 ++++++ 7 files changed, 224 insertions(+) create mode 100644 flask/Dockerfile create mode 100644 flask/Pipfile create mode 100644 flask/Pipfile.lock create mode 100644 flask/app.py create mode 100644 flask/bypass.png create mode 100644 flask/docker-compose.yml create mode 100644 nginx.conf diff --git a/flask/Dockerfile b/flask/Dockerfile new file mode 100644 index 0000000..a82610c --- /dev/null +++ b/flask/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.12-alpine + +WORKDIR /app + +COPY Pipfile Pipfile.lock /app/ + +RUN pip install pipenv + +# Activate the virtual environment and install dependencies +RUN pipenv install --deploy --system + +# Copy the rest of the application code to the working directory +COPY . /app/ + +EXPOSE 5000 + +CMD ["python", "app.py"] \ No newline at end of file diff --git a/flask/Pipfile b/flask/Pipfile new file mode 100644 index 0000000..481bd94 --- /dev/null +++ b/flask/Pipfile @@ -0,0 +1,12 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +flask = "*" + +[dev-packages] + +[requires] +python_version = "3.12" diff --git a/flask/Pipfile.lock b/flask/Pipfile.lock new file mode 100644 index 0000000..070e40c --- /dev/null +++ b/flask/Pipfile.lock @@ -0,0 +1,136 @@ +{ + "_meta": { + "hash": { + "sha256": "773f8cdc585ef14daaa1cc32aafddcb459fbac4a07d61f22dd32b81395f7b2c1" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.12" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "blinker": { + "hashes": [ + "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01", + "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83" + ], + "markers": "python_version >= '3.8'", + "version": "==1.8.2" + }, + "click": { + "hashes": [ + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" + ], + "markers": "python_version >= '3.7'", + "version": "==8.1.7" + }, + "flask": { + "hashes": [ + "sha256:34e815dfaa43340d1d15a5c3a02b8476004037eb4840b34910c6e21679d288f3", + "sha256:ceb27b0af3823ea2737928a4d99d125a06175b8512c445cbd9a9ce200ef76842" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==3.0.3" + }, + "itsdangerous": { + "hashes": [ + "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", + "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173" + ], + "markers": "python_version >= '3.8'", + "version": "==2.2.0" + }, + "jinja2": { + "hashes": [ + "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", + "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.4" + }, + "markupsafe": { + "hashes": [ + "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", + "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", + "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", + "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", + "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", + "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", + "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", + "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df", + "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", + "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", + "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", + "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", + "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", + "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371", + "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2", + "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", + "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52", + "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", + "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", + "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", + "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", + "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", + "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", + "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", + "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", + "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", + "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", + "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", + "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", + "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9", + "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", + "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", + "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", + "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", + "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", + "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", + "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a", + "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", + "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", + "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", + "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", + "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", + "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", + "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", + "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", + "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f", + "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50", + "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", + "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", + "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", + "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", + "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", + "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", + "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", + "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf", + "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", + "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", + "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", + "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", + "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.5" + }, + "werkzeug": { + "hashes": [ + "sha256:097e5bfda9f0aba8da6b8545146def481d06aa7d3266e7448e2cccf67dd8bd18", + "sha256:fc9645dc43e03e4d630d23143a04a7f947a9a3b5727cd535fdfe155a17cc48c8" + ], + "markers": "python_version >= '3.8'", + "version": "==3.0.3" + } + }, + "develop": {} +} diff --git a/flask/app.py b/flask/app.py new file mode 100644 index 0000000..d41bdd2 --- /dev/null +++ b/flask/app.py @@ -0,0 +1,15 @@ +from flask import Flask, request + +app = Flask(__name__) + +@app.route('/admin') +def admin(): + return "Admin area accessed!" + +@app.route('/', defaults={'path': ''}) +@app.route('/') +def catch_all(path): + return f"Accessed path: {path}" + +if __name__ == "__main__": + app.run(host='0.0.0.0', port=5000) diff --git a/flask/bypass.png b/flask/bypass.png new file mode 100644 index 0000000000000000000000000000000000000000..df13242d7b86fa0c269a78f293c060365ebc7a8a GIT binary patch literal 34174 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 t<