草庐IT

渗透测试之信息收集(超完整版)

DayGas 2023-05-17 原文

目录

前言:

一、正面信息收集

1. 网站页面信息收集

2. 域名信息

(1)端口

(2)子域名

(3)C段旁注

(4)目录(敏感信息)

(5)URL请求

3.web组件

(1)操作系统

(2)数据库

(3)容器

(4)CMS

(5)web框架

(6)web组件识别

二、侧面信息收集

1. 站长之家

(1)whois查询

2. 网络空间搜索引擎

3.Google语法

4.WAF探测

5.偏门小技巧


前言:

        在渗透测试的过程中,信息收集是其中最重要的一部分,你收集到目标的信息越多,你的渗透切入点就越多,你对目标渗透的成功率也就越高。所以,有的大牛说:渗透测试的本质是信息收集。这里信息收集我分为两大类,第一大类是对目标网站的正面信息收集(组成网站的信息),第二大类是从网站的侧面来进行信息收集。 

一、正面信息收集

1. 网站页面信息收集

        我们在浏览目标网站的网页时,往往可以发现一些比较重要的信息。从网站的URL观察,有些URL会暴露网站使用的脚本语言。再往下观察网站是否有在线客服窗口,网站底部你可能在网站页面观察到的信息有:URL信息(1.例如使用的OA.xxxcom2.使用的脚本语言)、在线客服、技术支持、关于公司的联系方式(邮箱、电话号码、工作地点等)、备案号、营业执照、后台登录接口、友情链接、某些二维码等。

2. 域名信息

         在渗透测试过程中,一般在目标的主站很少有发现漏洞点的存在,这时候我们就要从从主站之外的接口进行渗透测试,这时我们可以从域名出发收集信息。

(1)端口

         一个网站可能会开放多个不同的端口,而我们可以通过同一网站的不同端口进行测试,扫描开放端口的方法有很多,这里我分为两种:第一种在线端口扫描,第二种利用工具扫描端口。比较常见的在线端口扫描网站有:在线端口扫描,IP/服务器端口在线扫描 - TooL.cc在线端口检测,端口扫描,端口开放检查-在线工具-postjson等;端口扫描工具有nmap,goby等。

(2)子域名

        目标的子域是一个重要的测试点,你收集到的可用的子域名越多,意味着你的机会也就越多,所以说要尽可能的收集目标的子域名。子域名的收集方法有很多,这里我分为两种:第一种在线子域名收集。第二种利用工具进行子域名收集。比较常见的在线子域名搜索(爆破)的网站有:在线子域名爆破-子成君提供在线子域名查询等;子域名扫描工具有oneforall、layer子域名挖掘机、SubDomainsBrute等。

(3)C段旁注

        对目标主机无计可施时,我们可以尝试一下从C段或者旁注入手。C段入侵是拿下同一C段下的服务器,也就是说是D段1-255中的一台服务器,然后直接从被端掉的服务器出发进行其他测试;旁注的意思就是从同台服务器上的其他网站入手,提权,然后把服务器拿下了,就自然把那个网站拿下了。两者的区别:C段:同网段不同服务器,旁注:同服务器不同站点。C段旁注扫描:同IP网站查询,C段查询,IP反查域名,C段旁注,旁注工具

(4)目录(敏感信息)

        目录扫描也是一个渗透测试的重要点,如果你能从目录中找到一些敏感信息,那么你的渗透过程就会轻松很多。例如扫描出后台,源码,robots.txt的敏感目录或者敏感信息。目录扫描我分为两种:一种时在线目录扫描,一种是利用工具扫描目录。

在线目录扫描可以使用Google语法然后利用我们平时用的搜索引擎(搜狗,百度,bing,Google等)进行搜索,例子:

任意文件下载:site:域名 filetype:zip|rar|zip|xml

敏感信息(目录):site:域名 index of、intitle:"Index of /admin"

未授权访问:inurl:php? intext:CHARACTER_SETS,COLLATIONS, ?intitle:phpmyadmin

后台:site:xxx.com inurl:login|admin|manage|member|admin_login|login_admin|system|login|user、

敏感信息泄露:

site:xxx.com intext:管理|后台|登录|用户名|密码|系统|账号|admin|login|managetem|password|username

sql注入:site:域名 inurl:?id=

扫描工具有:御剑,dirseach等。

(5)URL请求

        URL请求分为get与post,辨别的办法可以使用抓包(流量监控)软件或者插件。

3.web组件

        各种web组件组合构成网站。

(1)操作系统

        网站服务器有不同的操作系统:windows、Linux、mac os,这里需要知道的是windows对大小写不敏感,其他两个对大小写敏感就行了。

(2)数据库

        目前比较常用的数据库有:MySQL、SQL server、Oracle等。SQL server开放的默认端口:1433,MySQL开放的默认端口:3306、Oracle开放的默认端口:1521。

(3)容器

        目前比较常见的web容器有:IIS(iis解析漏洞),apache,tcmact,nginx,jboss等。

(4)CMS

        cms有很多,这里就列举一部分例子:dedeCMS、 帝国CMS等。

(5)web框架

        web框架有struts1、Struts2、Spring MVC等(框架漏洞)

(6)web组件识别

        web组件识别(web指纹识别)一般可以识别出以上的网站基础信息。web指纹识别我分为在线扫描与工具识别。在线扫描的网站有:潮汐指纹识别TideFinger 潮汐指纹 TideFinger 潮汐指纹、云悉指纹yunsee.cn-2.0、强大的网站信息扫描网网站基础信息获取 - ThreatScan - 免费的网站在线安全检测平台-TScan

web指纹识别工具:御剑、北极熊扫描器等;指纹识别插件有wappalyzer。

二、侧面信息收集

1. 站长之家

(1)whois查询

        得到目标URL之后,我们可以通过站长之家来进行whios查询这家公司的信息。例如:公司名称,注册人或者机构、联系方式:邮箱,手机号码,备案号,ip,域名,DNS,少量子域名等。

2. 网络空间搜索引擎

        常用的空间搜索引擎一般有:FOFA、shodan、zoomeye。其中FOFA一般搜索到的是一些网站的信息,收集到的偏软件类信息比较多;而shodan和zoomeye则是搜索网络在线设备信息,偏向于收集硬件的信息。具体使用规则需要自己去摸索。

3.Google语法

        Google语法是最强大的搜索手段之一,你可以收集到一些敏感页面、敏感目录、网站内可下载的文件、可能出现的sql注入点和文件上传点、未授权访问页面等。

4.WAF探测

        通过识别网站是否存在WAF以及网站存在什么样的WAF,根据自己的水平(能否绕过此类WAF)来决定还应不应该花时间耗在绕WAF上(不仅限于参加比赛)。

5.偏门小技巧

不常用但是有可能用的的方法。

  • 查看github平台上有无类似本网站的源码,敏感信息,登陆的账号密码等
  • 社工
  • 钓鱼
  • SSL证书查询


————————————————
版权声明:本文为CSDN博主「bk天气」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_49577923/article/details/120796950

有关渗透测试之信息收集(超完整版)的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  5. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  6. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  7. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  8. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  9. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  10. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

随机推荐