信息收集

知识点:

1、打点-Web架构-语言&中间件&数据库&系统等
2、打点-Web源码-CMS开源&闭源售卖&自主研发等
3、打点-Web源码获取-泄露安全&资源监控&其他等
4、打点-Web域名-子域名&相似域名&反查域名&旁注等

CMS源码★★★

分类及概念

源码分类主要分为两大类: 开源代码和闭源代码

程序源码–获取有价值的源码类信息,追查出其他漏洞,弱口令等……
资源监控:GitHub监控,gitee监控等,防止源码泄露到GitHub等资源平台去。

CMS渗透安全思路:

通过已知的CMS查对应的漏洞库。
可以通过网站类型和应用区别和寻找CMS。
后期攻击非常的重要,针对源码进行测试和漏洞的挖掘。
通过插件获取CMS
通过源码泄露(备份文件,配置文件)获取CMS或者 未知的CMS/内部源码

黑盒测试和白盒测试

黑盒测试:没有源代码,对黑盒开放出来的功能进行测试
白盒测试:有源代码,对源代码进行代码审计并且挖漏洞。

CMS源码收集

获取途径

从第二点开始是针对CMS识别不到的情况。例如灰色产业的。

  1. 直接识别:
    1. 云悉指纹识别(点击跳转):需要申请的,识别不是完全的(非大公司淘宝等系列,大公司没CMS)
    2. GitHub CMS开源指纹识别库
  2. 备份性文件:
    1. 管理人员配置不当 => 产生备份文件
    2. 通过备份文件获取网站源码 => 识别到对应的CMS => 找对应CMS漏洞
    3. 网站敏感目录文件扫描,扫描其中的备份文件
    4. 例如:www.zip
  3. 代码仓库云平台
    1. 源码分享导致的源码泄露
    2. 需要使用各种各样的监控措施
    3. 敏感目录未删除导致的目录文件复原漏洞 => 恢复源码造成源码泄露
      1. .git:同步代码的一个隐藏目录,泄露时可能造成严重的网站源码泄露。目录存在时状态码为403
      2. .svn/entries: 也是一个同步代码的隐藏目录
      3. .DS_store: Mac环境的代码泄露
  4. composer.json - PHP特性
    1. php文件的配置文件泄露
    2. 通过它获取源码版权配置信息插件等。
    3. 配置性说明性文件。
  5. Web-INF/web.xml泄露
    1. javaweb的安全目录
    2. WEB-INF主要包含以下内容:
    3. 对应的一道CTF:BUUCTF-Easy Java
      1. 使用url/Download+POST传参的filename=Web-INF/web.xml
      2. 使用web.xml当中的信息,使用url/Download+POST传参filename=WEB-INF/classes/com/wm/ctf/FlagController.class下载class文件
      3. 最后,使用010查出flag的base64编码值,解码后得到flag:flag{1564e8ba-476b-4b95-bdf6-a7764208688e}
    4. 总体流程 :配置文件,源码结构下载文件漏洞,得到目标
    5. 鸡肋:需要配合其他漏洞一起使用。
      /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
      /WEB-INF/classes/:包含所有的 Servlet 类和其他类文件,类文件所在的目录结构与他们的包名称匹配。
      /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
      /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
      /WEB-INF/database.properties:数据库配置文件。

相关利用项目工具:

CMS识别:
备份:敏感目录文件扫描-7kbscan-WebPathBrute
CVS:https://github.com/kost/dvcs-ripper

GIT:https://github.com/lijiejie/GitHack
python GitHack.py http://www.openssl.org/.git/

SVN:https://github.com/callmefeifei/SvnHack
DS_Store:https://github.com/lijiejie/ds_store_exp

查询&搜索-浏览器关键字搜索语法

可以在这些码云平台搜索对应的开发者,说不定会找到他或他们团队的开发源码,也就间接的找到了网站源码

GITHUB资源搜索:
in:name test #仓库标题搜索含有关键字
in:desripton 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:Git4hub.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

CMS种类

闭源和开源

开源代码

免费开源直接使用。

开源代码 是指可以被 公开查看、使用、修改和分发 的计算机程序源代码。–> 网上可以找到的。
通常包括一个许可证来规定其使用条款。开源软件通常被认为是一种共同创造的成果,能够充分利用社区的智力和经验积累,具有更高的灵活性、可靠性和安全性,也能够促进创新和技术进步。常见的开源许可证有 GPL、MIT、Apache 等。

闭源代码

不开源,内部工具软件等,或者自主研发程序(大网站)。

闭源代码 是指 不能公开查看、使用、修改和分发 的计算机程序源代码,只能获取到二进制版本的程序,因此无法获得程序内部的工作原理和逻辑,难以进行二次开发和优化。

有闭源售卖和自主研发的。

闭源软件通常 需要支付授权费用 才能使用,在 商业应用 上较为 常见 。闭源代码又称为私有代码。

其他分类方式

除了开源和闭源之外,还有一些其他的源码分类:

共享源码:共享源码是指允许在特定条件下使用源代码的模式,通常要求回报共享者的收益和进一步的贡献。
对称源码:对称源码是指同一软件同时具有对于源码和二进制的授权,即允许用户自由地查看、复制、修改和分发源代码和二进制程序。
透明源码:透明源码是指所有软件的源代码都是公开的,没有任何形式的加密和保密措施。

