問題タブ [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.
directory-traversal - ディレクトリ トラバーサルに関する質問
私はこの問題に取り組んでいます:
https://www.hackthissite.org/missions/realistic/3/
上記のサイトはハッキングされており、元の状態に戻すことが私たちの仕事です。ソースコードを見ることから始めました。ハッカーは次のようなコメントを残しました。
「ウェブマスターへの注意このウェブサイトはハッキングされていますが、完全には破壊されていません。古いウェブサイトはまだ稼働しています。古い index.html ファイルを oldindex.html にコピーして、これを作り直しました。ご迷惑をおかけして申し訳ありません。」
したがって、私はhttps://www.hackthissite.org/missions/realistic/3/oldindex.htmlに行きました
次に、詩を提出するをクリックしました。名前フィールドに ../index.html を入力し、詩フィールドにページのソース コードを入力します。
www(dot)hackthissite.org(dot)missions/realistic/3/oldindex(dot)html。
正しい答えが得られました。ただし、これがどのように機能するかはよくわかりません。
まず第一に、何かがディレクトリ トラバーサルの影響を受けやすい時期をどのようにして知ることができますか。フォーラムを見てそうしたのですが、ディレクトリ トラバーサルがオプションであることをどのように知ることができますか?
詩を読む --> '詩名' をクリックすると、次のような URL が表示されます。
www(ドット)hackthissite(ドット)org/missions/realistic/3/readpoem(ドット)php?name=The%20Idiot
その場合、../index.html を使用した最終的な URL は次のようになりません。
www(ドット)hackthissite(ドット)org/missions/realistic/3/?name=index(ドット)html
www(dot)hackthissite(dot)org/missions/realistic/3/index(dot)html ではない
(ドット)でごめんなさい。より多くのリンクを投稿するには、より多くの評判が必要です。
php - PHPファイルをプレーンテキストで表示するには?
パス トラバーサル手法を使用して Web サイトの php ファイルをダウンロードしましたが、メモ帳とメモ帳 ++ でファイルを開くと、暗号化されたテキストしか表示されません。そのファイルをプレーンテキストで表示し、そのファイルの内容を理解する有効な方法はありますか?私は教育目的でのみお願いしています. 手伝ってください
そのメモ帳ファイルに次のテキストが表示されます。
注:そのファイル全体から数行だけをコピーしました
apache - index.html の代わりにディレクトリ ツリーを表示する
index.html/phpが存在する場合でもディレクトリツリーを表示するようにApache仮想ホストを定義するにはどうすればよいですか?
perl - Perl でディレクトリを反復処理し、結果として内省可能なオブジェクトを取得する
ファイルの検索と操作が含まれる可能性のあるスクリプトを開始しようとしているので、役立つパッケージをいくつか調べてみようと思いました。ほとんどの場合、反復 (または検索) の結果を、(ベース) 名、パス、ファイル サイズ、uid、変更時間などを何らかのプロパティとして持つオブジェクトとして返したいと考えています。
問題は、私はそれほど頻繁にこれを行うわけではなく、API を忘れがちです。その場合は、サンプル ディレクトリでコードを実行し、オブジェクト内のすべてのプロパティをダンプします。これにより、どこで何が利用できるかを思い出すことができます (明らかに、順番に「ダンプ」したいと思います)。カスタム印刷をコーディングする必要がないようにします)。ただし、次のことは承知しています。
オブジェクトのすべてのメソッドを列挙してください - perlmonks.org
「すぐに使用できる Perl はオブジェクトのイントロスペクションを行いません。Moose のようなクラス ラッパーは実装の一部としてイントロスペクションを提供しますが、Perl の組み込みオブジェクト サポートはそれよりもはるかに原始的です。」
とにかく、私は調べました:
- 「Perl でのファイルとディレクトリの処理 - Perl 初心者向けサイト」http://perl-begin.org/topics/files-and-directories/
...そして、そこで参照されているライブラリを調べ始めました(関連リンク: rjbs's rubric: the speed of Perl file findersも参照)。
ですから、File::Find::Object私にとってはうまくいくようです。このスニペット:
...これを印刷します:
...結果が配列であることを除いて、これはほとんど私が望んでいたものであり、出力statを理解するにはそのレイアウト(($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) stat - perldoc.perl.org)を知る必要があります。
次に、 を調べましたIO::All。これは、utf-8 の処理のために気に入っています (ただし、ソケット機能もあり、同じスクリプト内の無関係なタスクに役立ちます)。代わりにこのパッケージを使用することを考えていました。問題は、返されたオブジェクトで使用可能なフィールドが何であるかを見つけるのに非常に苦労していることです。たとえば、次のコードを使用します。
...次のような印刷物が得られます。
... などの属性が明らかに表示されていませんmtime- 存在していても (それぞれの印刷行のコメントを外すと確認できます)。
Data::Printerの ( Perl でイントロスペクションを実行するにはどうすればよいですか? )関数も試しましたp()- とまったく同じフィールドを出力しDumperます。私も使用しようとしましたprint Dumper \%{ref ($contentry) . "::"};(オブジェクトのすべてのメソッドをリストします-perlmonks.org)、これは次のようなものを出力します:
...ただし、事前に回線を使用する場合のみ。print $contentry->uid ...そうでなければ、それらはリストされていません! 私はこれに関連していると思います:
introspection - Perl で特定のオブジェクトまたはパッケージで使用可能なメソッドを一覧表示するにはどうすればよいですか? #911294
通常、これは Perl のような動的言語では実行できません。パッケージは、見つけることができるいくつかのメソッドを定義する場合がありますが、使用するまで定義を持たないメソッドをオンザフライで構成することもできます。さらに、(機能する) メソッドを呼び出しても、それが定義されない場合があります。動的言語を優れたものにするのは、このようなことです。:)
それでも、フィールドの名前とタイプが出力されます。代わりに、フィールドの名前と値が必要です。
したがって、私の主な質問は、IO::All結果をダンプして、すべてのフィールド (フィールドを含むstat) に名前と値を出力するにはどうすればよいか (ほとんどの場合File::Find::Object) だと思います。
(結果がIO::All::FileIO::Allのようなタイプであることに気付きましたが、そのドキュメントは「IO::Allを参照してください」を順守しており、明示的にあまり議論していません。にキャストすると、おそらくetcフィールドが出力されます-しかし、そのような「キャスト」はまったく可能ですか?)IO::All::File\%{*$contentry}IO::All::Filemtime
それが問題である場合、ディレクトリの反復結果のイントロスペクティブな印刷を可能にする他のパッケージがありますか?ただし、個々のstatプロパティの名前付きフィールドはありますか?
fat32 - fat32 ファイル システムのトラバース
サムドライブを Fat32 でフォーマットし、sampleFile.txt という名前のルート ディレクトリにファイルを置き、その内容は「oblique」です。Disk Investigator でドライブを調べたところ、RootDirSector: セクター 4096 で次のことがわかりました。
ファイルの実際のデータが配置されているセクター クラスターの場所を見つけるにはどうすればよいですか? ここにいくつかの追加情報があります:
python - ロード バランサーの 1 つがパス トラバーサルを起こしやすいかどうかを確認するにはどうすればよいですか?
Web サイトへの侵入テストを行っていて、パス トラバーサルの問題を見つけようとしました。
パス トラバーサルの脆弱なパラメーターである可能性があるものを発見し、' ../../ ' を使用して 2 つのファイルのダウンロードに成功しました。これら 2 つのファイルをほぼ同時にダウンロードしました。1 ごとに 1. 2 つのダウンロード間の時間差は約 10 秒以下でした。
次に、別のファイルをフェッチしようとしましたが、応答がありませんでした。その瞬間から、ファイルをダウンロードしようとしても応答がありませんでした(2〜3分前にダウンロードできた最初の2つのファイルでさえ) .
ModSecurity がオンになっていて、いくつかのロード バランサーもあり、これら 2 つのファイルのダウンロードに成功したときに、未構成のロード バランサーにヒットしただけだと思いました。
いくつかの方法でロード バランサーをバイパスしようとしたことに言及するには、IP から直接ファイルをダウンロードしようとすることを含めます。成功せずに。
そこで、urllib python ライブラリを使用して、特定の脆弱性のように思われるパラメータから有効なファイルをフェッチしようとする単純な python スクリプトを作成することを考えていました。
私はPythonを初めて使用するので、このコードが最善の解決策ではなく、ファイルをフェッチするまで(仮にあったとしても)膨大な時間がかかることを知っています。
接続ごとに短時間で実行されるようにコードを改善するにはどうすればよいですか (たとえば、応答が得られない場合に 3 秒後に接続を強制終了するなど)、複数のスレッドを使用して実行することもできますか? (1o 程度)。
ありがとう
python - 名前が定義されていないため、os.walk() を使用して Python でディレクトリ ツリーをトラバースできません
そのため、宿題の一環として、ディレクトリ ツリーをたどる必要があります。これには os.walk が最適なようです。Pythonスクリプトを実行するためにcygwinを使用しています。私がトラバースしようとしているツリーのパスは次のとおりです: /cygdrive/c/Users/Kamal/Documents/School/Spring2015/CS410/htmlfiles
したがって、私のコードでは、os.walk() 呼び出しのスニペットを次に示します。
ただし、スクリプトを実行すると、次のエラーが表示されます。
「Spring2015」が未定義であると考える理由について混乱していますか? コンピューターの指定されたパスにディレクトリが明らかに存在します
編集:一部の人が尋ねたので、ここにコード全体があります:
perl - Net::OpenSSH を使用してリモート ファイルに安全に書き込む方法
アプリケーション サーバーがクライアントからバイナリ blob を受信し、それをリモート ホスト上のファイルに書き込むとします。
ファイル名がクライアントからのユーザー入力であることを考えると、攻撃 (ディレクトリ トラバーサル攻撃) から保護するために (アプリ) サーバーで何をする必要がありますか?
リモート ホストへの接続に使用されるユーザー アカウントにはホーム ディレクトリが/home/datauserあり、そのホーム以外にはアクセスできません。
これはコードです:
これは良いアプローチですか?これ以上の脆弱性はありますか?
注: ランダム アクセスが必要なため、scp は使用できません。