产品常见安全漏洞挖掘和分析以及解决方案

缓冲区溢出

原理
当函数内的一个数组缓冲区接受用户输入的时候,未对输入的长度进行合法性检查时,可以构造数据覆盖超过缓冲区的高地址上原本的其他栈帧数据,如果本身的数据内就保存了一系列的指令的二进制代码,一旦栈溢出修改了函数的返回地址,并将该地址指向这段二进制代码的起始位置,那么就形成成了基本的溢出攻击行为。
防护措施
1)只使用安全的内存操作函数。
2)在进行内存操作之前,对要操作的长度和被操作空间的长度进行比较,如果大于禁止继续进行操作。
–这里要注意整数溢出,长度对比时要注意,使用安全函数也要注意(安全函数有传入的长度限制,溢出后这个限制就无用了 ,例如strncpy第三参数是无符号,溢出后就变得很大)
挖掘方法
1)检查是否有使用strcpy、strcat、sprintf、vsprintf等危险函数,其数据是否有越界可能。(这个先记录后分析)
2)检查使用gets、fgets、getchar、fgetc、getc、read、scanf、sscanf、fscanf、getenv等函数时,其数据是否有越界可能。
3)检查使用strncpy、strncat、snprintf等函数时,n为是否为缓冲区可接收的最大长度减1 。(snprintf在linux上内部有减1)
4)检查使用memcpy、 memmove等函数时,n为要拷贝的长度,并且在拷贝之前要对n进行检查,是否小于等于缓冲区最大容量。

数组越界

原理与缓存冲区溢出类似
挖掘方法:通过工具静态扫描(codescan),分析扫描结果 (这个通过工具扫描,人工挖掘无较好方式–无关键字,得逐行查看)

格式化字符串漏洞

原理:使用用户输入的字符串作为格式字符串,通过构造格式化字符串(如%x,%s,%n), 攻击者将有机会对任意内存地址进行读写操作。
防护措施:禁止使用用户输入的字符串作为格式字符串
挖掘方法:搜索所有scanf, printf, sprintf, snprintf, vsprintf, vsnprintf, syslog,等检查是否有使用用户输入的字符串作为格式化字符串。

整数溢出

原理:有符号整数会在最高位用0表示正数,用1表示负数,无符号整数则没有这种限制,其之间的操作会存在上溢和下溢,从而导致安全漏洞。
挖掘方法:检视外部输入参数长度做校验的地方,是否存在整数溢出而绕过检查,导致超过缓存取大小的数据写入、程序崩溃或逻辑漏洞等。
检查点:
1)无符号整数的下溢和上溢(赋值)。
2)有符号整数之间的比较。
3)有符号整数的运算。
4)无符号整数和有符号整数的对比。
通过工具扫描,人工挖掘无较好方式–无关键字,得逐行查看,关键代码通过代码走读(模块待定)。

命令注入

原理:调用系统命令前未对外部用户输入数据进行合法性检查,导致直接执行非法用户构造的命令
挖掘方法:检视system、popen、exec系列函数,以及封装的函数,确认命令里面使用的参数是否有做限制(保证无特殊字符)或做转义(escapeshellarg或类似方法)

SQL注入

原理:构造特殊的SQL语句(参数)对数据库进行非法操作
挖掘方法:以使用sqlite数据库为例,检视是否有使用sqlite,搜索sqlite3,关键字包括sqlite3_exec,sqlite3_get_table等,查看sql语句是否通过sqlite3_snprintf/sqlite3_mprintf构造,不是则需要替换,若通过sqlite3_snprintf/sqlite3_mprintf构造的,则需要注意字符串参数是否都是使用的%q且是用单引号扩起来(%q会对单引号做处理,使用%s就存在注入可能)

文件上传

原理:服务端未检测文件类型,可能导致上传非法的文件到设备后台
挖掘方法:检查产品中上传文件的相关api函数,是否有对文件类型判断(后缀和内容限制),并确保文件名无特殊字符或00截断(后面这个可能导致命令注入)

目录穿越

原理:直接使用外部传入参数做路径,未对参数进行检测(如包含…/、范围非法等),导致其访问限制外的目录或文件
挖掘方法:检查产品中上传文件的api函数是否有对文件路径做检查

权限校验

挖掘方法:检查访问产品中的相关资源是否都通过了权限校验(checkuser,CheckCookie等)再进行的操作。

XSS

原理:以CGI为例,CGI输出是通过替换HTML模板内容输出的,替换内容为客户端上传(没有限制XSS特殊字符),且替换时也没有做处理就存在XSS注入漏洞
挖掘方法:替换时HTML模板内容时检测内容是否为外部传入,是否做过特殊字符限制,是否对字符进行转义处理。

CSRF

防护措施:通过检查http请求中的referer头部信息;服务端下发唯一并且具备时效性的token后,检查客户端请求中提交的token

SSRF

原理:服务程序接收客户端上传的URL,未做过滤和限制直接访问URL
挖掘方法:检视是否有使用curl、wget等的进行url访问,检查url是否是外部输入,是否做了过滤和限制。

