第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

AffettoIris 2023-11-5 2,643 11/5

 

获取源码的八种方式(案例)

方式0 | 直接购买/下载

也就能欺负开源CMS和闭源售卖的CMS了。

方式1 - 直接获取 By 指纹识别如云悉指纹识别平台

在网络安全领域,识别CMS技术也被称为指纹识别,是因为类似于指纹可以唯一标识一个人一样,不同的CMS技术也具有独特的特征,可以用来唯一标识一个网站所使用的CMS技术,例如WordPress、Joomla、Drupal等,它们在代码结构、文件命名、URL结构、数据库表结构等方面都存在一些特征。通过分析这些特征,可以识别出网站所使用的CMS技术。像qzdy的cms,你总能在class名、id名看到“qzdy”字符串。

首选直接获取,因为一键式傻瓜操作。包括:

  • 肉眼看,如看网站logo、名字(如名字叫vulfocus一看/一搜就知道是基于靶场CMS之vulfocus的),看底部有没有类似Theme qzdy的提示

  • 如上上述信息都被站长有意删掉了导致看不出来。就用CMS识别网站/工具 | 指纹识别网站如云悉(但是它注册渗透人员要提交三个CMS识别规则)。百度、淘宝这种自主研发的就别指纹识别了,不是CMS,没有识别指纹的说法。识别出CMS后两件事:1. 搜该CMS漏洞;2.代码审计、部署在本地去渗透测试。但是不是一定能识别出CMS,有些小CMS还不流行,就不被互联网所知,也可能是网上没有可下载的资源(不开源不售卖,自己和朋友用) / 内部售卖程序。

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

方法2 - 基于站长不好的备份文件的习惯 | 某黑阔博客源码泄漏

黑客柠檬的Blog - www.h0r2yc.com/被老师用扫描工具如7kbscan扫描到有个www.h0r2yc.com/1.zip文件,一看,还是源码备份文件。

站长备份源码的两种方式:

  • 对源码目录右键备份。这种方式较为安全,备份文件不在域名绑定的目录下。但就怕站长的IP绑定目录 > 域名绑定的目录,会被黑客用IP扫描到backup文件。

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

  • 在网站根目录全选文件后右键备份。柠檬的Blog就是这种方式,也就是标题所指不好的习惯。

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

方法3 - 基于GIT 泄漏 | 某博客源码的泄漏

代码仓库包括但不限于github、gitee、gitlab。 Git就不介绍了,git init初始化项目目录后,会留下.git目录,发布代码的时候,如果没有把gt、这个目录删除,就直接发布到了服务器上,攻击者就可以通过它和GitHack工具来恢复源代码。

  • 第一步 - POC:判断.git文件夹存在且能访问到,403是我们希望的状态码,404则换下一个攻击方法。

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

  • 若403,去攻击吧。

防护方法:

  • 不要把.git文件夹部署到云服务器上。

  • 若一定要部署在云服务器上,使用技术手段限制权限,让别人访问该目录为404

方法4 - 基于SVN泄漏 | 某国外小伙子源码泄漏

SVN是一个开放源代码的版本控制系统(git同行)。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用导出功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。

工具是SvnHack.py,官网,用python2开发的工具。命令为python SvnHack.py -u https://ink0.cn/.svn/entries --download

使用前请访问http://ink0.cn/.svn/entries,注意事项如404不行,403或200状态码可以,和GitHack.py一样。

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

防护方法:

  • 不要把.svn/entries文件夹部署到云服务器上。

  • 若一定要部署在云服务器上,使用技术手段限制权限,让别人访问该目录为404

方法5 - 基于DS_Store 泄漏 | 某开发 Mac 源码泄漏

.DS_Store是Mac下Finder用来保存如何展示文件/文件夹的数据文件,每个文件夹下对应一个。如果将.DS Store.上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。

工具ds_store_exp.py,官网,用python2开发的工具,和GItHack一样。

  • 漏洞POC:访问https://ink0.cn/.DS_Store,若访问后出现下载.DS_Store文件:

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

    那么存在可利用的漏洞。

  • 安装脚本所需依赖pip install ds-store requests

  • python ds_store_exp.py https://ink0.cn/.DS_Store

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

