かわしまのつぶやき

かわしまが雑多に自由に書くブログ

ド素人がGitHub Hackingというものを考え試してみた

 

  

ブログをおっ立てて、特に書くこともなかったのですが、今日、Google Hackingをしている時にふと考えました。。。

 

 

GitHub情報多いし、GitHub Hackingできるんじゃね!?

 

そこで素人ながら試してみたのですが、とある企業の海外拠点のサービスの内部情報やらマルウェアらしき何かやら見つかり、意外と面白そうだったので記事をおこします。

先駆者がいましたら教えてください。

 

Google Hackingについては要望あれば書きたいと思います。

 

 

GitHub Hackingのための材料

まずはGitHubの検索仕様を確認します。

 

検索ページ

普通の検索

Code Search · GitHub

高度な検索

GitHub · Where software is built

 

検索クエリについて

以下のページに記載があります。

help.github.com

 

適当に検索してみるとこんな感じ

f:id:yuta_kawashima:20200630185004p:plain

microsoftで検索

以下の種類の情報を検索することができます。(コード検索はログインしないとダメ)

 ・リポジトリ

 ・Topics

 ・Issue およびプルリクエス

 ・コード

 ・コミット

 ・ユーザ

 ・パッケージ

 ・Wiki

 

検索クエリについて大まかなものはここに書いていきます。

 

取り扱える文字

まず、検索ワードですが以下の制限があります。

クエリの一部として次のワイルドカード文字を用いることはできません: . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]。 検索では、これらのシンボルは単に無視されます

これ以外に、@なども同じ挙動っぽい感じでした。

 

条件式

AND、OR、NOTなどの構文があります。

 

例:cats AND dogs

Search · cats AND dogs · GitHub

「cats」、「dogs」両方の単語を含むものが表示されます。

 

例:cats OR dogs

Search · cats OR dogs · GitHub

「cats」か「dogs」どちらかの単語を含むものが表示されます。

 

例:cats NOT dogs

Search · cats NOT dogs · GitHub

「dogs」と言う単語がなく、「cats」と言う単語を含むものが表示されます。「-」でも良いそうです。

 

なお、複数単語をスペースで区切るとANDが取られているっぽいのですが、AND検索の結果ともOR検索の結果とも若干の差異があり、よくわかりません。

Search · cat dogs · GitHub

 

空白文字を含む場合

検索文字列を「"」で囲う必要があります。

例えば、「Hello World」を含むものを検索したい場合は、「"Hello world"」で検索します。NOT構文で特に便利で、 以下のように使うことができます。

例:cats NOT "Hello World"

「cats」を含むが「Hello World」を含まないものが表示される

 

ファイルの内容で検索

in:fileという修飾子を使います。

例:cats in:file

ファイルの内容に「cats」を含むものを表示します。

 

ファイル名で検索

filename:という修飾子を使います。

例:filename:readme

Search · filename:readme · GitHub

「readme」を含むファイル名のものを表示します。

 

ファイルパスで検索

 in:pathという修飾子を使います。

例:cats in:path

ファイルパスに「cats」を含むものを表示します。

 

その他に、「path」修飾子を利用して、特定のパスにあるファイルを検索することができます。

例:cats filename:readme path:/

Search · cats filename:readme path:/ · GitHub

「readme」と言うファイルがルートにあり、「cats」と言う単語を含むものを表示します。(この例の場合、コードのないようになりますので、サインインして「code」を確認する必要があります。)

 

範囲指定検索 

「<」「>」「>=」「<=」を利用して、指定した値に対する範囲指定検索を行えます。

例:cats stars:>10

Search · cats stars:>10 · GitHub

「cats」という単語を含み、スターが10以上のものを表示。

 

また、一定の範囲にあるものを抽出する場合は、以下のように記載します。

例:cats stars:10..50

Search · cats stars:10..50 · GitHub

「cats」という単語を含み、スターが10〜50の範囲 のものを表示。

 

 

GitHub Hackingをしてみる

では何か試しに実践してみます。こういうのってだいたい何やっても角が立つんだよね〜と思いながらもサンプルを書いてみます。(このサンプルは海外標的のやつっぽいです。)

 

適当なフィッシングサイトを見繕います。

f:id:yuta_kawashima:20200630200202p:plain

とあるフィッシングサイト

 

おっ、ええやん!いったろ!

 というわけでソースコードを確認。

 

f:id:yuta_kawashima:20200630200308p:plain

response

 

で、適当にスタティックと思われるものを拾い、githubで検索かけます。

 ※in:file修飾子を利用しました。

 

f:id:yuta_kawashima:20200630202857p:plain

GitHub-Search

 

 幾つかのリポジトリfacebookのログインページっぽいページを構成する一式がありました。

f:id:yuta_kawashima:20200630204138p:plain

list

実際のindex.phpを踏むと、上のログインページと同じようなものだったので割愛。

 

また、これと同じものを使っていると見られる、とあるフィッシングサイトでは、実際にvisitors.logが存在していました。このvisitors.logは、アクセス元とIPアドレスをセットで保存するテキストファイルでした。(実物はちょっと良くない気がするのですいませんが見せません)

 

log.txtは、偽ページに入力された「ID-Pass」を記録するテキストファイルのようです。

今回は残念ながら、外向けに公開されているlog.txtは発見できませんでした。見つけていたら、むしろちょっと困っていたかもしれない。。。

 

こんな感じで、この例ではフィッシングサイトの構成情報を把握することに使えそうな感じでした。こういった情報収集を繰り返せば、良き情報群が集まるかもしれません。

 

最後に

なんか、いろいろ例を書くといろいろ叩かれたりしそうなので、軽く書いてみました。

でもおそらく、GitHub Hackingはなかなか有用です。きっとgoogle Hackingや他のOSINTと組み合わせて使うんじゃないでしょうかね〜

 

最初に挙げた、自社ドメインの検索や、フィッシング系ならコピーライトなどを検索してみるといいかもしれませんね。