搜索引擎

0x00 Shodon

Shodon可以进行全球的设备搜索,物联天下,shodan第一。

常用命令

搜索语法:

  • hostname: 搜索指定的主机或域名,例如,hostname:”google”
  • port: 搜索指定的端口或服务,例如,port:”21”
  • country: 搜索指定的国家,例如,country:”CN”
  • city: 搜索指定的城市,例如,city:”Zhengzhou”
  • org: 搜索指定的组织或公司,例如,org:”baidu”
  • isp: 搜索指定的ISP供应商,例如,isp:”China Telecom”
  • product: 搜索指定的操作系统/软件/平台,例如,product:”Apache httpd”
  • version: 搜索指定的软件版本,例如,version:”1.6.2”
  • geo: 搜索指定的地理位置,参数为经纬度,例如,geo:”3.8639,117.2808”
  • before/after: 搜索指定收录时间前后的数据,格式为dd-mm-yy,例如,before:”11-11-11”
  • net: 搜索指定的IP地址或子网,例如,net:”210.45.36.0/24”

举个栗子:

查找位于郑州的Apache服务器:

1
apache city:"Zhengzhou"

查找位于国内的Nginx服务器:

1
nginx country:"CN"

查找指定网段的华为设备:

1
huawei net:"61.191.146.0/24"

Explore
点击 Shodan 搜索栏右侧的 “Explore” 按钮,就会得到很多别人分享的搜索语法

我们可以在别人搜索的基础上进行修改。

其他
Shodan 不仅可以查找网络设备,它还具有其他相当不错的功能。

Exploits: 每次查询完后,点击页面上的 “Exploits” 按钮,Shodan 就会帮我们查找针对不同平台、不同类型可利用的 exploits。当然也可以通过直接访问网址来自行搜索:https://exploits.shodan.io/welcome

地图: 每次查询完后,点击页面上的 “Maps” 按钮,Shodan 会将查询结果可视化的展示在地图当中

报表: 每次查询完后,点击页面上的 “Create Report” 按钮,Shodan 就会帮我们生成一份精美的报表。

命令行下使用Shodon

Shodan 是由官方提供的 Python 库的,项目位于:https://github.com/achillean/shodan-python

安装

1
pip install shodan

或者

1
2
git clone https://github.com/achillean/shodan-python.git && cd shodan-python
python setup.py install

安装完成之后我们看一下帮助信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ shodan -h
Usage: shodan-script.py [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 different format.
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 a compressed JSON...
honeyscore Check whether the IP is a honeypot or not.
host View all available information for an IP address
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 JSON files.
radar Real-Time Map of some results as Shodan finds them.
scan Scan an IP/ netblock using Shodan.
search Search the Shodan database
stats Provide summary information about a search query
stream Stream data in real-time.
version Print version of this tool.

常用示例

init
初始化命令行工具

1
2
$ shodan init [API_Key]  btrs7DoaGz00wK5Me1fpKITKLGvuGtQM
Successfully initialized

count
返回查询结果的数量

1
$ shodan count ...(待补)

download
将搜索结果下载到一个文件中,文件中的每一行都是 JSON 格式存储的目标 banner 信息。默认情况下,该命令只会下载1000条结果,如果想下载更多结果需要增加 –limit 参数。

1
shodan download microsoft-data microsoft iis 6.0

parse
我们可以使用 parse 来解析之前下载数据,它可以帮助我们过滤出自己感兴趣的内容,也可以用来将下载的数据格式从 JSON 转换成 CSV 等等其他格式,当然更可以用作传递给其他处理脚本的管道。例如,我们想将上面下载的数据以CSV格式输出IP地址、端口号和组织名称:

1
shodan parse --fields ip_str,port,org --separator , microsoft-data.json.gz

host
查看指定主机的相关信息,如地理位置信息,开放端口,甚至是否存在某些漏洞等信息。

1
shodan host [IP]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ shodan host 189.201.128.250
189.201.128.250
Hostnames: ptr.reditmx.com
City: Mexico City
Country: Mexico
Organization: Metro Net, S.A.P.I. de C.V.
Updated: 2019-09-06T19:54:11.283180
Number of open ports: 2
Vulnerabilities: Heartbleed

Ports:
443/tcp
|-- SSL Versions: -SSLv2, -TLSv1.3, SSLv3, TLSv1, TLSv1.1, TLSv1.2
|-- Diffie-Hellman Parameters:
Bits: 1024
Generator: 2
Fingerprint: RFC2409/Oakley Group 2
8009/tcp FortiGate Endpoint Control httpd

search
直接将查询结果展示在命令行中,默认情况下只显示IP、端口号、主机名和HTTP数据。当然我们也可以通过使用 –fields 来自定义显示内容,例如,我们只显示IP、端口号、组织名称和主机名:

1
shodan search --fields ip_str,port,org,hostnames microsoft iis 6.0

脚本调用shodan库

安装shodan库,在使用shodan库之前需要初始化链接API,代码如下:

1
2
3
4
5
import shodan

SHODAN_API_KEY = "API_Key"

api = shodan.Shodan(SHODAN_API_KEY)

随后我们就可以搜索数据了,示例:

1
2
3
4
5
6
7
8
try:
results = api.search('apache')
# 显示结果
print("Results found: %s" % results['total'])
for results in results['ip_str']:
print(results['ip_str'])
except shodan.APIError, e:
print("Error: %s" % e)

这里 Shodan.search() 会返回类似如下格式的 JSON 数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
'total': 8669969,
'matches': [
{
'data': 'HTTP/1.0 200 OK\r\nDate: Mon, 08 Nov 2010 05:09:59 GMT\r\nSer...',
'hostnames': ['pl4t1n.de'],
'ip': 3579573318,
'ip_str': '89.110.147.239',
'os': 'FreeBSD 4.4',
'port': 80,
'timestamp': '2014-01-15T05:49:56.283713'
},
...
]
}

