在 OWASP 2017 中,是第六名,而在现在则上升到了第五位.
根据 OWASP 的调查,90% 的程序都能在测试中找到各类的设定缺陷.
由此可见安全配置检查也是不可缺少的一环.
讲讲 Nginx 解析漏洞
比方说我,在刚搭建个人博客的时候
不少教程网站,都会说
如果使用 Nginx + PHP
那么一定要关闭 php.ini 里面的cgi.fix_pathinfo 的值设置为 0.
这是为什么呢?
这就是设置不当发生了解析漏洞
比方说我输入以下网址
https://file.lsjlt.com/upload/f/202309/01/kfyssepxoif.jpg/fake.php
这个网址咋一看很正常
实际上显示的并不是一个正常的 php 界面
而是 test1.jpg 的二进制内容
这个过程也是非常容易理解
把这个网址向 Nginx 发送过去
Nginx 看见后面有 php 后缀
二话不说立马向 PHP 传过去
PHP 看了一眼,后面是 PHP 后缀,去寻找相关文件去执行
巧了,没有
PHP 就会把/前面的文件也当作 PHP 文件
如果没有,还会继续往前找
直到文件被找到
这个 test1.jpg 就这么误打误撞被误认为是 php 文件
换个角度想
如果我的图片中有一段 PHP 恶意代码
后果是不堪设想的
如果想要看漏洞复刻,可以看我之前的文章
说说其他的
MySQL 中 my.ini 有个 secure_file_priv 的值
这个是限制 MySQL 文件传到哪些目录下.
如果是 null 则为不允许
如果为空 则是允许保存到任何位置
如果是 /tmp/ , 则是运行保存在 tmp 目录下
这个参数,可以说是漏洞万源了
SQLmap 是利用的这个,写入了文件上传的 PHP 文件
UDF 提权 是利用这个,向 MySQL 导入外部函数,从而能够执行系统函数
不安全的配置还有很多
比方说
FTP错误配置被导致提权
宝塔未授权访问(已解决)
在 OWASP 中给了几个例子
-
在应用程序堆栈的任何部分缺少适当的安全强化或对云服务的权限配置不正确。
-
启用或安装了不必要的功能(例如,不必要的端口、服务、页面、帐户或权限)。
-
默认帐户及其密码仍处于启用状态且未更改。
-
错误处理向用户显示堆栈跟踪或其他信息过多的错误消息。
-
对于升级的系统,最新的安全功能被禁用或未安全配置。
-
应用程序服务器、应用程序框架(例如,Struts、Spring、ASP.NET)、库、数据库等中的安全设置未设置为安全值。
-
服务器不发送安全标头或指令,或者它们未设置为安全值。
-
软件已过时或易受攻击。
怎么预防?
OWASP 精简下来应该是这些
-
配置所有的安全机制
-
关掉所有不使用的服务
-
设置角色权限帐号
-
使用日志和警报
-
所有错误只显示友好信息,不显示任何与实际错误相关的信息
来源地址:https://blog.csdn.net/I_like_ctrl/article/details/127228437