目录遍历
原理
很多web服务一般都对服务器的文件有访问权限,访问者访问网站,web服务通过路径找到对应文件并返回给访问者。但恶意的攻击者可以通过提交精心设计的路径来访问本不该被公开的文件。
例如
<?php
$path = $_COOKIE['path']
include ("/var/www/html".$path)
?>
当攻击者提交的path为"…/…/…/etc/passwd"时候,web服务将会遍历到passwd文件而返回给用户
防御
(1)数据净化:通过建立文件后缀白名单对提交的的路径进行清洗,过滤包含恶意字符的请求。
(2)chroot监狱:使用chroot环境包含被访问的web目录,针对web进程改变它外显的根目录,使得web进程不能访问指定根目录之外的内容
攻击
(1)编码绕过,尝试用不同的编码方式绕过,例如使用url编码…/来绕过对恶意字符的监测
(2)目录限定绕过:使用~等特殊字符直接跳转到磁盘目录下
(3)后缀绕过:有些服务器可能会检测文件后缀,可以通过在文件后边加空字符来绕过,例如…/…/boot.ini%00.jpg,web应用中允许有空字符%00,但是系统API直接会在空字符位置处进行截断,变成…/…/boot.ini
备用文件下载
原理
有时候web服务的源代码可能会从网站目录获得
一种情况是管理员自己上传的,一般后缀为tar tar.gz zip rar bak等等
一种是管理员使用vim进行编辑时,因为没有正常退出vim导致的vim缓存泄露,加入源文件名为index.php,第一次交互产生的交换文件名为.index.php.swp 第二次意外退出时产生的为.index.php.swo,第三次意外退出时的交换文件为.index.php.swn
防御
(1)避免将网站源代码上传到网站目录
(2)对源码文件进行严格的权限限制
攻击
使用disearch等工具对网站进行扫描
git泄露
原理
使用git进行版本控制和自动部署的时候,如果配置不当,可能会把.git文件夹直接部署到线上环境
危害
泄露内容包括所有该项目的源代码,私有仓库地址,配置信息,commiter的邮箱账号信息,可能的账号和密码
攻击
通过githack工具获取,githack工具会解析.git/index文件,找到工程中所有的文件名,去.git/objects/文件夹下载,然后按原始目录复原
SVN泄露
原理
使用SVN进行版本控制和自动部署的时候,如果配置不当,可能会将.svn文件夹直接部署到线上环境
危害
源代码 SVM仓库地址,用户名密码等等
攻击
使用dvcs-ripper工具获取
HG泄露
使用HG进行版本控制和自动部署的时候,如果配置不当,可能会将.svn文件夹直接部署到线上环境
攻击
使用dvcs-ripper工具获取
.DS_Store泄露
原理
.DS_Store是macOS目录下的隐藏文件,包含当前目录结构和一些自定义信息
危害
.DS_Store文件暴漏相当于暴漏了改目录下所有内容
攻击
ds_store_exp 解析.DS_Store文件并递归的下载文件到本地