敏感信息泄露

默认帐户
通用性web程序有默认的管理员用户或者测试用户,才应用上线时没有进行清除致使第三方能够直接登陆,进行一些操做。php

  1. 数据库软件。
  2. 集成开发环境。
  3. CMS内容管理系统。
  4. 路由器管理界面。
  5. 摄像头管理界面。等

实例:
echop在默认安装的时候,安装程序会默认添加两个管理员帐户。html

后台/服务对公开发python

  1. 后台地址泄露
  2. 后台地址被爆破
  3. 后台未作受权
  4. 敏感服务未作访问限制,能够直接访问

实例:
后台地址爆破:apache默认配置中发昂文http://ip/test/,直接返回test目录全部文件。
并且目录若是存在非服务器解析文件能够直接下载,若是存在服务器备份文件则对服务器形成直接威胁。git

debug信息
原理:
为了开发人员可以快速定位错误的代码,脚本配置文件打开出错误提示选项。
可是debug信息可能会透露部分代码、绝对路径等信息。(好比SQL的报错注入)github

修复方法web

  1. 可使用两套环境,开发一套(开)实际上线一套(关)。
  2. 在代码前加入error_reporting(E_ALLE_NOTICEE_WARNING);能够关闭全部notice和warning级别的错误。
  3. 在代码前加入error_reporting(0);便可关闭全部报错。
  4. 打开php安装目录下的php.ini文件,找到display_errors = On 修改成display_errors = off。

版本控制系统docker

版本控制也是一种软体工程技巧,借此能在软体开发的过程当中,确保由不一样人所编辑的统一程式档案都获得同步。
在这里插入图片描述数据库

Git

Git是一个开源的分布式版本控制系统。
用法:apache

Docker run -p 81:80 -it ubuntu bash  拉取ubuntu并运行进入ubuntu。

Linux下apache的默认根目录 /var/www/html

Git:是一个开源的分布式版本控制系统用于敏捷高效的处理任何或大或小的项目。

设置身份:
git config --global user.email "you@example.com"设置邮箱
  git config --global user.name "Your Name"设置名字

Git add 1.php 提交到缓冲区

git commit -m "create file!" 提交到仓库(“”内的内容是操做提示,自定义编辑)

Git log 查看仓库日志

git reset --hard HEAD^ 往回退一个命令
git reset --hard HEAD^^ 往回退两个命令
git reset --hard HEAD~10 往回退十个命令

git reflog 能够查看之前操做的日志

git reset --hard "e555f27",具体退到哪一个步骤

提交的时候用git add命令提交到缓冲区的文件会一并提交到仓库。
若是两个文件一块儿添加到缓冲区并提交那么返回操做会一块儿返回。

Git文件泄露

如今大量的开发人员都使用Git进行版本控制,对站点自动部署。
若是配置不当,可能会将.git文件夹直接部署到线上环境,这就引起了git泄露漏洞,攻击者能够直接从源码获取敏感配置信息。ubuntu

使用git init会自动建立.git隐藏目录,目录包括git所须要的全部信息。
在这里插入图片描述
在这里插入图片描述

.git目录:

  1. info:包含仓库的一些信息。
  2. logs:保存全部更新的引用记录
  3. COMMIT_EDITMSG:保存最新的commit message,Git系统不会用到这个文件,只是给用户一个参考
  4. HEAD文件:HEAD文件包含当前分支的引用。

Git文件夹讲解

commit过程:
建立文件跟踪,git会对其进行压缩而后以git本身的数据结构形式来存储。压缩的对象会有一个惟一的名字,即一个哈希值,这个值存放在object目录下。
提交git的主要两个步骤:
一、若是这个文件没有改变,git仅仅只把压缩文件的名字(就是哈希值)放入快照。
二、若是文件发生变化,git会压缩他,而后把压缩后的文件存入object目录,最后再把压缩文件的名字放入快照。

commit四部分:

  1. 工做目录快照的哈希。
  2. 提交的说明信息
  3. 提交者的信息
  4. 父提交的哈希值

下载工具:
githack:https://github.com/lijiejie/GitHack

使用方法:

python githack.py http://ip/.git

githack原理

  1. 解析.git/index文件,找到工程中全部的:(文件名,文件sha1)
  2. 去.git/objects/文件夹下下载对应的文件。
  3. zlib解压文件,按原始的目录结构写入源代码。

SVN

apache subversion的缩写,是一个开源的版本控制系统,服务多基于subversion。

SVN服务端环境搭建:

安装操做平台:docker pull ubuntu
启动操做平台:docker run -it -p 3690:3690 ubuntu bash
安装SVN:apt-get update
					apt-get install subversion
创立仓库文件夹:mkdir  /opt/svn
建立仓库文件:svnadmin create test
进入配置文件:cd test/conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
切换到/opt/svn文件夹,而后重启SVN服务:首先pkill svn关闭开启的svn服务,而后再使用svnserve -d -r 目录 重启

SVN客户端环境配置

安装操做平台:docker pull ubuntu
启动操做平台:docker run -it -p 80:80 ubuntu bash
安装SVN:apt-get update
					apt-get install subversion
					apt-get install apache2

使用:
为了模拟SVN文件泄露,首先须要让用户访问到.svn目录,因此svn目录须要创建在WEB目录。
SVN服务器链接:svn checkout svn://192.168.137.1/ --,若是不是默认端口号须要改为ip:端口,当链接成功后会在当前目录创建.svn目录。
在这里插入图片描述
适用于git相似,svn add **svn commit -m “***”

SVN commit过程:

  1. 在客户端./svn/pristine目录生成目录
  2. 目录名字为文件名sha1值前两位
  3. 目录内部存放的文件为放入仓库ASNI编码文件,文件名为提交文件名的sha1值。
  4. 同时还会在wc.db数据库NODES表下插入一条记录,其中包含原始文件名、sha1值,插入时间等。
  5. 最后提交数据到服务端。

攻击脚本:
代码:https://www.0dayhack.com/post-421.html
运行:python svn.py http://ip/目录/

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述