防护方法:

  • 不要把.DS_Store文件部署到云服务器上。

  • 若一定要部署在云服务器上,使用技术手段限制权限,让别人访问该目录为404

其实还有很多类似GIT、SVN、DS_Store的工具,如hg、SWP、CVS、Bzr,不讲是因为技术过时了,现在见到的少。

方法6 - 基于PHP 项目特有的composer.json 泄漏 | 某直接搭建源码泄漏

本方法只适用于php网站!

Java有Maven, Node.js有npm, ROR有gem,都是包管理工具,一键式下载项目所需的依赖包。PHP在Composer之前,包管理的历史不堪回首。当时如果应用依赖于第三方库,PHPer需要拷贝这些库的源代码, 或者通过PEAR、PECL安装。如果第三方库又依赖于更多的第三方库,那么很快就会进入依赖的黑洞。直到Composer出现,PHPer们看到了属于PHP的包管理的曙光。

很多php项目都会用到composer.json配置文件且放置在项目根目录下(但不是所以php项目都会这样做,我项目里就没有composer.json):

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

基于此原理,我们访问https://www.ink0.cn/composer.json,例如下图示例:

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

得到需要资产信息:基于ThinkCMF框架、Apache2.0、"email":"zxxjjforever@163.c0m"、项目用到的依赖及其版本号。有时甚至能获取到CMS名称。

方法7 - 基于WEB-INF泄露漏洞 | 一道CTF题目

此漏洞实际中太鸡肋,可以不学。

就是JAVA项目有个核心配置文件夹WEB-INF,一般是不可见的,如果可见,就是WEB-INF泄露漏洞,此漏洞仅适用于java项目。

RoarCTF 2019 Easy Java的一道题目。这个漏洞一般在正常情况下是胜算不大的,甚至可以直接忽略利用这个漏洞的可能,因为就算你能得到目标站点的WEB-INF文件夹,你也下载不到源码,除非额外提供你下载漏洞,比如这道CTF题

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等)
  1. 打开题目所给靶场环境:

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

  2. (我们先找下载漏洞),点击"help",并对此过程用burp抓包,得到路径http://1cad3686-d16a-410a-83a4-eac778514139.node4.buuoj.cn:81/Download,POST参数为filename=help.docx,发送该数据包会从站点下载help.docx,所以用HackBar发包,不要用burp发包。

  3. 下载漏洞POC:已知他是JAVA站点。

    把POST参数改为filename=WEB-INF/web.xml,用HackBar发包发现下载了web.xml文件,打开此文件:

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

  4. 我们现在的思路是找到 class 文件的路径,然后基于下载漏洞下载 class 文件,再通过反编译 class 文件,从而得到网站源码。

    注意到web.xml第13行说有个IndexController类,所在包路径为com.wm.ctf.IndexController,我们还知道WEB-INF/classes/ : 一般用来存放Java类文件(.class),所以IndexController.class的下载路径为class/com/wm/ctf/IndexController.class

  5. 下载漏洞EXP:

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

    然后浏览器会自动下载IndexController.class。同理获取其他.class文件,其中有一个文件名为FlagController.class,看名字就知道有flag,对它反编译 class 文件,从而得到网站源码。

  6. 赛后推测:下载网址是http://1cad3686-d16a-410a-83a4-eac778514139.node4.buuoj.cn:81/Download,如下是我还原出的目录结构:

    第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

  7. 为什么只有WEB-INF泄露漏洞还不够EXP?:你有WEB-INF泄露漏洞说明你能获取到WEB-INF文件夹,但是其下文件如WEB-INF/class/com/wm/ctf/IndexController.classWEB-INF/web.xml一般会被限制访问权限,即404,不给你下载。

  8. 为什么说WEB-INF泄露漏洞很鸡肋?:你都有下载漏洞了,那岂不是随便下载么,干嘛还迂回曲折的下载.class文件。

