任意文件与路径遍历
提交文件目录地址酒吧目录的文件列表发给用户,造成目录遍历安全
关键字:
file_name=一个存在目录
就会返回目录下的文件
攻击:
避开“是否存在任何路径遍历序列”
不同的编码(url/unicode/双倍url)
使用斜线和反斜线的路径遍历序列
一个序列替换另一个序列“.../\”“...//”
包含应用需要的后缀(文件类型)或前缀(起始目录)
../../boot.ini%00.jpg 文件类型的00截断
指定的起始目录 filestore/../../etc/passwd
防御:
设置中间件,禁止目录遍历
对用户提交的文件名进行解码与规范,空字节
查看访问文件是否在指定目录中
阿里云的防御:
下载的文件地址保存到数据库中
用户提交对应的ID下载
下载前做权限判断
文件放在web无法直接访问的目录下
记录日志
文件上传漏洞
上传shell并且解析
绕过方式:
前端的js绕过
MIME类型检测
服务端目录检测 截断
文件类型检测 大小写 黑名单 特殊文件名 .htaccess攻击 解析漏洞
文件内容检测 幻数
解析攻击
防御:
上传文件目录是无法直接访问到的,不可解析脚本语言的目录
利用白名单来检查文件类型
随机重命名,不可带入任何可控参数
图片二次渲染
最新的webserver版本
文件包含漏洞
在PHP中常见
include(),include_once(),require(),require_once(),fopen()等函数
我先上传一个txt文件的php木马
然后用文件包含漏洞去包含这个txt
就会被php解析
防御:
白名单来检查文件类型
安全存储与传输
get提交密码 -》post提交
敏感信息加密传输或使用htps
敏感信息模糊化处理(张**,135****5555)
敏感文件加密处理
压缩目录与备份文件下载
zip.bak等文件直接下载,代码泄露
错误提示造成信息泄露
造成web的根路径泄露,数据库等信息泄露
防御:
给出统一的错误界面
框架漏洞
Struts2 任意命令执行漏洞 打补丁
spring表达式注入 关闭语言表达式功能,对特殊字符过滤
thinkphp代码执行 打补丁
webserver安全
禁止使用默认密码和弱密码
删除不必要的控制台与exp等路径
设置开关,禁止目录遍历
get与post
打补丁,升级版本
第三方编辑器:
越权,直接数入网址即可上传
FCK未授权访问与上传漏洞
安全错误配置
语言表达式关闭
开发模式关闭
中间件目录遍历关闭
版本更新
安全辅助 输入处理
校验字符编码
转换字符编码
输入校验 :
校验类型与校验对象:
校验控制字符
应用规格校验
校验字符数(SQL注入语句限制长度)
所有的参数都需要校验
二进制安全和空字节攻击
二进制:输入的字符原封不动的进行处理
空字节:%00截断
?p=123%)0<script></script>
软件安全开发--SDL
设计/开发/测试/部署
传输加密
参数绑定
Web安全开发总结
问题:
用户可以提交任意输入
防御:
处理用户的应用程序的数据和功能,防止非授权访问
信息泄露,爆路径
敏感信息要模糊化
记录攻击时间
能使用白名单就不要黑名单
数据和代码分离原则
木桶原则
代码执行--任意代码漏洞
命令执行--任意命令漏洞
文件操作--文件读写漏洞
数据库操作--SQL注入
数据显示--XSS
上传--上传漏洞
后台或API--安全认证绕过