CRLF (配置文件)

原理:在保存某个字段的配置时利用\r\n(linux服务器上\n就可以了)进行换行,输入其他字段的数据,以达到 越权修改 其他字段数据,或绕后其他字段 数据格式 校验的目的
挖掘方法:搜索保存配置的方法,检查是否为外部输入,是否做了格式校验或限制\r\n(或者\n)的输入

XXE

原理:即XML外部实体注入,当允许引用外部实体时,而XML数据又是来自外部输入,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等
挖掘方法 :搜索加载xml的代码,查看xml内容来源是否为外部输入,是否可以构造外部实体(DTD)进行加载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《Android应用安全实战:Frida协议分析》是一本介绍Frida工具的使用和Android应用安全分析的书籍。Frida是一个强大的动态分析工具,可以帮助开发人员和安全研究人员对应用进行动态分析。本书以Frida为基础,介绍了如何对一些常见安全问题进行定位和修复。 本书主要分为三部分,第一部分介绍了Frida工具的安装和使用方法,包括如何在Windows、Mac和Ubuntu三个系统上安装Frida,以及如何使用Frida对应用进行动态分析漏洞挖掘。第二部分介绍了一些常见安全问题,如反调试、class tampering、hook、rpc等问题,并详细介绍了如何通过Frida对这些问题进行分析和修复。第三部分介绍了一些应用案例分析,以及如何通过Frida对应用中的加密算法、网络协议、第三方代码等进行分析。 本书的特点在于实战性强,作者通过大量的实例和案例,让读者能够更加深入地理解Frida工具的使用方法,并能够将所学知识应用到实际的项目中。同时,本书还提供了一些工具和脚本,方便读者能够更加快速地进行分析和修复工作。 总的来说,本书是一本对于安卓开发人员、移动安全研究人员和安全工程师来说非常有价值的工具书,无论是对于入门和提高都有很大的帮助。Frida工具的特点在于动态分析,能够帮助开发人员和安全工程师快速定位和修复常见安全问题。而本书则是一个详细的实例教程,通过这份教程的学习,读者将能够掌握Frida工具的使用方法,并能够熟练地应用到实际的项目中。 ### 回答2: 《Android应用安全实战:Frida协议分析PDF》是一本针对移动应用安全的实战指南。这本书主要讲述了如何借助Frida这个强大的工具来进行移动应用的安全分析漏洞挖掘。 Frida是一款可用于对移动应用进行实时动态分析的工具,它的优点在于可以轻松地hook任意函数和类,还可以在不用重新编译应用程序的情况下动态修改应用程序的行为。Frida的这些特性使得它成为了许多黑客和渗透测试人员使用的首选工具之一。 在《Android应用安全实战:Frida协议分析PDF》中,作者首先介绍了Frida工具的基本原理和使用方法,包括安装和配置Frida、使用Frida脚本、使用Frida进行hook等。接着,作者详细介绍了Android应用程序的各个组成部分和重要的安全机制,并给出了许多实例来演示如何通过Frida来绕过这些安全机制。 最后,作者还介绍了一些常用的Frida脚本和工具,比如Hooking SSLPinning脚本、Frida-Extract工具、在Android 8.0上使用Frida等。这些工具和脚本可以帮助读者更快更高效地进行移动应用的安全分析漏洞挖掘。 总的来说,《Android应用安全实战:Frida协议分析PDF》是一本非常实用的书籍,对于渗透测试人员、黑客和移动应用开发人员来说都具有一定的参考价值。通过学习和掌握Frida这个工具,可以让我们更好地发现和修复移动应用程序中的安全问题,从而提升我们的移动应用程序的安全性和可靠性。 ### 回答3: 《Android应用安全实战:Frida协议分析》是一本关于安卓应用安全的实战教程。该书的重点在于介绍如何使用Frida协议进行应用程序的逆向分析,得出应用程序的安全漏洞,并给出相应的解决方案。 Frida是一个能够在运行时动态注入JavaScript并调试代码的工具。这也意味着Frida能够直接访问运行在内存中的应用程序。这个优势使Frida成为了一个强大的安卓应用程序分析和调试工具。通过使用Frida,用户可以对应用程序进行监视、修改、甚至是攻击。 《Android应用安全实战:Frida协议分析》详细介绍了Frida的使用方法,包括Frida的架构、基本操作、配置和调试应用程序等。此外,该书还介绍了有关安卓应用程序逆向工程和安全审计的实操技能。通过本书的学习,在安卓应用程序的开发过程中,读者可以掌握一定的安全知识和技能,从而提高应用程序的安全性,避免攻击和漏洞的发生。 总之,《Android应用安全实战:Frida协议分析》是一本非常实用、易懂的安卓应用程序安全入门教材。在阅读该书并掌握其中的技能后,用户可以应用这些技能进行应用程序的逆向分析安全审计,从而达到提高安卓应用程序安全性的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值