方法8 - 基于资源监控 | github / gitee泄漏

在渗透测试的信息收集阶段,可以去Github和码云上搜索与目标有关的信息,或者就有意想不到的收获。(有些开发人员将代码上传到代码库的时候,有可能连一些重要的配置信息也上传了)。标签:语法搜索、关键字搜索、社工

以下摘自互联网,均原创作者手打的,可能有单词拼写错误,自行注意。

Github的搜素语法:

  • in:name test #仓库标题搜索含有关键字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的

使用 Github 进行邮件配置信息收集

有些扫描工具扫描还会爆出网站里记录的邮箱地址,可能是CMS开发者 / 站长(管理员)的邮箱。

  • 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

  • ……

  • 我们也可以锁定域名搜索结合厂商域名 灵活运用例如搜百度的 site:Github.com smtp @baidu.com

使用Github进行数据库信息收集

  • site:Github.com sa password

  • site:Github.com root password

  • site:Github.com User ID=’sa’;Password

  • site:Github.com inurl:sql

使用Github进行 SVN 信息收集

  • site:Github.com svn

  • site:Github.com svn username

  • site:Github.com svn password

  • site:Github.com svn username password

使用Github进行综合信息收集

  • site:Github.com password

  • site:Github.com ftp ftppassword

  • site:Github.com 密码

  • site:Github.com 内部

实例 - 渊龙Sec团队

官网https://dh.aabyss.cn/#,注意到关键词aabyss,于是我们去github搜搜看

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

成功发现该团队的项目与邮箱:

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

实例 - 一位群成员

英文名Norah C.IV,

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

点进去发现新昵称RoziSec和博客地址:

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

百度/bing/谷歌下RoziSec,没有结果。访问下他的博客:

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

实例 - 小迪博客

浏览器F12打开抓包界面,在其中一个文件里发现注释(因为我们这里目的是社工、信息搜集,不是代码审计,所以重点关注.css、.js、.php、.html等文件,CMS开发者写代码时往往会留下水印注释),牵扯到一个新域名ww.yiwuku.com、站点、作者及其邮箱

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

接下来思路是基于信息打点发现的社工信息,配合github、gitee乃至搜索引擎搜集相关源码。搜下ww.yiwuku.com看看:

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

看到这差不多懂了,就是小迪的博客的CMS是尔今 erx@qq.com的人开发的,要知道虽然CMS源码到了我们站长手里,我们一般不会改动太多,甚至看都不看源码直接部署,我博客源码里至今还有一堆qzdy写的注释、他留的”水印“以及用qzdy命名的class、id。可能因为作者收费或不开源或内部自己人使用而在百度上搜不到CMS源码,但是用他源码的人,有人把项目分享到了GitHub。我们点击其中一个项目查看:

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

发现了该CMS源码,换句话说,我没从小迪、开发者尔今身上获取到源码,但我从其他使用该CMS的人的github项目里获取到了源码,这套源码几乎和小迪的源码相似90%。

使用自动化资源监控脚本

当你将长期关注一个目标时(常见于持续化监控 / 漏洞监控事件上),

  • 持续化监控:目前并未通过以上社工方法搜集到相关源码,但是现在没有不代表以后也没有,老师会讲一个自动化资源监控脚本.exe,将它运行在服务器上,24小时地跑,哪天网上泄露了源码资源,被脚本探测到了,就会告诉你。

  • 漏洞监控:监控一些最新漏洞分享社区,一旦有人爆了新漏洞,脚本就推送微信消息给你,让你快薅羊毛。2021/12/09,阿里云安全团队向apache报告了由log4j日志引起的远程代码执行,12月10日,当天白帽跟提前过大年似的,疯狂刷src,让部分src平台暂时停止收类似该漏洞。这些白帽为什么第一时间就能薅羊毛?不就是对最新漏洞分享社区进行了资源监控么。

- THE END -

AffettoIris

11月05日13:13

最后修改:2023年11月5日
0

共有 0 条评论