一、知识点
CMS 指纹识别源码获取方式
习惯&配置&特性等获取方式
托管资产平台资源搜索监控
二、详细点
源码泄漏原因:
从源码本身的特性入口
从管理员不好的习惯入口
从管理员不好的配置入口
从管理员不好的意识入口
从管理员资源信息搜集入口
源码泄漏集合:
composer.json
git 源码泄露
svn 源码泄露
hg 源码泄漏
网站备份压缩文件
WEB-INF/web.xml 泄露
DS_Store 文件泄露
SWP 文件泄露
CVS 泄露
Bzr 泄露
GitHub 源码泄漏
参考,常见的Web源码泄漏漏洞及其利用:https://www.secpulse.com/archives/124398.html
三、演示案例
【例1】CMS 识别:直接识别 / 云悉指纹识别平台
①先观察网站的特征信息,找到该网站是什么CMS搭建的,然后去下载源码
②用云悉平台识别CMS:https://www.yunsee.cn/
【例2】网站管理员习惯不好:将备份文件放在了可以通过域名访问的文件夹,导致源码泄露
http://h0r2yc.com/ --->http://h0r2yc.com/1.zip
解释:
www.xiaodi8.com
网站根目录:C:\wwwroot\www.xiaodi8.com
网站根目录下的文件可以通过域名直接访问到:(通过扫描工具扫描-7kbscan-WebPathBrute)
C:\wwwroot\www.xiaodi8.com\backup.rar、backup.zip等
PS:如果将备份文件放在上一级目录,就不能直接访问到,更安全:
C:\wwwroot\www.rar
【例3】配置不当-GIT 泄漏-某程序员博客源码泄漏
常见的Web源码泄漏漏洞及其利用:https://www.secpulse.com/archives/124398.html
Git是一个开源的分布式版本控制系统,在执行git init
初始化目录的时候,会在当前目录下自动创建一个.git
目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git
这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
http://121.36.49.234/
①访问http://121.36.49.234/.git/ ,进入一个403页面,说明是存在文件夹的
②用漏洞利用工具获取:GitHack
下载:https://github.com/lijiejie/GitHack(安装需要python2环境)
用法示例:GitHack.py http://www.openssl.org/.git/
【例4】SVN源码泄露
原理与Git源码泄露的原理相同。判断方式:在域名后面直接加.svn/entries
。如果存在,就利用SvnHack
获取源码文件
工具下载:https://github.com/callmefeifei/SvnHack
用法示例:SvnHack.py http://www.traficbonus/.svn/entries
【例5】:配置不当-DS_Store泄露-某开发Mac源码泄露
.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。
访问:http://zhuchao.yslts.com/.DS_Store,浏览器会自动下载DS_Store文件
漏洞利用工具:
github项目地址:https://github.com/lijiejie/ds_store_exp
用法示例:
ds_store_exp.py http://zhuchao.yslts.com/.DS_Store
【例6】:composer.json泄露-利用PHP特性
composer.json
相当于一个php的配置文件。
使用方法:直接在域名后面加/composer.json
,可能获取到网站使用的CMS和其他版本信息。
比如,访问:http://english.cmdesign.com.cn/composer.json,获取到其CMS等信息
【例7】WEB-INF/web.xml泄露——Java特性
WEB-INF
是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF
主要包含一下文件或目录:
WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.
WEB-INF/database.properties : 数据库配置文件
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)
CTF赛题:easy_java - JS颜文字
https://buuoj.cn/challenges,搜索easy_java ,修改下载filename=help.docx为filename=WEB-INF/web.xml,得到源码结构,
推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码。
【例8】资源监控 - GITHUB泄露 - 语法搜索&关键字搜索&社工
github.com
GITHUB资源搜索:
in:name test #仓库标题搜索含有关键字
in:descripton 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 的
关键字配合谷歌搜索:
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