Shodan在渗透测试及漏洞挖掘中的一些用法
渗透测试中,第一阶段就是信息搜集,这一阶段完成的如何决定了你之后的进行是否顺利,是否更容易。而关于信息收集的文章网上也是有太多。今天我们来通过一些例子来讲解如何正确使用Shodan这一利器。
想要利用好这一利器,首先得知道他是什么,Shodan是一款网络空间搜索引擎,和我们常见的百度谷歌不同,他主要搜索的是存在于互联网中的设备,服务器、摄像头、工控设备、智能家居等,都是他的目标。Shodan不仅可以发现这些设备,并且可以识别出其版本,位置,端口,服务等一些信息,并且进行了一些相应分类。
Shodan分免费账户和会员账户,免费账户对一些标签的搜索和多标签关联搜索有限制,而会员的话就可以任意进行一些搜索,所以想要搜到自己想要的结果最好还是有一个会员比较方便,Shodan在每个黑色星期五的时候会进行打折(每年11月第四个周五),平时需要49美元的会员活动时只需要5美元,需要的小伙伴可以关注下。
一个系统的受攻击面越多,被入侵的风险也就越大,Shodan可以很好的帮你找到其他攻击面。下面开始正式来讲一下如何在平时的渗透测试中利用好Shodan,注意学习思考问题的方法,而不只是简单的搜索语句。
场景1:想搜索美国所有的ElasticSearch服务器
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。为什么要搜索他,因为他有多个漏洞,未授权访问、目录遍历、任意命令执行等,搜索wooyun镜像也可以看到有不少结果。

要实现这个场景,首先要了解一些关于ElasticSearch服务器的基本知识,这里可以直接百度。

通过百度我们可以了解到ElasticSearch的默认端口是9200,这里会用到一个基础语句"port",这时我们可以先在Shodan进行相应搜索,看会返回什么。在Shodan中输入”port:9200”来进行搜索,

可以看到返回,共搜索到215669个结果,重点学习的地方在左边这个分类统计,

我们想要的是美国的ElasticSearch服务器,可以看到左边的统计中已经对一些常用字段进行了分类统计,有国家、组织、操作系统及产品,这里已经看到了我们所需要的字段,只需要点击相应的标签,即可进行进一步的细化搜索。因为并不是所有的9200端口都是ElasticSearch服务,也有将默认9200端口修改了的。所以这里依次点击TOP PRODUCTS中的"Elastic"和TOP COUNTRIES中United States,并且删掉port:"9200",注意观察搜索框中的关键字变化:


到这里我们可以看到已经实现了我们的目的,找到了美国的ElasticSearch服务器,包括默认端口和非默认端口。当搜索结果细化到一定程度时,左边的统计也会有相应的变化,现在可以看到已经变成了对城市、组织、操作系统、和ElasticSearch版本的一个统计。至此我们已经学到了两个新的关键字:
“product” 对某一产品进行搜索
“country” 搜索某个国家的资产,
当我们需要多个词同时搜索时,只需要在每个关键字间加空格分割就行,当不需要某个词时,可以用”-”加上关键词来进行去除,比如不想要Amazon的ElasticSearch服务器,就可以”-org:amazon”,如何知道org这个关键词的?同样是左边的统计,当我们鼠标移动到Amazon时,可以看到他相应的链接,已经给出了关键词

上面是根据已有关键字可以搜到的内容(port)来进行搜索的一个例子,下面我们来看另一个场景。
场景2:搜索所有的搭建了Supervisor的服务器
Supervisor是一个用Python写的进程管理工具,可以很方便的用来启动、重启、关闭进程。我们为什么要搜索这个东西呢,当然是因为他有问题。今年9月份的时候Supervisor爆出了一个远程代码执行漏洞CVE-2017-11610,我们想要复现一下漏洞(滑稽)。按照上一个场景的经验,当我们想要通过端口来搜索Supervisor时,我们百度发现他并没有默认端口,所以就需要用的另一种更常用的方法。来看我是怎么找的:
首先在Shodan中搜索supervisor,看返回什么。

可以看到返回了1363条结果,但是根据右边的返回信息来看,好像有些并不是我们需要的东西,这时候就需要进一步细化搜索结果,来找一个能够精确定位的关键词。这里我们多打开一些服务器,来寻找我们需要的supervisor服务器,这里有一个是我们需要的:

打开后发现这个就是我们需要的Supervisor服务器,那么我们用什么来定位这类服务器呢,这里就要用到一些新的语法:
“http.title” 根据网站banner搜索
很明显我们可以看到supervisor服务器有个很明显的特征,就是他的title位置是”Supervisor Status”,那我们是不是可以用http.title:"Supervisor Status"来精确定位所有的supervisor服务器?来看返回结果:

可以看到返回了44个结果,而且右边的预览相应的也都只剩下下了title为Supervisor Status的服务器,至此我们已经大致找到了我们需要的结果,当然Shodan作为一款搜索引擎,也不一定就能够收录所有的设备,所以有一些遗漏也是正常的。
接下来讲一下我们白帽子最喜欢的东西,搜索一个公司相关的服务器。
首先我们都知道,一般的网站有自己icon,比如百度、阿里、腾讯等,而一般公司会对其所有网站的title中都加上这个icon,来增加统一性,也方便用户识别,如下如所示:

Shodan针对网站的icon也有自己的搜索关键词,可以搜索到所有带有统一icon的服务器,一般都会是公司自己的资产了,然后大家就可以对这些服务器进行端口扫描等进一步的漏洞挖掘。这里用到的关键字为:”http.favicon.hash”,hash后面为一串独有的数字,因为并不知道Shodan是如何给每个icon分配hash的,所以这里我来说一下我自己的方法。
首先要知道在Shodan结果中在哪里寻找这个标记,如下如所示,箭头位置就是这个网页的icon:

因为这个icon只能算是对公司资产的一种标识,所以有些网站可能并没有带有icon,但是有些常用手段收集的服务器可能会漏掉这些,所以这个方法还是有一定的用途,这里拿支付宝举例。
我们尝试性的输入一些与支付宝相关的内容来进行搜索,如Alipay,支付宝,www.alipay.com等,当我们搜索到www.alipay.com时,可以看到结果内已经有携带支付宝icon的网站了:

这个时候需要做的就是,点击这个icon图标,就像我们之前细化场景一中的搜索结果一样,然后将输入的www.alipay.com删掉,就可以得到所有携带该icon的网站了。

当然对于公司资产的收集,除了上面的方法,还有其他方法,这里再说一种。一般大型的公司都会购买一个或几个网段来使用,并且会进行等级,那么这里就可以用到我们刚才提到过的”org”语法来进行搜索,这里拿阿里巴巴进行举例。
直接在Shodan中搜索阿里巴巴,看返回什么:

主意我框起来的地方,这个位置显示的就是他的所属组织,那么根据我们上面讲的,这里我们点击Alibaba,然后将我们刚才输入的alibaba删掉,然后只看中国的服务器,再次搜索,看会得到什么。

这样就得到了所有阿里巴巴集团网段的服务器,但由于阿里业务巨大,再加上有阿里云业务,所以结果中并不都是阿里自家的东西,这里只是讲一个大致思路,具体怎么进一步利用,还需要自己思考。
当我们得到了我们需要的结果时,如果结果数量巨大,下一步需要考虑可能就是怎么导出结果了,这里说一下,Shodan是自带了数据导出功能的,但是需要付费,当注册成为会员时,会默认送20次,导出成功时会给你邮箱发一封邮件,但是我认为他比较坑,因为有时候导出一个数据可能需要好几天的时间。想到爬虫的同学可以尝试一下。。因为我试过,但是因为有反爬虫并没有成功,当发现为爬虫时,会限制你的搜索到最多20页,不管你是不是会员。我想到的解决办法是将每一页网页都保存在本地,然后在本地进行提取,还怕什么反爬虫。