常用shodan库函数

  • shodan.Shodan(key) :初始化连接API
  • Shodan.count(query, facets=None):返回查询结果数量
  • Shodan.host(ip, history=False):返回一个IP的详细信息
  • Shodan.ports():返回Shodan可查询的端口号
  • Shodan.protocols():返回Shodan可查询的协议
  • Shodan.services():返回Shodan可查询的服务
  • Shodan.queries(page=1, sort=’timestamp’, order=’desc’):查询其他用户分享的查询规则
  • Shodan.scan(ips, force=False):使用Shodan进行扫描,ips可以为字符或字典类型
  • Shodan.search(query, page=1, limit=None, offset=None, facets=None, minify=True):查询Shodan数据

0x01 ZoomEye

Zoomeye众所周知国内比较比较好的网络空间搜索引擎,相比shodan更侧重于web层面,指纹识别、web容器一类的zoomeye当之无愧。
钟馗之眼

常用语法

  1. 搜索指定组件及版本

app: 组件版本
ver: 组件版本
例如,搜索Apache组件版本2.4

1
app:apache ver:2.4

2. 搜索指定端口

port: 端口号

例如,搜索开发了ssh端口的主机

1
port:22

3. 搜索指定操作系统

OS: 操作系统

例如,搜索Linux操作系统

1
OS:Linux

4. 搜索指定服务

service: 服务名称

例如,搜索ssh服务

1
service:ssh

5. 搜索指定地理位置

country: 国家
city: 城市

例如,搜索中国,郑州

1
country: China city:Zhengzhou

6. 搜索指定CIDR网段

CIDR: 网段

例如,搜索192.168.220.0/24

1
CTDR:192.168.220.0/24

7. 搜索指定网站域名

site: 网站域名

例如,搜索百度

1
site:www.baidu.com

8. 搜索指定主机名

hostname:jw.zut.edu.cn

例如,搜索jw.zut.edu.cn

1
hostname:jw.zut.edu.cn

9. 搜索指定设备名

device:设备名

例如,搜索路由器

1
device:router

10. 搜索具有特定首页关键词的主机

keyword:关键词

例如,搜索关键词security

1
keyword:security

举个栗子

搜索位于美国、主机系统为Linux、开启SSH服务的目标主机:

1
country:US OS:Linux service:ssh

0x02 FOFA

国内漏洞查询和资产收集比较好的一款搜索引擎,与其他搜索引擎都大同小异,功能差别不是太大。

常用语法

直接输入查询语句,将从标题、html内容、http头信息、url字段中搜索。

  • title=”abc” 从标题中搜索abc
  • header=”abc” 从http头中搜索abc
  • body=”abc” 从html正文中搜索abc
  • domain=”abc.com” 搜索根域名带有abc.com的网站
  • host=”.edu.cn” 从url中搜索.edu.cn,注意搜索要用host作为名称
  • port=”443” 查找对应端口443的资产
  • ip=”1.1.1.1” 从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称
  • country=”CN” 搜索指定国家(编码)的资产

注意: == 符号是完全匹配,加快搜索时间 && 之类的逻辑符都可以用,搜索语法类似Google!

更多详细内容查看: FOFA帮助文档

举个栗子

目录遍历

1
title="index of"

0x03 Google Hacking

常用语法

  • intext: 把网页中的正文内容中的某个字符作为搜索的条件
  • intitle: 把网页标题中的某个字符作为搜索的条件
  • cache: 搜索搜索引擎里关于某些内容的缓存,可能会在过期内容中发现有价值的信息
  • filetype: 指定一个格式类型的文件作为搜索对象
  • inurl: 搜索包含指定字符的url
  • site: 在指定的站点搜索相关内容
  • 引号 “” : 把关键字打上引号后把引号部分作为整体来搜索
  • or: 同时搜索两个或更多的关键字
  • link: 搜索某个网站的链接

典型用法

  1. 找后台地址
1
2
3
site:xxx.com intext:管理|后台|登录|用户名|密码|系统|账号
site:xxx.com inurl:login/admin/manage/manager/admin_login/system
site:xxx.com intitle:管理|后台|登录
  1. 找上传类漏洞地址
1
2
site:xxx.com inurl:file
site:xxx.com inurl:upload
  1. 找注入页面
1
site:xxx.com inurl:php?id=
  1. 找编辑器页面
1
site:xxx.com inurl:ewebeditor