0x01 安全配置错误
0x01 漏洞描述
好的安全需要对应用程序、框架、应用程序服务器、web服务器、数据库服务器和平台定义和执行安全配置。由于许多配置的默认值并不是安全的,因此,必须定义、实施和维护这些配置。这包含了对所有的软件保持及时的更新,包括所有应用程序的库文件。
安全配置错误可以发生在一个应用程序堆栈的任何层面,包括平台、Web服务器、应用服务器、数据库、架构和自定义代码。攻击者通过访问默认账户、未使用的网页、未安装补丁的漏洞、未被保护的文件和目录等,以获得对系统未授权的访问。
0x02 形成原因
1、软件没有被及时更新,包括操作系统、web应用服务器、数据库管理系统、应用程序和其他所有的代码库文件
2、apache服务器配置为显示目录索引,能够查看目录结构;没有关闭错误显示,可以根据错误提示获取敏感信息;没有删除默认的文件如phpinfo文件等
3、nginx服务器使用了autoindex模块、开启服务器标记、没有对IP连接数做限制、文件类型错误解析等等
4、开发框架(例如Struts、Spring等)和库文件中的安全设置没有配置恰当
0x03 危害性
不当的安全配置,攻击者能访问一些未授权的系统数据或功能,会使系统处于高风险中,随时都有可能被攻破,造成不可估量的损失。
0x04 防御方法
1、自动化安装部署,保证开发、QA、产品环境的配置尽量相同,减少部署一个新安全环境的耗费。
2、及时了解并部署每个环境的软件更新和补丁信息,确保所有应用都何如了最新的安全补丁,包括第三方软件或平台,特别是开源软件,需要及时升级和更新安全补丁。
3、提供有效分离和安全性强大的应用程序架构。
4、实施漏洞扫描和安全审计,以帮助检查错误的配置或者未安装的补丁,推荐使用nessus,AppScan等扫描软件对应用程序和服务器进行安全扫描。
5、使用最小权限原则,给用户分配刚好能够满足业务范畴的权限。
6、禁止将.old, .bak, .test等测试文件或备份文件随产品发布,禁止将文件上传到Web服务器目录,禁止给上传的文件可执行权限。
7、对使用的Web容器,操作系统进行加固,不要使用管理员账户运行应用程序和数据库服务,如禁用Web容器的控制台,不要使用数据库管理严账户运行数据库,配置SSL通道,采用安全的TSL协议版本,配置安全加密套件,合理控制文件权限。
8、合理处理应用程序错误,不要将敏感信息随意泄露和展现到客户端,被攻击者利用从而轻易攻破系统。
0x02 业务逻辑
0x01 漏洞描述
业务逻辑问题是一种设计缺陷。逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误。
精明的攻击者会特别注意目标应用程序采用的逻辑方式,设法了解设计者与开发者做出的可能假设,然后考虑如何攻破这些假设。
黑客挖掘逻辑漏洞有两个重点,就是业务流程和HTTP/HTTPS请求篡改。
0x02 逻辑错误分类
1.欺骗密码找回功能
程序根据一个验证码来确定是用户本人,但是攻击者可以暴力破解验证码。
2.规避交易限制
攻击者篡改数据报,使得购买的商品为负数,或者商品价格为负数。
3.越权缺陷
攻击者更改数据包中指示用户的id,来访问他人敏感信息或者冒充他人发布信息。
4.cookies和session的问题
攻击者在知道用户ID的前提下,然后构造一个cookies或让session值为true就可以绕过这样的认证。
5.顺序执行缺陷(强制浏览)
攻击者在网购的过程中绕过支付过程,直接从放入购物车步骤进入填写收货地址的步骤,这样的话就可以0元购物了。
0x03 利用方法
1、业务逻辑数据验证测试 (OTG-BUSLOGIC-001)
在业务逻辑数据验证测试中,我们验证应用程序不允许用户向系统/应用程序插入“未验证”的数据。这是非常重要的,因为如果没有这层防护措施,攻击者可能向应用程序/系统插入“未验证”的数据/信息,而且使系统认为这些数据是“好的”并且已经在“入口”点进行验证,并且让系统相信“入口”点已经实施过了数据验证,因为这是业务逻辑工作流的一环。
2、请求伪造能力测试 (OTG-BUSLOGIC-002)
在伪造和参数预测测试中,我们验证应用程序不允许用户向系统任何不应该有权限访问的或者需要特定时间特定方法访问的组件中提交或改变数据。这非常重要,因为缺少这层防护措施,攻击者可能通过“愚弄/忽悠”应用系统允许他们进入本不能进入的区域,绕过了应用业务逻辑工作流。
3、完整性测试 (OTG-BUSLOGIC-003)
在完整性检查和篡改证据测试中,我们验证应用程序不允许用户破坏系统任何部分或数据的完整性。这非常重要,因为缺少这层防护措施,攻击者能打破业务逻辑工作流,并改变已经被攻破的应用/系统数据或者通过改变日志文件中的信息掩盖某种行为。
4、过程时长测试 (OTG-BUSLOGIC-004)
在过程时长测试中,我们验证应用程序不允许用户通过输入/输出时长来操作系统或者预测系统行为。这非常重要,因为缺少这层防护,攻击者可能能监视处理时间和确定基于时间的输出内容或通过时间差异不完成某事务或某动作来绕过应用程序业务逻辑。
5、功能使用次数限制测试 (OTG-BUSLOGIC-005)
在功能限制测试中,我们验证应用程序不允许用户使用超出应用程序的份额或业务工作流需要的功能次数。这非常重要,因为缺少这层防护,攻击者可能能超出业务使用次数许可地使用应用程序功能或者份额来获取额外的利益。
6、工作流程绕过测试 (OTG-BUSLOGIC-006)
在绕过工作流的测试中,我们验证应用系统不允许用户实施在业务处理流程“支持/需要”之外的动作。这非常重要,因为缺少这层防护,攻击者可能能绕过工作流和某些检查,允许他们提前进入或跳过某些必须的区域。应用系统潜在允许动作/事务在不完成完整的业务流程下完成,使整个系统处在不完整的信息追踪回溯的环境中。
7、应用误用防护测试 (OTG-BUSLOGIC-007)
在应用程序误用测试中,我们验证系统不允许用户以不预期的方式使用应用程序。
8、非预期文件类型上传测试 (OTG-BUSLOGIC-008)
在非预期文件上传测试中,我们验证应用程序不允许用户上传系统期待或业务逻辑允许以外的文件类型的文件。这非常重要因为缺少这层防护,攻击者可能提交非预期的文件如.exe或.php,这些文件可能被保存在系统之中,并被系统或应用程序执行。
9、恶意文件上传测试 (OTG-BUSLOGIC-009)
在恶意文件上传测试中,我们验证应用系统不允许用户向系统上传能破坏系统安全的恶意或潜在恶意文件。这非常重要因为缺少这层防护措施,攻击者就能够向系统上传恶意文件来传播病毒、恶意软件甚至利用程序如执行shellcode。
0x03 弱口令
0x01 漏洞描述
通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。
常见弱口令有:
1、数字或字母连排或混排,键盘字母连排(如:123456,abcdef,123abc,qwerty,1qaz2wsx等);
2、生日,姓名+生日(利用社工非常容易被破解);
3、短语密码(如:5201314,woaini1314等)。
0x02 形成原因
这个应该是与个人习惯相关与意识相关,为了避免忘记密码,使用一个非常容易记住的密码,或者是直接采用系统的默认密码等。
相关的安全意识不够,总认为不会有人会猜到我这个弱口令的。
0x03 危害性
在当今很多地方以用户名(帐号)和口令作为鉴权的世界,口令的重要性就可想而知了。口令就相当于进入家门的钥匙,当他人有一把可以进入你家的钥匙,想想你的安全、你的财物、你的隐私。因为弱口令很容易被他人猜到或破解,所以如果你使用弱口令,就像把家门钥匙放在家门口的垫子下面,是非常危险的。
0x04 防御方法
设置密码通常遵循以下原则:
(1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
(2)口令长度不小于8 个字符。
(3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
(4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
(5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail 地址等等与本人有关的信息,以及字典中的单词。
(6)口令不应该为用数字或符号代替某些字母的单词。
(7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
(8)至少90 天内更换一次口令,防止未被发现的入侵者继续使用该口令。
附:弱口令top100