Android Developers enna

jdchathuranga

Well-known member
  • May 4, 2009
    568
    1,348
    93
    37
    Colombo
    Ehema refresh token ekakk thiyenawa thama



    Ai firebase use karanne meewa walata. hama ekkm mehemd?
    Hard corded APIs add karannema nedd? (Real world) :cautious:

    Android apk pentesting thm learn krnw. pelak labs wl nm insecure data, hardcorded apis thibba

    firebase පොඩි ඇප් වලට ලේසියි
    හැබැයි ලොකු ඇප්ස් වලට ෆයර්බේස් වලින් API හදනවා හරිම අඩුයි
    සමහර ෆයර්බේස් සර්විස් නං ලොකු ඇප් වලටත් යූස් කරනවා FCM, Analytics, Crashlytics etc

    හාඩ්කෝඩඩ් API කී ගැන ඔය කියන්නෙ
    APK එක Decompile කරලා string search එකක් කරලා එහෙම තියන API කී හොයන්න පුලුවන්
    හැබැයි Oauth 2 යූස් කරලා public client flow එකක් යූස් කරන ඇප් වල client id එක ඇප් එක ඇතුලෙ තියනවා ඒක සෙකියුරිටි රිස්ක් එකක් නෙමයි බැලු බැල්මට ඒකත් කී එකක් වගේ
    හැබැයි client_id, client_secret දෙකම තියනවා නං වැරදි flow එකක් යූස් කරලා තියෙන්නෙ ඒක වැරදියි

    🤣🤣

    Think abt using android keychain


    And also android account manager
    ------ Post added on Sep 4, 2023 at 6:19 PM
    Yes
    but Android keychain security depend on the hardware features like secure vault etc. but that provides reasonable security compared to user pref

    phone එක බැකප් කරාම shared pref ටික නිකන්ම ෆයිල් එකක් විදියට තියනවා ඒක පට්ටම insecure

    JWT token wunath dan decrypt karnna puluwan ne - https://jwt.io/
    samahra sites man JWT decrypt karla API key aran tiyei. but smahara sites wala JWT decrypt kalata hariyata wada kale na. mokak hari un thawa encryption key ekak danawa vage.
    JWT එක එන්ක්‍රිප්ට් කරලා නැහැ ඕන කෙනෙක්ට ඩිකෝඩ් කරන්න පුලුවන් ඒක expected, jwt.io කියන්නෙ developer tool එකක්, inspect element වගේ
    JWT එකේ සෙකියුරිටි එක තියෙන්නෙ එතන නෙමයි
    jwt එකේ කෑලි තුනක් තියනවා . එකෙන් සෙපරේට් කරලා
    HEADER.PAYLOAD.SIGNATURE විදියට
    JWT එක යූස් කරන්නෙ මෙහෙමයි
    සර්වර් එකේ(jwt එක ජෙනරේට් කරන තැන) private key, public key pair එකක් (or multiple key pairs) තියනවා
    සර්වර් එක public key එක ඕන කෙනෙක්ට certificate එකක් විදියට ගන්න හරි jwks endpoint එකකින් ඕන කෙනෙක්ට ගන්න පුලුවන් විදියට දීලා තියනවා
    Example google's certs : https://www.googleapis.com/oauth2/v3/certs

    ලොගින් එකේදි හරි token එක issue කරද්දි හරි jwt එක private key එකෙන් සයින් කරලා ඒ signature එක තමයි අර jwt signature කෑල්ලෙ තියෙන්නෙ. අපිට public key එකට ඇක්සස් තියන නිසා jwt එකේ signature එක අපිට verify කරන්න පුලුවන්.
    උදාහරනයක් විදියට අපිට login with google වලින් හම්බුනු jwt එක අර දීපු පබ්ලික් කී යූස් කරලා වෙරිෆයි කරන්න පුලුවන් ඇත්තටම ගූගල් දීපු jwt එකක්ද කියලා

    ඇන්ඩ්‍රොයිඩ්/ios/web ඇප් වලදි කරන්නෙ ලොගින් එකේදි සර්වර් එකෙන් jwt එකක් ඇප් එකට දෙනවා(using refresh token or authorization code or whatever flow)
    ඇප් එක ඒක කොහේ හරි secure විදියට තියාගෙන ඉන්නවා. මේකට ලොකු වැලිඩිටි ටයිම් එකක් නැති නිසා මේක ලීක් උනත් වැලිඩිටි ටයිම් එකේදි විතරයි යූස් කරන්න පුලුවන්
    ඒක නිසා තමයි මේ ඇක්සස් ටෝකන් වලට ගොඩක් පොඩි විනාඩි ගානක වැලිඩිටි ටයිම් එකක් දෙන්නෙ.
    ඇප් එක API එක කතා කරද්දි සර්වර් එකට මේ jwt එක යවනවා
    සර්වර් එකේදි අනිවාර්යෙන් මේකෙ වැලිඩිටි ටයිම් එක සහ signature validation එක කරන්න ඕන. ඒ දෙකම හරි නං API එක වැඩ කරනවා නැත්තං 401 වගේ එකක් return කරනවා
    මේකෙදි තව වාසි තියනවා, මේක අපිට jwt එක issue කරපු කෙනා ලඟට යන්නෙ නැතිව වැලිඩේට් කරන්න පුලුවන් මොකද පබ්ලික් කී එකට අපිට ඇක්සස් තියන නිසා, ඕන නං අපිට පුලුවන් වෙන කෙනෙක් දීපු jwt එකකින් අපේ API එකකට ඇක්සස් දෙන්නත් පුලුවන්

    me flow එකේ කරන common mistake එක තමයි සර්වර් එකේදි validity time එක චෙක් කරාට signature එක චෙක් කරන්නෙ නැති එක. මේක පට්ටම දරුනු සෙකියුරිටි බග් එකක් වෙනවා
    මොකද එතකොට අපිට පුලුවන් වෙන කෙනෙක් විදියට jwt එකක් ජෙනරේට් කරලා API access කරන්න. signarure එක අතඇරලා දැම්මොතින් JWT එක කියන්නෙ සරලවම Base64 Encode කරපු JSON එකක්. ඒක නිසා වෙන කෙනෙක් JWT එකක් අරන් එනවා නං අනිවාර්යෙන් ඒක signature + time වැලිඩේට් කරන්න ඕන

    තව payload එකේ propeties තියනවා ඒවට claims කියලා කියන්නෙ
    විශේශ claims තියනවා
    issuer/audience etc etc කියලා
    තව ටයිප් කරන්න කම්මැලී


    JWT ගැන ඕන නං එක දිගට පැය 7-8ක් කියලා දෙන්න පුලුවන්
     

    hecker_thama

    Well-known member
  • Dec 27, 2022
    6,764
    6,979
    113
    firebase පොඩි ඇප් වලට ලේසියි
    හැබැයි ලොකු ඇප්ස් වලට ෆයර්බේස් වලින් API හදනවා හරිම අඩුයි
    සමහර ෆයර්බේස් සර්විස් නං ලොකු ඇප් වලටත් යූස් කරනවා FCM, Analytics, Crashlytics etc

    හාඩ්කෝඩඩ් API කී ගැන ඔය කියන්නෙ
    APK එක Decompile කරලා string search එකක් කරලා එහෙම තියන API කී හොයන්න පුලුවන්
    හැබැයි Oauth 2 යූස් කරලා public client flow එකක් යූස් කරන ඇප් වල client id එක ඇප් එක ඇතුලෙ තියනවා ඒක සෙකියුරිටි රිස්ක් එකක් නෙමයි බැලු බැල්මට ඒකත් කී එකක් වගේ
    හැබැයි client_id, client_secret දෙකම තියනවා නං වැරදි flow එකක් යූස් කරලා තියෙන්නෙ ඒක වැරදියි


    Yes
    but Android keychain security depend on the hardware features like secure vault etc. but that provides reasonable security compared to user pref

    phone එක බැකප් කරාම shared pref ටික නිකන්ම ෆයිල් එකක් විදියට තියනවා ඒක පට්ටම insecure



    JWT එක එන්ක්‍රිප්ට් කරලා නැහැ ඕන කෙනෙක්ට ඩිකෝඩ් කරන්න පුලුවන් ඒක expected, jwt.io කියන්නෙ developer tool එකක්, inspect element වගේ
    JWT එකේ සෙකියුරිටි එක තියෙන්නෙ එතන නෙමයි
    jwt එකේ කෑලි තුනක් තියනවා . එකෙන් සෙපරේට් කරලා
    HEADER.PAYLOAD.SIGNATURE විදියට
    JWT එක යූස් කරන්නෙ මෙහෙමයි
    සර්වර් එකේ(jwt එක ජෙනරේට් කරන තැන) private key, public key pair එකක් (or multiple key pairs) තියනවා
    සර්වර් එක public key එක ඕන කෙනෙක්ට certificate එකක් විදියට ගන්න හරි jwks endpoint එකකින් ඕන කෙනෙක්ට ගන්න පුලුවන් විදියට දීලා තියනවා
    Example google's certs : https://www.googleapis.com/oauth2/v3/certs

    ලොගින් එකේදි හරි token එක issue කරද්දි හරි jwt එක private key එකෙන් සයින් කරලා ඒ signature එක තමයි අර jwt signature කෑල්ලෙ තියෙන්නෙ. අපිට public key එකට ඇක්සස් තියන නිසා jwt එකේ signature එක අපිට verify කරන්න පුලුවන්.
    උදාහරනයක් විදියට අපිට login with google වලින් හම්බුනු jwt එක අර දීපු පබ්ලික් කී යූස් කරලා වෙරිෆයි කරන්න පුලුවන් ඇත්තටම ගූගල් දීපු jwt එකක්ද කියලා

    ඇන්ඩ්‍රොයිඩ්/ios/web ඇප් වලදි කරන්නෙ ලොගින් එකේදි සර්වර් එකෙන් jwt එකක් ඇප් එකට දෙනවා(using refresh token or authorization code or whatever flow)
    ඇප් එක ඒක කොහේ හරි secure විදියට තියාගෙන ඉන්නවා. මේකට ලොකු වැලිඩිටි ටයිම් එකක් නැති නිසා මේක ලීක් උනත් වැලිඩිටි ටයිම් එකේදි විතරයි යූස් කරන්න පුලුවන්
    ඒක නිසා තමයි මේ ඇක්සස් ටෝකන් වලට ගොඩක් පොඩි විනාඩි ගානක වැලිඩිටි ටයිම් එකක් දෙන්නෙ.
    ඇප් එක API එක කතා කරද්දි සර්වර් එකට මේ jwt එක යවනවා
    සර්වර් එකේදි අනිවාර්යෙන් මේකෙ වැලිඩිටි ටයිම් එක සහ signature validation එක කරන්න ඕන. ඒ දෙකම හරි නං API එක වැඩ කරනවා නැත්තං 401 වගේ එකක් return කරනවා
    මේකෙදි තව වාසි තියනවා, මේක අපිට jwt එක issue කරපු කෙනා ලඟට යන්නෙ නැතිව වැලිඩේට් කරන්න පුලුවන් මොකද පබ්ලික් කී එකට අපිට ඇක්සස් තියන නිසා, ඕන නං අපිට පුලුවන් වෙන කෙනෙක් දීපු jwt එකකින් අපේ API එකකට ඇක්සස් දෙන්නත් පුලුවන්

    me flow එකේ කරන common mistake එක තමයි සර්වර් එකේදි validity time එක චෙක් කරාට signature එක චෙක් කරන්නෙ නැති එක. මේක පට්ටම දරුනු සෙකියුරිටි බග් එකක් වෙනවා
    මොකද එතකොට අපිට පුලුවන් වෙන කෙනෙක් විදියට jwt එකක් ජෙනරේට් කරලා API access කරන්න. signarure එක අතඇරලා දැම්මොතින් JWT එක කියන්නෙ සරලවම Base64 Encode කරපු JSON එකක්. ඒක නිසා වෙන කෙනෙක් JWT එකක් අරන් එනවා නං අනිවාර්යෙන් ඒක signature + time වැලිඩේට් කරන්න ඕන

    තව payload එකේ propeties තියනවා ඒවට claims කියලා කියන්නෙ
    විශේශ claims තියනවා
    issuer/audance etc etc කියලා
    තව ටයිප් කරන්න කම්මැලී
    android pentesting resources nedd? Man den labs karanne indian karayek gen amuna amuna > web wlt wada apk easy kiyl hithenw idk habai :cautious:

    @jdchathuranga androidmanifest.xml eke structure and metadata thiyenwne.. ookata amatharawa realworld app wala thawa mehema resource store krn places thiyed?
     

    jdchathuranga

    Well-known member
  • May 4, 2009
    568
    1,348
    93
    37
    Colombo
    android pentesting resources nedd? Man den labs karanne indian karayek gen amuna amuna > web wlt wada apk easy kiyl hithenw idk habai :cautious:
    IMO ඇප්ස් වලට වඩා වෙබ් ලේසියි
    ඔය දෙකේදිම server එක පැත්තෙ තමයි වැඩිපුර බග්ස් තියෙන්නෙ ඒව කොහොමත් ටෙස්ට් කරන්න ඕන

    තව සමහර බග්ස් තියනවා Android/iOS වලටම specific ම ඒව ඒව ගැනත් දැන ගන්න ඕන
    තව සමහර බග්ස් version/vendor ට ස්පෙසිෆික්

    @jdchathuranga androidmanifest.xml eke structure and metadata thiyenwne.. ookata amatharawa realworld app wala thawa mehema resource store krn places thiyed?
    manifest.xml එක කෙලින්ම ඇන්ඩ්‍රොයිඩ් ඇප් එකක් නං තියෙන්න ඕන එකක්නේ
    රිසෝස් නං Depends නේ
    ඕන නං Developer ට කස්ටම් විදියට හදාගන්න පුලුවන් නේ
    අපිත් සමහර වෙලාවට properties file/yaml/xml වගේ ඒවත් යූස් කරනවා
     
    • Love
    Reactions: hecker_thama

    hecker_thama

    Well-known member
  • Dec 27, 2022
    6,764
    6,979
    113
    IMO ඇප්ස් වලට වඩා වෙබ් ලේසියි
    ඔය දෙකේදිම server එක පැත්තෙ තමයි වැඩිපුර බග්ස් තියෙන්නෙ ඒව කොහොමත් ටෙස්ට් කරන්න ඕන

    තව සමහර බග්ස් තියනවා Android/iOS වලටම specific ම ඒව ඒව ගැනත් දැන ගන්න ඕන
    තව සමහර බග්ස් version/vendor ට ස්පෙසිෆික්
    https://hackerone.com/reports/44727 :P den mehema eewa nene