Hello there, ('ω')ノ
バグハンティング:androidのstrings.xmlファイルに公開された機密情報を。
記事:
String.xmlは、アプリケーションが必要とするさまざまな文字列のための
単一の場所で。
ここで、すべての文字列には一意のIDがあり、このIDをコード内でそ
の文字列を使用するために使用し。
重要なデータを保存しないことが常に推奨され。
安全でないコーディングの慣行のため、時々strings.xmlファイルに
機密情報が保存されることがあり。
攻撃者がAndroidアプリケーションのコード解析を実行すると、
そのような機密情報を取得することができ、アプリケーションの
セキュリティが侵害されることになって。
Androidアプリケーションのstrings.xmlファイルの中にそのような機密情報を
特定して。
対象のAndroidアプリケーションでは、Twitterアプリケーションが
Oauth認証のための認証サーバとして使用されていて。
対象のアプリケーションはTwitterの認証サーバに登録されており、
コールバックURLは"http://****.oauth.****.com"で。
strings.xmlファイルにTwitterのコンシューマキー、シークレット、
およびコールバックURLが公開されていることを特定して。
説明:
理想的には、TwitterのOAuth 1.0認証は、コンシューマキー、シークレット、
およびコールバックURLを使用して行われ。
対象のアプリケーションは、Twitterの認証サーバーから
リクエストトークン(oauth_token, oauth_secret)を取得するために
これらの値を使用し。
最終的に、これらのすべての値はauth_token値と交換され。
コンシューマキー、シークレット、およびcallback_urlが攻撃者に知られているため、
彼/彼女はリクエストトークンを操作し、最終的にoauth_tokenを
取得することもできて。
以下の詳細がstrings.xmlファイルに公開されていて:
<string name="twitter_callback">http://****.oauth.****.com
<string name="twitter_consumer_key">TV8***************</string>
<string name="twitter_consumer_secret">RQMf**************************</string>
strings.xmlファイルは機密情報を公開
これらの値は以下のクラスで使用され。
"com.*****.android.twitter.com.*****.android.twitter":
public void m2****(String str, String str2, String str3, boolean z, Listener listener) {
TwitterOAuthTask twitterOAuthTask;
TwitterOAuthTask twitterOAuthTask2;
if (str == null || str2 == null || str3 == null || listener == null) {
throw new IllegalArgumentException();
}
Boolean valueOf = Boolean.valueOf(z);
synchronized (this) {
twitterOAuthTask = this.f27566a;
twitterOAuthTask2 = new TwitterOAuthTask();
this.f27566a = twitterOAuthTask2;
}
m30457a(twitterOAuthTask);
twitterOAuthTask2.execute(new Object[]{str, str2, str3, valueOf, listener});
手順:
1.com.*****.au**** apkファイルをダウンロードし。
2.jadx-guiツールを使用してapkファイルを開き。
3.Resources->resources.arsc->values->strings.xmlに移動し、
Twitterのコンシューマキーと値を確認して。
Best regards, (^^ゞ