时间轴:
主要内容
后端—开源—指纹识别—源码下载
后端—闭源—配置不当—源码泄露
后端—方向—资源码云—源码泄露(重点)
知识点
开源—CMS指纹识别源码获取方式
闭源—习惯&配置&特性等获取方式
闭源—托管资产平台资源搜索监控
后端—开源—指纹识别—源码下载
使用指纹识别平台或者工具识别cms信息,再通过cms信息找到官网下载源码(但是各大平台的cms信息识别一块似乎都被ban掉了~)
后端—闭源—配置不当—源码泄露
源码泄露原因
1、从源码本身特性入口
2、从管理员不好的习惯入口
3、从管理员不好的配置入口
4、从管理员不好的意识入口
5、从管理员资源信息搜集入口
源码泄露集合
composer.json
git源码泄露(常见)
svn源码泄露(常见)
hg源码泄露
网站备份压缩文件(常见)
WEB-INF/web.xml泄露
DS_Store文件泄露
SWP文件泄露
CVS泄露
Bzr泄露
GitHub源码泄露
Web源码泄露参考文章:常见的Web源码泄漏漏洞及其利用 - SecPulse.COM | 安全脉搏
案例演示:
对于开源源码(z-blog):
对于www.xiaodi8.com,可以使用第12天信息打点的cms指纹识别。(大多数指纹识别工具不能用了~)
在官网下载z-blog源码ZBlogPHP下载,Z-BlogPHP,小巧而强大的PHP博客程序与建站系统 (zblogcn.com),对源码进行分析。
根据下载的源码得知登录访问路径:
访问为:403时,有文件夹目录。(得知应该就是这套程序源码)
得知小迪8登录路径:
http://www.xiaodi8.com/zb_system/login.php
网站备份压缩文件
简介:管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。
常见的备份文件后缀:.rar、.zip、.7z、.txt、.old、.temp、.bak、.tar.gz
漏洞利用工具:御剑、dirsearch、7kbscan等
演示案例1:自己搭建的服务器
自己备份问题:(直接全选备份1.rar)
御剑扫描结果(不同软件结果不同)
例题演示2:CTFHub—技能树—Web—信息泄露—备份文件下载—网站源码
1、启动环境:
2、使用7kbscan扫描一下,得到一个zip文件:
3、解压以后得到3个文件,其中有个txt文件显示where is flag,真实的flag可能需要用网页打开,之后得到flag提交即可:
git源码泄露
简介:Git是一个开源的分布式版本控制系统,在执行git init
初始化目录的时候,会在当前目录下自动创建一个.git
目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git
这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
1.最简单的测试方法:在域名后面加.git。
2.使用Githack-master进行测试。
IDEA案例:
使用IDEA搭建时会发生如.idea这种自动打开操作过的文件等
如:(以前打开过web.xml,就会在上面显示,.git同样的道理)
漏洞利用工具:GitHack
github项目地址:GitHub - lijiejie/GitHack: A `.git` folder disclosure exploit
用法示例参考:(在GitHack-master路径下执行cmd)
python GitHack.py http://www.openssl.org/.git/
例题演示:CTFHub—技能树—Web—信息泄露—Git泄露—Index
1、启动环境:
2、可以先用dirsearch扫描
disearch使用方法:
dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。
-u:使用 -u 参数指定要扫描的目标网址。
-e *:使用 -e 参数指定要扫描的文件扩展名。这里使用 * 表示扫描所有的文件扩展名。也可以指定特定的文件扩展名,例如 -e php,txt,以限制扫描的文件类型。
-i 200:使用 -i 参数指定要忽略的状态码。在这种情况下,参数值为 200,表示当响应的状态码为 200(成功)时,不显示输出结果。这通常用于隐藏有效的页面。
-i 状态码:只显示该状态码。
-x 状态码:不显示该状态码。
example:
python dirsearch.py -u http://challenge-68b58195f060d444.sandbox.ctfhub.com:10800/ -e* -i 200
得到:
在知道文件为.git泄露后,使用Githack扫描:
python GitHack.py http://challenge-68b58195f060d444.sandbox.ctfhub.com:10800/.git/
得到一个名为challenge-68b58195f060d444.sandbox.ctfhub.com_10800的文件夹,打开文件夹,看到一个txt,txt里面的内容就是flag:
修复建议:删除.git目录或者修改中间件配置进行对.git隐藏文件夹的访问。
svn源码泄露
简介:SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。
利用文件:.svn/entries,获取服务器源码
漏洞利用工具:SvnHack(要用python2运行)
对于真实网站:
如果不是python2运行会出现以下错误:
如果默认执行的不是python2,而是其他版本,需要把python2的路径补全(可以将文件路径拖上去进行执行),如下图:
运行代码:
列取目录(根目录):
F:\python2.7\python.exe SvnHack.py -u http://x.x.x.x/.svn/entries
列取目录(指定目录):
F:\python2.7\python.exe SvnHack.py -u http://x.x.x.x/.svn/entries -d scripts
读源码(指定文件):
F:\python2.7\python.exe SvnHack.py -u http://x.x.x.x/.svn/entries -d scripts -r upd.js
需要下载的话使用代码:
F:\python2.7\python.exe SvnHack.py -u http://x.x.x.x/.svn/entries —download
经过测试Svnhack只适用于网页上的真实网站(trafficbonus)爬取,不太适合靶场没有过多源码的网页。(得到的php可能被zend加密)
对于靶场:
可以使用Github脚本下载:svnExploit:
pip install -r requirements.txt
检测SVN源代码泄露
python SvnExploit.py -u http://192.168.27.128/.svn
下载源代码
python SvnExploit.py -u http://192.168.27.128/.svn --dump
以下为墨者svn漏洞题目:(https://mozhe.cn/bug/detail/116)
修复建议:
1、删除web目录中所有.svn隐藏文件夹,开发人员在使用SVN时,严格使用导出功能,禁止直接复制代码;
2、服务器软件(Nginx、apache、tomcat、IIS等)设置目录权限,禁止访问.svn
目录;
3、不要使用svn checkout
和svn up
更新服务器上的代码,使用svn export
(导出)功能代替;
参考文章:
Web安全-SVN信息泄露漏洞分析_svn漏洞-CSDN博客
DS_Store文件泄露(mac开发,只展示文件目录)
简介:.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。
漏洞利用工具:ds_store_exp
github项目地址:https://github.com/lijiejie/ds_store_exp
用法示例:
python ds_store_exp.py http://hd.zj.qq.com/themes/galaxyw/.DS_Store
首次使用需要安装模块:
pip install ds_store requests
例题演示:CTFHub—技能树—Web—信息泄露—备份文件下载—.DS_Store
1、启动环境:
2、使用ds_store_exp工具进行扫描,得到一个txt文件:
3、访问该txt路径,直接得出flag,提交即可:
composer.json泄露(只有php网站有):
https://english.cmdesign.com.cn/composer.json(泄露一些关键信息)
后端—方向—资源码云—源码泄露
解决1:识别出大致信息却无下载资源
可能出现的情况:知道是什么程序,但是官方不更新、官网关闭或者使用的人极少
以小迪8为例:
network得到了jquery-2.24.min.js和zblogphp.js(放入github中搜索)
jquery.js(内容太多太繁杂):
z-blog(内容少量):
用zblogphp与官网比对,在比对一致后确定源码(可以尝试对着访问几个路径试试)。
同理e-cology:(注意访问的域名要正确别访问错了)
解决2:未识别出信息使用码云资源获取
涉及网站:
解决3:其他行业开发使用对口资源站获取(黑灰产业源码)
涉及网站:
聚离APP:
![](https://i-blog.csdnimg.cn/direct/e2407a90f02a462bb3c41e59706a023d.png)
使用Sublime在源码中搜索关键信息:
![](https://i-blog.csdnimg.cn/direct/263f3fb5f4a94304bef45ab324995e9b.png)
GitHub资源搜索方法
in:name test | 仓库标题搜索含有关键字 |
in:description test | 仓库描述搜索含有关键字 |
in:readme test | Readme文件搜索含有关键字 |
stars:>3000 test | stars数量大于3000的搜索关键字 |
stars:1000..3000 test | stars数量大于1000小于3000的搜索关键字 |
forks:>1000 test | forks数量大于1000的搜索关键字 |
forks:1000..3000 test | forks数量大于1000小于3000的搜索关键字 |
size:>=5000 test | 指定仓库大于5000k(5M)的搜索关键字 |
pushed:>2019-02-12 test | 发布时间大于2019-02-12的搜索关键字 |
created:>2019-02-12 test | 创建时间大于2019-02-12的搜索关键字 |
user:test | 用户名搜索 |
license:apache-2.0 test | 明确仓库的license搜索关键字 |
language:java test | 在java语言的代码中搜索关键字 |
user:test in:name test | 组合搜索,用户名test的标题含有test的 |
关键字配合Google搜索方法
site:Github.com smtp
site:Github.com smtp @qq.com
site:Github.com smtp @126.com
site:Github.com smtp @163.com
site:Github.com smtp @sina.com.cn
site:Github.com smtp password
site:Github.com String password smtp
参考文章
web源码泄露参考文章:常见的Web源码泄漏漏洞及其利用 - SecPulse.COM | 安全脉搏
dirsearch安装参照:dirsearch的安装(非常详细)和使用-CSDN博客
git指令参考:git查看与对比历史提交记录(git show; git log; git diff)_git show log-CSDN博客
本文章由番薯小羊卷和李豆豆喵共同创作。