最后在列举一些比较常用的搜索语句来供大家参考,什么时候用什么样的语句,完全取决于你怎么去想。
asn 区域自治编号
port 端口
org ip所属组织机构
os 操作系统类型
http.html 网页内容
html.title 网页标题
http.server http请求返回中server的类型
http.status http请求返回响应码的状态
city 城市
country 国家
product 所使用的软件或产品
vuln CVE漏洞编号,例如:vuln:CVE-2014-0723
net 搜索一个网段,例如:123.23.1.0/24
其实Shodan的关键词还有很多,经纬度、ssl信息、smb版本号、区号、返回码状态等等,只要发挥你的想象力,从结果中寻找结果,学会举一反三,就总能得到你想要的。:)
Shodan在渗透测试及漏洞挖掘中的一些用法的更多相关文章
- 关于文件格式Fuzzing测试与漏洞挖掘的学习
最近对于文件的漏洞挖掘比较感兴趣,所以在找资料来看.顺带记录笔记,把这些笔记贴在博客中分享一下.最近打算把精力放在mp3格式的漏洞发掘上,一来这是常见的文件格式格式也比较清晰.二来这也是学长推荐的入手 ...
- Springboot之Actuator的渗透测试和漏洞利用
背景概述 Spring的生态很优秀,而使用Spring Boot的开发者也比较多. Actuator是Spring Boot提供的对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动 ...
- shodan在渗透测试中的应用
场景1:想搜索美国所有的elasticsearch服务器 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.设计 ...
- pikachs 渗透测试2-XSS漏洞及利用
一.概述 XSS(跨站脚本)概述 Cross-Site Scripting 简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS.一般XS ...
- 渗透测试中期--漏洞复现--MS08_067
靶机:Win2k3 10.10.10.130 攻击机:BT5 10.10.10.128 一:nmap 查看WinK3是否开放端口3389 开放3389方法:我的电脑->属性-&g ...
- OWASP_ZAP集成渗透测试和漏洞工具
使用方法详见https://www.jianshu.com/p/78d7d4ad8054
- [思路笔记]WEB安全之漏洞挖掘
记录自己在实际渗透测试以及漏洞挖掘中会用到的思路和方法.不断完善,尽量以系统的方式展现程序化式的漏洞挖掘.由于各种原因,不便公开. 通用策略 1.信息搜集 : 数据挖掘.业务挖掘 数据: 邮箱.手机号 ...
- i春秋暑期训练营丨渗透测试工程师开课啦
每个人的夏天 都有专属的解锁方式 或来一次难忘的旅行 或躺在家里吹着空调吃西瓜 又或者是和小伙伴参加暑期训练营 i春秋暑期渗透测试工程师 报名通道已全部开启 为了保证课程质量,采取小班教学,每班仅限3 ...
- Android App渗透测试工具drozer,Qark,Androguard
一. drozer简介 drozer(以前称为Mercury)是一款Android安全测试框架. drozer允许您通过承担应用程序的角色并与Dalvik VM,其他应用程序的IPC端点和底层操作系统 ...
随机推荐
- Django内置的通用类视图
1.ListView 表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须). 属性: model: 指定模型 te ...
- SAP smartform 实现打印条形码
先在SE73里定义一个新的BARCODE,注意一定要用新的才可以,旧的是打印不出来的. 然后定义一个SMARTFORM的样式,把你定义的BARCODE放到字符样式里面去. 再做SMARTFORM就可以 ...
- Hadoop2.0 HA集群搭建步骤
上一次搭建的Hadoop是一个伪分布式的,这次我们做一个用于个人的Hadoop集群(希望对大家搭建集群有所帮助): 集群节点分配: Park01 Zookeeper NameNode (active) ...
- win10 uwp 拖动控件
我们会使用控件拖动,可以让我们做出好看的动画,那么我们如何移动控件,我将会告诉大家多个方法.其中第一个是最差的,最后的才是我希望大神你去用. Margin 移动 我们可以使用Margin移动,但这是w ...
- 【UML 建模】类图介绍
1.类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 2.类的关系有泛化(Generalization). ...
- C#基本功之泛型
一.没有泛型之前 在没有泛型之前,我们是怎么处理不同类型的相同操作的: 示例1 //下面是一个处理string类型的集合类型 public class MyStringList { string[] ...
- asp.net 第三方UI控件 Telerik KendoUI 之 TreeVIew 的用法记录
一.前台显示 备注:一次性取出所有节点 function loadTreeData() { $.ajax({ type: 'POST', url: '@(Html.UrlHref("Scri ...
- git合并代码解决冲突
一直测试的我,之前有接触过git命令,但是没有详细的去看这些命令的意思,只是背着在用,今天一时兴起,看到了廖雪峰的git方面的博客<a href="https://www.liaoxu ...
- Winsock网络编程笔记(4)----基本的理论知识
前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsoc ...
- defer与async
defer:该属性指定的脚本不会修改DOM,因此代码可以安全的延迟执行. 含defer属性的script标签可以放在任何位置,在页面解析到该script标签时,开始下载脚本,但不会执行脚本,直至DOM ...