diff --git a/templates/idor.html b/templates/idor.html index a19fcbb..ecd86bc 100644 --- a/templates/idor.html +++ b/templates/idor.html @@ -4,9 +4,9 @@ {% include 'utils/_websidenav.html' %}
IDOR(Insecure direct object references) - уязвимость, позволяющая пользователю получить доступ к объекту (к которому он доступ иметь не должен) напрямую, без проверок, например по ID
+IDOR(Insecure direct object references) - уязвимость, позволяющая пользователю получить доступ к объекту (к которому он доступ иметь не должен) напрямую, без проверок, например по ID
Как именно это работает? На сервере просто отсутствую проверки, которые не дают пользователю реализовать доступ к определённым объектам. На сервере это может выглядеть так: (привер кода ниже)
-@app.route("/web/idor/user_id< int:id >")
+ @app.route("/web/idor/user_id<int:id>")
def user(id):
return render_template(f'user_id{id}.html')
Грубо говоря, мы можем ввести ID в путь и получить приватную страницу пользователя(конкретно тут она не выглядит сильно приватной, но всё же), ID которого ввели
diff --git a/templates/path-traversal.html b/templates/path-traversal.html
index 4c0d1c9..2cf9531 100644
--- a/templates/path-traversal.html
+++ b/templates/path-traversal.html
@@ -4,6 +4,14 @@
{% include 'utils/_websidenav.html' %}
+ Path Traversal - уязвимость, позволяющая пользователю получить доступ к файлам на хосте при помощи уязвимого параметра URL.
+ Как это работает? Для просмотра или скачивания файла на сайте есть условная кнопка, при нажатии на неё, в путь прибавляется параметр, аргумент которого - путь к файлу:(пример тега ниже)
+ <button class="big_btn" onclick="location.href='/cats/download_cat?file=static/imgs/cat.jpg'">
+ Да, это просто самый обычный путь, который без проверок принимается сервером, на что в ответ, пользователь получает запрошенный файл:(пример кода ниже)
+ filename = request.args.get("file")
+ return send_file(filename)
+ Получается можно вписать туда что-то своё? Именно! В задании от нас хотят флаг, который лежит в .txt файле. Получается мы можем изменить параметр заменой cat.jpg -> flag.txt
+ Есть и более жестокая эксплуатация сей уязвимости: можно откатиться на директории назад, дойти до корня и взять важный системный файл. Как это сделать? ../ вернёт нас на директорию назад. Так можем попробовать снова изменить путь: cat.jpg -> ../../app.py, что вернёт нам соответствующий python файл
скрыть
diff --git a/templates/utils/_websidenav.html b/templates/utils/_websidenav.html
index 40e370d..c0bf19a 100644
--- a/templates/utils/_websidenav.html
+++ b/templates/utils/_websidenav.html
@@ -7,7 +7,6 @@
('webidor', "Уязвимость IDOR"),
('webpt', "Уязвимость Path Traversal"),
('webssti', "Уязвимость SSTI"),
- ('webpsguide', "Немного о PortSwigger"),
) %}
{%- if request.path != url_for(link) %}
{{ text }}
diff --git a/templates/web-main.html b/templates/web-main.html
index 4929e81..c06653b 100644
--- a/templates/web-main.html
+++ b/templates/web-main.html
@@ -12,7 +12,6 @@
('webidor', "Уязвимость IDOR"),
('webpt', "Уязвимость Path Traversal"),
('webssti', "Уязвимость SSTI"),
- ('webpsguide', "Немного о PortSwigger"),
) %}
{{ descr }}
{%- endfor %}