問題タブ [directory-traversal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C でのディレクトリトラバース
この質問を検索しようとしましたが、満足のいく答えが見つかりませんでした。だからここに私の質問があります:
次のコードのバリエーションを使用して、ディレクトリをトラバースしています。
私。
これはサブディレクトリをトラバースしますが、最初のサブディレクトリをトラバースしてそのファイルを印刷した後、セグメンテーション違反を引き起こします。
出力は次のとおりです。
Ⅱ.
これは、指定されたディレクトリ内のすべてのファイルとサブディレクトリを出力しますが、サブディレクトリをトラバースしません。出力は次のとおりです。
ここで、dump と temp はサブディレクトリで、それぞれにいくつかのファイルが含まれています。最初に、ユーザーのアクセス許可のためにサブディレクトリをトラバースできない可能性があると考えました (ルートによって作成および所有されているため) が、最初のプログラムの出力でわかるように、そうではありません。そのため、両方のプログラムの問題を把握できません。PS: 最初の 2 行の後の出力では、プログラムはディレクトリとファイルを出力します。
apache - Apache で public_html の親ディレクトリにアクセスするにはどうすればよいですか?
少し前に、誰かが Web サイトからあなたのコンピュータのファイル システムにアクセスできる方法を読んだことを覚えています。その方法を知りたいので、テストして発生を防ぐことができます。
XAMPP 経由で Windows で Apache 2.4 を実行する
私の仮想ホストは次のように設定されています:
index2.html
中scrap/
とindex.html
中がありますscrap/public_html/
ホストは次のように設定されています127.0.0.1 local.scrap
URLhttp://local.scrap/
を入力すると、index.html が表示されます。URLを入力http://local.scrap/../index2.html
すると、リダイレクトされますhttp://local.scrap/index2.html
../ URL が DocumentRoot パスにリダイレクトされるのはなぜですか?
php - PHP: パス内のスラッシュをエスケープする推奨方法 (例: ディレクトリ トラバーサル攻撃を防ぐため)
ディレクトリ区切り文字 (スラッシュ) を使用せずに、文字列を安全で有効なファイル名にサニタイズする PHP 関数を探しています。
理想的には、リバーシブルであるべきであり、必要以上に名前をごちゃ混ぜにすべきではありません。
もちろん、意図的なディレクトリ トラバーサル攻撃を防ぎたいと思っています。しかし、サブフォルダーが作成されないようにしたいです。
私はそれurlencode()
がうまくいくと考えましたが、これで十分かどうか、および/またはより良い、またはより人気のあるものがあるかどうか疑問に思います.
また、Windows でも同じように機能するもの (ディレクトリ セパレータとしてのバックスラッシュ) がある場合、そのソリューションは移植可能です。
ユースケース / シナリオ:
データ インポートの一環として、リモート URL からローカル ファイル システムにファイルをダウンロードしたいと考えています。URL は csv ファイルからのものです。それらのほとんどは問題ありませんが、予想よりも多くのスラッシュが含まれている可能性があります。
たとえば、それらのほとんどは次のようなものです。
https://files.example.com/pdf/12345.pdf
ただし、個々のファイルは次のようになります。
https://files.example.com/pdf/1/2345.pdf
ファイルはすべて同じディレクトリに配置する必要があります。例:
https://files.example.com/pdf/12345.pdf
->/destination/dir/12345.pdf
次のようなファイル1/2345.pdf
は、サブディレクトリにはなりません。代わりに、/
何らかの (可逆的な) 方法でエスケープする必要があります。たとえば、urlencode() の場合、これは1%2F2345.pdf
.
linux - トラバースされたディレクトリが実行可能でないために許可が拒否された理由を取得する
/a/b
ユーザーが読み取り可能なファイルがありますA
。しかし、/a
による実行許可を提供しないためA
、パス/a/b
は を通過できません/a
。任意の長いパスの場合、ユーザーが中間パスにアクセスできないために特定のパスにアクセスできない原因をどのように判断しますか?
php - Apache2 Ubuntu 14 でディレクトリトラバーサル攻撃を防ぐには?
システム管理者の役割として、安全な Web サイトを PHP で構築する必要があります。脆弱性スキャナーは、ディレクトリ トラバーサル攻撃の警告を出します。多くのウェブサイトをグーグルで検索しましたが、適切な解決策が見つかりませんでした。私はすでにインデックス作成を無効にしており、/ にディレクトリ拒否を設定しています。
ディレクトリトラバーサルは、Aapache の設定または PHP によって防止できますか??
これについてご案内します。
助けていただければ幸いです。
必要に応じて質問の詳細。
サードパーティはすでに脆弱性を発見しており、GET メソッドを介して /etc/passwd ファイルをダウンロードしています。
詳しくはこちら。
脆弱性の説明 このスクリプトは、ディレクトリ トラバーサル攻撃に対して脆弱である可能性があります。
ディレクトリ トラバーサルは、攻撃者が
制限されたディレクトリにアクセスし、Web サーバーのルート ディレクトリの外部でコマンドを実行できるようにする脆弱性です。
この脆弱性は、発見者: スクリプティング (Directory_Traversal.script)
に影響します。
攻撃の詳細ファイル
の URL エンコードされた GET 入力が ../../../../../../../../../../etc/passwd に設定されました
見つかったファイルの内容:
root:x :0:0:ルート:/ルート:/bin/bash
HTTP ヘッダーを表示する
リクエスト
GET 削除
ofile=../../../../../../../../../../etc/passwd HTTP/1.1リファラー
: 削除
Cookie: PHPSESSID=7lnb7v198ul8691398urchg833;
ccity=6cd5165e7bce89782ed37abe9401604a01cb6056s%3A3%3A%22AGR%22%3B;
lang=13d4e1ed1ec441aca81746dd05751ce248f3fff5s%3A2%3A%22ma%22%3B;
YII_CSRF_TOKEN=f5e14954e37e2975baa3eec9007f1d89ee8b0302s%3A40%3A%2234cb9e79ba1cafe5dbc69403f245dbcf708adb9b%22%3B
Host: removed
Connection: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko ) Chrome/28.0.1500.63 Safari/537.36
受け入れる: /
応答
HTTP/1.1 200 OK
日付: 2016 年 3 月 10 日 (木) 08:32:38 GMT
サーバー: Apache
X-Powered-By: PHP/5.5.9-1ubuntu4.5
有効期限: 1981 年 11 月 19 日 (木) 08:52:00 GMT
キャッシュ-Control: no-store、no-cache、must-revalidate、post-check=0、pre-check=0
プラグマ: no-cache
Content-Transfer-Encoding: binary
Content-Length: 1348
Content-Disposition: inline; filename=../../../../../../../../../../etc/passwd
Keep-Alive: timeout=60, max=781
接続: Keep-生きている
コンテンツ タイプ: application/pdf
ファイルの内容
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin :/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60 :games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/スプール/lpd:/usr/sbin/nologin メール:x:8:8:メール:/var/mail:/usr/sbin/nologin ニュース:x:9:9:ニュース:/var/spool/ニュース:/usr /sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data: x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:メーリング リスト マネージャー:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats バグ報告システム (管理者):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/存在しない:/usr/sbin/nologin libuuid:x:100:101::/var/lib/libuuid:syslog:x:101:104::/home/syslog:/bin/ false mysql:x:102:106:MySQL Server,,,:/nonexistent:/bin/false messagebus:x:103:107::/var/run/dbus:/bin/false ランドスケープ:x:104:110: :/var/lib/landscape:/bin/false sshd:x:105:65534::/var/run/sshd:/usr/sbin/nologin ntp:x:106:114::/home/ntp:/bin /false tpl-nag:x:1001:1002::/home/tpl-
この脆弱性の影響 ディレクトリ トラバーサルの脆弱性を悪用することにより、攻撃者はルート ディレクトリから抜け出し、他のディレクトリ内のファイルにアクセスします。その結果、攻撃者は制限されたファイルを表示したり、コマンドを実行したりして、Web サーバーを完全に侵害する可能性があります。
この脆弱性の修正方法 スクリプトは、ユーザー入力からメタ文字をフィルター処理する必要があります。
python - Python ツリー ディレクトリの一意の名前、ツリー アルゴリズム
ディレクトリツリー構造を実装し、この構造のインポートを「奇妙な方法」でサポートするひどいシステムを使用しています。インポートは format のみをサポートするためですchild;parent
。インポートの制約:
- 子アイテムには一意の名前が必要
です - 親アイテムが重複している場合、子は最初に見つかった親の下にインポートされます
作成されるディレクトリの構造は次のとおりであると仮定します
デフォルトのインポートはどのように見えますか。これは機能しないか、間違った表現を生成します:
間違った表現
この問題に取り組むために、すべてのフォルダーの名前を一意の文字列=id
と追加の変更 (システム要件に合わせて短い名前など) で変更し、システムにインポートしてから、=id
データベース経由で削除することにしました。
インポートペアは次のようになります。
そして、構造は希望どおりです
ただし、名前を変更せずに元の構造で作業する必要があるため、作業する必要があります。
ツリー型のデータ構造を使えばメモリ内だけに構造を保持できると思っていたのですが、実装に行き詰まりました。
使いたかったのですがos.walk('root')
、treelib
これを実装するのに助けが必要です。
すべてのヒントを高く評価します。ありがとうございました