Web应用安全测试-业务功能滥用(一)
1、短信定向转发
漏洞描述:短信接收人可任意指定
测试方法:拦截发送短信的请求,将手机号改为测试人员的手机号,测试是否可接收短信验证码。
风险分析:攻击者可利用该漏洞将验证码发送到自己的手机号上,重置他人密码或转账。
风险等级:
【高危】:短信接收人可任意指定
修复方案:发送短信时手机号从当前会话中获取,避免从前端传入。
注意事项:暂无
2、邮件可定向转发
漏洞描述:应用系统发送邮件的接收人可由客户端任意指定
测试方法:拦截发送邮件的请求,将接收人邮箱改为测试人员的邮箱地址,测试是否可接收邮件。
风险分析:攻击者可利用该漏洞将邮件发送到自己的邮箱中,重置他人密码。
风险等级:
【高危】:邮件接收人可任意指定
修复方案:发送邮件时邮箱从当前会话中获取,避免从前端传入。
注意事项:暂无
3、业务接口调用缺陷
漏洞描述:应用的业务接口存在缺陷,可以通过业务接口直接进行恶意操作。
测试方法:把业务逻辑和功能模块呈现的内容结合,推测出隐藏的API接口。
如用户信息的接口是http://www.xxx.com/api/user/userInfo,推测重置密码接口可能是http://www.xxx.com/api/user/passReset,文件上传接口是http://www.xxx.com/api/user/uploadFile等。如果这些接口没有限制访问,则可以直接调用并提交数据。
针对开源或商业软件的业务接口调用缺陷可参考《通用系统安全测试指导文档》
风险分析:攻击者可通过编写API枚举脚本,恶意调用敏感接口,从而进行提交数据等操作。
风险等级:
【高危】:通过业务接口能够操作核心业务内容,进行越权
【高危】:通过业务接口能够获得重要敏感数据
【中危】:通过业务接口能够获得中等程度敏感数据
修复方案:对于每一个访问的接口都首先检查当前用户是否已经登录并授权(不需要认证的接口除外,例如,免费下载接口等)。
注意事项:暂无
4、IMAP/SMTP注入
漏洞描述:和广为人知的诸如SQL注入、XPath注入等技术类似,邮件服务器注入技术也是通过一个对用户提供的数据没有严格检查的webmail应用程序将IMAP命令或者SMTP命令注入到邮件服务器。要向邮件服务器注入命令,前提条件是允许用户通过webmail应用程序访问其端口25(SMTP)和143(IMAP)。
测试方法:要利用SMTP注射,用户必须事先通过认证,所以用户必须有一个有效的webmail帐户。通过SMTP发送电子邮件消息的格式如下:
- 发送方的e-mail地址
- 接收方的e-mail地址
- 主题
- 消息主体
- 附件
- CC/BCC注入
在发送者字段(sender)后注入CC和BCC参数
From:sender@domain.com%0ACc:recipient@domain.com%0ABcc:recipient1@domain.com
所以现在,消息将被发送到recipient和recipient1账户。 - 参数注射
From:sender@domain.com%0ATo:attacker@domain.com
现在消息将被发送到原来的收件人和攻击者帐户。注意,这里的攻击者的账户是我们通过注入额外传入的。 - 邮件主题注入
From:sender@domain.com%0ASubject:This’s%20Fake%20Subject
攻击者注入的假的主题subject将被添加到原来的主题中并且在某些情况下将取代原本的主题subject。这取决于邮件服务行为。即代码编写的容错性,当参数中出现两个subject的时候代码是选择丢弃还是后者覆盖。 - 改变消息的主体body
要注意SMTP的Mail格式,消息主题和头部Header之间有两个换行符(和HTTP是一样的)。
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
假消息将被添加到原始消息中。
风险分析:电子邮件注入允许恶意攻击者注入任意邮件头字段,BCC、CC、主题等,它允许黑客通过注入手段从受害者的邮件服务器发送垃圾邮件。
风险等级:
【高危】:可成功劫持密码找回等信息
【高危】:可成功发送垃圾邮件
修复方案:建议从以下几个方面进行防御:
- 所有用户输入应该被认为是不可信的。使用正则表达式来过滤用用户提交的数据。例如,可以在输入字符串中搜索(r 或 n)。
- 使用外部组件和库,例如ZEND mail、PEAR mail和swift mailer。
- ModSecurity可以阻止服务器级别的电子邮件注入。利用ModSecurity,可以检测通过POST或GET提交的CC, BCC或目的地址,并且拒绝任何包含这些字母请求。
注意事项:暂无
5、引用第三方不可控脚本/URL
漏洞描述:页面中引用了不可控的脚本或超链接
测试方法:检查页面内容,是否引用了第三方未知脚本或超链接,如恶意的js脚本或病毒木马的下载链接等。
风险分析:攻击者可在网站中插入恶意链接或脚本,导致正常用户浏览时cookie被窃取或被种植病毒木马。
风险等级:
【高危】:存在不可控外链或脚本,且未经过审批
【中危】:存在不可控外链或脚本,但可提供审批记录
修复方案:建议在不影响业务的前提下,对网站引用的文件和源代码进行审查,一经发现有未审批的外链或脚本,应立即删除。
注意事项:暂无
6、开启危险接口
漏洞描述:开启可利用的危险接口,如获取订单信息、用户身份信息等。
测试方法:
- 使用扫描器扫描特殊目录和链接
- 根据正常接口的命名特征猜测隐藏的危险接口,如获取个人信息接口是getUserInfo,猜测获取订单信息接口getOrderDetail。
风险分析:开启了危险接口,如订单信息打印、上传、web管理控制台等,可能被攻击者发现并利用,直接操作应用数据,造成数据泄漏等风险。
风险等级:
【高危】:正常情况接口是在认证之后被调用,如果可公网直接无认证使用
【中危】:存在特权、非正常用户不可知但可利用接口
修复方案:
- 敏感接口增加访问控制,避免未授权访问;
- 用户访问接口需校验权限,避免越权访问。
注意事项:暂无