android 组件暴露风险,Activity组件暴露导致本地拒绝服务
這幾天團隊打算一起學習Android App漏洞挖掘方面的知識,于是乎拿了一個app當測試例子,爭取在上面找到漏洞。在學習過程中發現Android四大組件的安全性還是占有較大的比重,另外比較關心的是數據的安全性。數據泄漏、明文存儲等和數據相關都是比較重要的。但是今天找到的一個漏洞是關于Activity組件的,本地拒絕服務漏洞。
同時學習了drozer的使用方法,利用drozer幫忙找漏洞。
下面總結一些常用的drozer命令:
run app.package.info -f xxx
xxx是包名的一部分,運行這條命令之后會顯示完整的包名
run app.package.info -a
運行這條命令會打印出包相關的信息,包括版本、路徑、權限、uid、gid等
run app.package.attacksurface
運行這條命令之后會打印出這個應用四大組件的攻擊面,Activity, Service, Content Provider, Broadcast是否有暴露的風險
run app.activity.info -a
運行這條命令會打印出exported的activity,并且顯示是否需要相應的權限
run app.activity.start --component
如果activity是exported并且不需要權限,那么運行這條命令就可以啟動相應的activity了
(目前只測試了activity組件,所以關于其他組件的命令暫時還沒有使用)
首先說明一下這個本地拒絕服務漏洞的大概原理:
通過drozer可以找到exported的activity,而許多activity的調用是不需要權限的,即permission=null。意味著,其他應用無須權限就可以調用這些activity。同時,如果activity的調用是需要參數的,那么在調用時不帶上參數就會因為輸入異常導致應用崩潰了,這樣就造成了本地拒絕服務。
漏洞修補的方法也很簡單,可以從以下三個方面下手:
1.不需要被外部調用的activity設置android:exported="false";
2.若需要外部調用,需自定義signature或者signatureOrSystem級別的權限;
3.注冊的組件請嚴格校驗輸入參數,注意空值判定和類型轉換判斷
簡單的Poc:
Intent intent = new Intent();
intent.setComponent(new ComponentName(, ));
intent.putExtra("", "");
startActivity(intent);
原文:http://www.cnblogs.com/sevenr/p/4655769.html
總結
以上是生活随笔為你收集整理的android 组件暴露风险,Activity组件暴露导致本地拒绝服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#笔记-PictureBox.Size
- 下一篇: awx入门操作说明