一、web架构资产-平台指纹识别-源码
代码审计,从代码中挖掘漏洞,有代码才能做的,没有代码(黑盒),有代码(白盒)
没有源码只能做黑盒,有源码黑白盒都可做
有源码成功率高,能帮助你有很多的思路,一是从源码中找漏洞,二是根据源码的架构体系对黑盒测试也有很大帮助,源码获取能够加大安全测试挖洞的成功的可能性。
获取后端源码:PHP、JAVA
获取前端源码:VUE、JS、移动程序APP
前端语言就是获取更多的JS,从JS里边获取更多的点
开源:网上可以直接找到并下载
闭源:网上不能找到/不容易下载/完全找不到仅内部使用
1、开源-指纹识别-插件
关注CMS信息:Zblog 中间件:Apache 语言:PHP
百度搜索:Zblog有开源的就能下载源码
根据源码的目录结构访问网站,看看是不是网站对应的源码
源码目录如下:
访问www.xiaodi8.com/zb_system,返回的状态码是403,表示文件夹存在
和源码是可以对应上的,基本可以确定这套源码就是程序的源码
信息收集好之后就对源码进行漏洞挖掘,或者根据源码存在的安全问题对着去访问去操作
以上就是获取源码的最直接的一种方式,就是通过指纹平台识别出CMS信息,然后到官网下载源码,下载下来对比一下看是不是网站的源码。
2、闭源-CMS信息是No Found
网站源码文件泄漏常见的几种方式:管理员开发习惯或者管理不到导致源码的泄漏
开发者在使用开发工具或者开发系统里面的一些特性,这个特性里面就会有项目源码的一些描述或结构架构这种信息,通过这些信息就能回复项目源码。
信息搜集之源码泄漏 - 知乎 (zhihu.com)
2.1 网站备份文件泄露
网站备份文件放在网站目录,容易被御剑等网站目录扫描工具扫到
2.2 git源码泄露
Git是一个开源的分布式版本控制系统,在执行git init
初始化目录的时候,会在当前目录下自动创建一个.git
目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git
这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
如何判断网站有没有.git目录呢?
网站地址后面加上.git进行访问,如果有就有,没有就是没有
相关案例演示:
访问./git目录返回403错误,表示文件夹存在
如果访问一个不存在的目录就返回的是404错误
所以就可以利用git泄漏对应的工具GitHack来进行分析
python GitHack.py http://121.36.49.234/.git
工具显示结果及网站对应目录对比:
可以看一下里面有没有敏感的配置信息或者接口信息等等
2.3 SVN源码泄露
SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。
如何判断有没有SVN源码泄漏呢?
在网站地址后面加上/.svn/,如果有就是有,没有就是没有
相关案例演示:
这个文件就是它的利用文件
工具SvnHack-master(python2环境)
python.exe SvnHack.py -u https://traffichonus.com/.svn/entries
使用工具后会展示一些文件:
加上参数--doewnload就可以下载这些文件
python.exe SvnHack.py -u https://traffichonus.com/.svn/entries --download
下载之后我们关注以下工具目录,可以看到目标网址的目录,我们可以打开下载的内容和网站对应一下,看看网站目录是否是这个结果目录。
看下对应的文件或目录是否存在
不是说你访问这个文件就一定会触发,是和路由有关的,如果你学过Java的路由的话,就知道不是本地文件在这里,访问这个目录就一定能访问到这个文件的。
源码加密: 比较常见的PHP程序加密是zend加密,你可以尝试zend加密去解密
2.4 DS_Store文件泄漏
.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。
访问这个地址有DS_Store的一些信息
复制这个DS_Store信息到网址处会下载下来
我把路径记录下来利用DS_Store的利用工具直接去
python ds_store_exp.py https://43.225.92.100:4700/6vip/.DS_Store
它这里有个错误连接,因为这个网站是https的,这个代码可能要修改下,所以换个站点进行测试
换个站点进行测试:
这个也是https的,是域名的https的
会在工具目录下生成结果,得到的是目录架构,里面没有源码文件
2.5 开发的自带文件,便于开发的composer.json
访问这个json文件回显了一些信息,包含地址以及一些接口信息
这其实是一个版权文件的介绍,会标出一些程序调用的一些版本,程序EDA的一些信息
3、码云资源搜索
[1]识别出大致信息确无法下载资源,收费或网上没有提供下载接口,
[2]识别不出来,利用管理员不好的习惯获取源码
[3]识别不到,但是可以通过码云资源:github、OSCHINA、gitee
[4]解决其他行业开发,如黑产,专人开发源码,互站网
程序员在码云资源平台有一些自己的个人网页、个人博客、个人空间,有时候它可能为了保证交流或者备份,或者各种各样的目的,导致他会把自己的源码传到码云资源平台上面,这个时候我们就能找这些人的出口,他们喜欢上这些网站,都是我们爱好的程序员,我就在网上搜一些关键字看能不能找到这个开发作者,如果在开发作者下边找到了目标源码那么就恭喜你
找国内外程序员搞开发的一些人员喜欢上的站,在这里面看能不能找到关于你的目标这个开发作者的信息或者说他开发的源码信息,我不知道对方使用什么程序但是我可以通过一些信息去搜
geogle和bing网站搜索棋牌赌博类源码、同城交友的源码
源码当先:交易所、提币的都是一些擦边的行业
这些源码地址很多都要靠自己去收集,因为他们也知道违法性,所以很多都是做一段时间就关一段时间的,因为它全都是一些灰色产业的一些源码。
案例演示:
3.1 识别出大致信息却无法下载资源,以www.xiaodi8.com为例
假使我不知道网站是什么源码,我们可以打开开发者工具,通过加载的一些文件去寻找,选取一些比较有代表的文件,这个选取非常重要,一般选取的文件是一些脚本文件或者JS文件,你看这个图片文件那我就不选取,因为图片文件不是固定存在的,它是可以后期上传的。
我们选择zblogphp.js而不选取jquery-2.24.min.js,了解JS开发的都知道这种是程序里面自带的,就是很多程序里面都有的 ,因为它是JS框架写的,所以它是系统程序源码自带的,比如我再github上面去搜jquery-2.24.min.js,代码里有的有17K,这你要排查到猴年马月啊。
我们要搜这种冷门的,我搜这个名字或者搜这个完整路径也可以,就是我不去官网找,我在码云资源这里去找看有没有谁遗留的程序源码
然后我们找到这个Zblog.php
在github或者gitee或者OSchina上面去搜一个冷门的特有文件,从这个特有文件里面有和它这个相关的我点进去,点进去这里就有它的源码下载地址,从这里就可以把它下载下来,我为了验证我的猜想从官方访问一下,官方也是这个下载地址就说明我找对了。
3.2 真实案例:泛微的OA平台
假使我现在不知道它是泛微的,看网站的时候我们也要关注一下它的图标信息,明确的程序介绍和名字,这些都要关注到。
还是一样的,打开开发者工具去搜一些特有的冷门的文件,如果没有搜到就点一下网站上的其他元素,在其他目录去搜,慢慢的一点一点去搜,总有一些关键文件的
选取文件是有讲究的,不要选取什么图片文件那些不重要,因为图片文件可能是后期添加上去的,它不固定,可有可无;主要选的就是脚本文件】、JS文件再加上一些特有特征的就是这些特征非常明显的,不会说是一些常见命名的一些文件,这些才是你的关键。
这个文件能不能找呢?
最好不要找,从Request URL可以看到它后面没有加任何后缀,说明这个地方有可能不是一个文件,它只是一个参数
有的网站目录和你访问这个URL它不会对应,是因为有些程序像java程序有些路由在里面,你必须按照特定的路由去触发文件,不是按照这个目录关系,它可能换种方式才能访问到
你看我搜一下,啥都没搜到
搜的时候要注意要对应上比如网站也会加载一些其他地址,这是网站调用的第三方的接口
这里有个Jsp,这个Jsp文件名还比较特殊,第一它固定了文件名说明这个文件是的的确确存在的,第二他也是有点特殊性的,不像login这样的命名
我在github中搜一下,code下面有两项,两项都是一个项目的,只是在不同的文件夹出现
点进去看一下是不是呢?点开看这个它的架构,我们需要确定是不是这个网站的源码,首先它是JSP的,符合它JSP的结构目录,然后呢?
对应网站在这个源码架构中找触发文件的这个路径
先访问个错误的,显示404
然后访问正确的,是有数据回显的,多试几个
这并不是说这个源码是这个人开发的,也可能是这个人也用到了这个源码程序所以流传了出来,这个要搞清楚。
3.3 码云资源搜索哪些信息
邮箱、注释信息、各种各样的都有
我使用开发工具打开一个源码目录,在里面搜一下qq.com
这些都是程序员在写程序的时候有时会引用到一些别人写的文件,有些作者它会留自己的联系方式,它作者的信息等等,那么你通过网站扫描的时候,比如我通过网站爬行,比如burpsuit、AWVS它们在爬这个网站的时候,它会把这个带有个人信息的邮箱什么的都爬到,你也可以把这种信息当做一种搜索,在码云资源github或gitee或OSChina去搜索
搜到的都是一些zblog,我访问的网站也是zblog的,说明网站对应上了其实就是基于源码特性的一些关键字、关键文件进行搜索,关键文件是我用抓包抓出来的,关键字是通过后期讲到的一些安全工具对网站进行扫描的时候,它会给到一些网站泄漏的一些邮箱等信息,然后在github可以找
3.4 其他行业
网站找源码:互站网搜交友的,点进去看看界面设置框架结构是否和目标相似
找不到的话就用其他方法:扫它的目录,查它的特定文件,看它的行业,如果是擦边球的这种行业就在相关网站去搜,看发布过哪些源码,和你的行业对应看能不能找到和目标相关的,但是这种只能找到小中型的黑色产业。小中型的没钱却又想搞这种业务,又没有这种技术,所以就在网上买这种比人写好的,大型的专人团队单独研发的。