黑X源码来源:

浏览器关键字搜索,例如直接搜索棋牌源码,护站网,约会源码等。
最好在必应和谷歌上去搜索,带有些词汇。或者网络空间搜索约会源码等。
源码有黑白,即:“黑有黑道,白有白道”

重要信息收集

收集信息点:

基础信息 系统信息 应用信息 防护信息 人员信息 其他信息等
基本搭建的组合信息 操作系统支持服务器 安装的应用信息 安全防护信息+阻碍测试的信息 社工类管理员的信息+人的信息泄露 企业查询等

对应技术点-概览-资产识别:

CMS识别,端口扫描,CDN绕过,源码获取,子域名查询,WAF识别,负载均衡识别等

系统笼统辨别点-架构类

CMD式

改index.php -> index.phP 假设排除中间件的元素,那么就是系统问题。Windows系统默认大小写不敏感,而Linux默认大小写敏感。这是在赌运气。

TTL值辨别点

TTL值离哪个近就是那个系统

各个系统的TTL值:

Linux:64 255
Windows NT/2000/XP: 128
Windows 98 : 32
Unix : 255

数据库默认端口号-架构类

数据库判定:由搭建组合或端口扫描进行判定。例如通过搭建的脚本语言php判断mysql为与其组合的数据库。

常见的数据库,默认端口号是多少:

一、关系型数据库

1、MySql数据库 ,默认端口是: 3306;
2、Oracle数据库 ,默认端口号为:1521;
3、Sql Server数据库 ,默认端口号为:1433;
4、DB2数据库, 默认端口号为:5000;
5、PostgreSQL数据库, 默认端口号为:5432;
6、国产的DM达梦数据库, 默认端口号为:5236。

二、NoSql数据库(非关系型数据库):

1.Redis数据库,默认端口号:6379;
2.Memcached数据库,默认端口号:11211 ;
3.MongoDB数据库,默认端口号:27017;

端口扫描,探针-主动,被动

分为主动式和被动式扫描。部分目标是禁止主动式扫描/探针的。防止主动式子影响业务流量。
主动式:流量从本地出发探针目标信息,发送大量的流量。有法律风险。
被动式:借助网上的接口进行查询,历史记录什么的。(推荐)相当于查询他人已经查过的结果。
工具:在线端口扫描工具或者nmap

端口扫描必须找到真实的IP地址进行扫描才有意义。扫CDN节点是没用的。

端口扫描和端口探测都是用来确定目标主机上哪些端口正在监听和开放的。

端口扫描是一种主动式的方法,它通过向目标主机发送各种不同的数据包,来寻找可以成功连接的端口。
具体而言,常见的端口扫描技术包括 SYN 扫描、UDP 扫描、FIN 扫描、NULL 扫描、XMAS 扫描等。
通过对响应包的分析,可以确定目标主机上哪些端口开放、哪些端口关闭、以及哪些端口被过滤。
端口扫描虽然能够快速、准确地检测目标主机的端口状况,但也容易被 IDS 和防火墙等安全设备检测到,从而对渗透测试造成影响。

端口探针(Port Scavenger)是一种被动式的方法,它通过监听网络上的数据包,来收集目标主机上的端口信息。
具体而言,端口探针会在本地机器启动一个服务程序,用于接收来自目标主机的 ICMP Echo、TCP SYN 和 UDP 数据包,
并通过分析收到的数据包,来确认目标主机上哪些端口正在监听和开放的。
相比于端口扫描,端口探针不需要主动向目标主机发送数据包,因此更为隐蔽和难以检测。
但是,端口探针对网络带宽的消耗较大,而且只能被动获取端口信息,不能主动确认目标主机上某个端口是否真正开放。

综上所述,端口扫描是一种主动式的方法,能够快速、准确地发现目标主机上的端口,但也容易被 IDS 和防火墙等安全设备检测到;端口探针是一种被动式的方法,相对较隐蔽,但只能被动获取端口信息。在实际渗透测试中,可以根据具体情况选择不同的方法,或者两种方法结合起来使用,以达到更好的效果。

多域名查询

域名旁注-URL欺诈

旁注有两种理解和解释:

解释1:主站防护过高,无法入手,从其旁站寻找突破口,也就是与主站相关的服务器上的其他站点。
解释2:自己注册与主站相似的站点,赌运气别人输错url,盗取个人信息。

域名与子域名

一般网站域名由三部分组成:三级域名.二级域名.顶级域名;或者:二级域名.顶级域名

xiaodi8.com => 由二级域名+顶级域名组成。
子域名可以自己扩展,形如 www.baidu.com。

相似域名

www.xiaodi8.com

变动资源名:www
变动xiaodi8 xiaodi89 xxx
变动com cn net org

查域名备案信息

=> 找个域名注册,查看域名是否被注册就知道域名是否被使用过了。
可能域名变动就是换一个对应的应用和网站.

对我们的帮助

资产瞬间多了很多,机会多了很多。
查企业备案信息,备案查询,查询对应信息的IP地址什么的。
棱角社区之信息收集