feat(web): path traversal help
This commit is contained in:
parent
b256ffa363
commit
393f1b3a9f
@ -4,9 +4,9 @@
|
||||
{% include 'utils/_websidenav.html' %}
|
||||
|
||||
<div id="popup" class="sql-guide capsule-window">
|
||||
<p class="simpletext" style="text-align: left"><a class="hltext" hraf="">IDOR(Insecure direct object references)</a> - уязвимость, позволяющая пользователю получить доступ к объекту (к которому он доступ иметь не должен) напрямую, без проверок, например по ID</p>
|
||||
<p class="simpletext" style="text-align: left"><a class="hltext" href="https://portswigger.net/web-security/access-control/idor">IDOR(Insecure direct object references)</a> - уязвимость, позволяющая пользователю получить доступ к объекту (к которому он доступ иметь не должен) напрямую, без проверок, например по ID</p>
|
||||
<p class="simpletext" style="text-align: left">Как именно это работает? На сервере просто отсутствую проверки, которые не дают пользователю реализовать доступ к определённым объектам. На сервере это может выглядеть так: <span class="context">(привер кода ниже)</span></p>
|
||||
<pre><code class="codefont python">@app.route("/web/idor/user_id< int:id >")
|
||||
<pre><code class="codefont python">@app.route("/web/idor/user_id<int:id>")
|
||||
def user(id):
|
||||
return render_template(f'user_id{id}.html')</code></pre>
|
||||
<p class="simpletext" style="text-align: left">Грубо говоря, мы можем ввести ID в путь и получить приватную страницу пользователя<span class="context">(конкретно тут она не выглядит сильно приватной, но всё же)</span>, ID которого ввели</p>
|
||||
|
@ -4,6 +4,14 @@
|
||||
{% include 'utils/_websidenav.html' %}
|
||||
|
||||
<div id="popup" class="sql-guide capsule-window">
|
||||
<p class="simpletext" style="text-align: left"><a class="hltext" href="https://portswigger.net/web-security/file-path-traversal">Path Traversal</a> - уязвимость, позволяющая пользователю получить доступ к файлам на хосте при помощи уязвимого параметра URL.</p>
|
||||
<p class="simpletext" style="text-align: left">Как это работает? Для просмотра или скачивания файла на сайте есть условная кнопка, при нажатии на неё, в путь прибавляется параметр, аргумент которого - путь к файлу:<span class="context">(пример тега ниже)</span></p>
|
||||
<pre><code class="codefont html"> <button class="big_btn" onclick="location.href='/cats/download_cat?file=static/imgs/cat.jpg'"></code></pre>
|
||||
<p class="simpletext" style="text-align: left">Да, это просто самый обычный путь, который без проверок принимается сервером, на что в ответ, пользователь получает запрошенный файл:<span class="context">(пример кода ниже)</span></p>
|
||||
<pre><code class="codefont python"> filename = request.args.get("file")
|
||||
return send_file(filename)</code></pre>
|
||||
<p class="simpletext" style="text-align: left">Получается можно вписать туда что-то своё? Именно! В задании от нас хотят флаг, который лежит в <span class="mono">.txt</span> файле. Получается мы можем изменить параметр заменой <span class="mono">cat.jpg -> flag.txt</span></p>
|
||||
<p class="simpletext" style="text-align: left">Есть и более жестокая эксплуатация сей уязвимости: можно откатиться на директории назад, дойти до корня и взять важный системный файл. Как это сделать? <span class="mono">../</span> вернёт нас на директорию назад. Так можем попробовать снова изменить путь: <span class="mono">cat.jpg -> ../../app.py</span>, что вернёт нам соответствующий <a calss="hltext" hraf="https://g.codrs.ru/Chest/CTF-site-project/src/branch/master/app.py">python файл</a></p>
|
||||
<span class="close-btn usable-context" onclick="hidePopup()">скрыть</span>
|
||||
</div>
|
||||
|
||||
|
@ -7,7 +7,6 @@
|
||||
('webidor', "Уязвимость IDOR"),
|
||||
('webpt', "Уязвимость Path Traversal"),
|
||||
('webssti', "Уязвимость SSTI"),
|
||||
('webpsguide', "Немного о PortSwigger"),
|
||||
) %}
|
||||
{%- if request.path != url_for(link) %}
|
||||
<a href="{{ url_for(link) }}" class="link">{{ text }}</a>
|
||||
|
@ -12,7 +12,6 @@
|
||||
('webidor', "Уязвимость IDOR"),
|
||||
('webpt', "Уязвимость Path Traversal"),
|
||||
('webssti', "Уязвимость SSTI"),
|
||||
('webpsguide', "Немного о PortSwigger"),
|
||||
) %}
|
||||
<a href="{{ url_for(name) }}" class="btn1">{{ descr }}</a>
|
||||
{%- endfor %}
|
||||
|
Loading…
x
Reference in New Issue
Block a user