搜索引擎tips

0x01 Shadon

常用命令

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

查找位于合肥的 Apache 服务器:

apache city:"Hefei"

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

nginx country:"CN"

查找 GWS(Google Web Server) 服务器:

"Server: gws" hostname:"google"

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

huawei net:"61.191.146.0/24"

点击 Shodan 搜索栏右侧的 "Explore” 按钮,就会得到很多别人分享的搜索语法,你问我别人分享的语法有什么好玩的?那咱们就随便来看看吧:

咱们随便选取一个名为"NetSureveillance Web”的用户分享语法,从下面的描述信息我们基本就能得知这就是一个弱密码的漏洞,为了方便测试让我们把语法在增加一个国家的过滤信息,最终语法如下:

Server: uc-httpd 1.0.0 200 OK Country:"CN"

现在让我们随便选取一个页面进去输入,使用admin账号和空密码就能顺利进入了:)

其他功能

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

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

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

报表:每次查询完后,点击页面上的 "Create Report” 按钮,Shodan 就会帮我们生成一份精美的报表,这是天天要写文档兄弟的一大好帮手啊;

命令行下使用 Shodan

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
➜  ~ 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 # 返回查询结果数量
download Download search results **and** save them **in** a... # 下载查询结果到文件
honeyscore Check whether the IP **is** a honeypot **or not**. # 检查 IP 是否为蜜罐
host View all available information **for** an IP... # 显示一个 IP 所有可用的详细信息
info Shows general information about your account # 显示账户的一般信息
init Initialize the Shodan command-line # 初始化命令行
myip Print your external IP address # 输出用户当前公网IP
parse Extract information out **of** compressed JSON... # 解析提取压缩的JSON信息,即使用download下载的数据
scan Scan an IP/ netblock using Shodan. # 使用 Shodan 扫描一个IP或者网段
search Search the Shodan database # 查询 Shodan 数据库
stats Provide summary information about a search... # 提供搜索结果的概要信息
stream Stream data **in** real-time. # 实时显示流数据

常用示例

init

初始化命令行工具。

1
2
➜  ~ shodan init [API_Key]
Successfully initialized

count

返回查询的结果数量。

1
2
➜  ~ shodan init [API_Key]
Successfully initialized

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

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

search

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

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

  1. 代码中使用 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
9
try
\# 搜索 Shodan
results = api.search('apache')
\# 显示结果
print 'Results found: %s' % results['total']
for result in results['matches']:
print result['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数据

0x02 ZoomEye

2.1 指定搜索的组件以及版本

app:组件名称

ver:组件版本

例如:搜索 apache组件 版本2.4

1
app:apache ver:2.4

2.2 指定搜索的端口

port:端口号

例如:搜索开放了SSH端口的主机

1
port:22

一些服务器可能监听了非标准的端口。要按照更精确的协议进行检索,可以使用service进行过滤。

2.3 指定搜索的操作系统

OS:操作系统名称

例如:搜索Linux操作系统

1
OS:Linux

2.4 指定搜索的服务

service:服务名称

例如,搜素SSH服务

1
Service:SSH

2.5 指定搜索的地理位置范

country:国家名

city:城市名

例如:

country:China

1
city:Beijing

2.6 搜索指定的CIDR网段

CIDR:网段区域

例如:

1
CIDR:192.168.158.12/24

2.7 搜索指定的网站域名

Site:网站域名

例如:

1
site:www.baidu.com

2.8 搜索指定的主机名

Hostname:主机名

例如:

1
hostname:zwl.cuit.edu.cn

2.9 搜索指定的设备名

Device:设备名

例如:

1
device:router

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

Keyword:关键词

例如:

1
keyword:technology

综合演示

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

综合演示

0x03 Pocsuite

待体验

0x04 Google Hacking

  • site:cnblogs.com Wh0ale //在网站下查找关键字

  • intitle:login //查找标题是login的

  • allintitle:index of //查找所有标题带有index of的

  • allinurl:forcedownload.php?file= //查找url带有如下关键字的

  • inurl:/cgi-bin/MANGA/index.cgi

  • cache:stackoverflow.com //查找快照

  • filetype:pdf Kali Linux //查找文件格式pdf的

  • site:cnblogs.com filetype:pdf Linux 域名为cnblogs.com 且文件格式为pdf的

0x05 FOFA

5.1 HTML源代码检索查找IP

上文2.8中提到是基于Banner匹配进行查找的,这方面shodan和zoomeye等网站都可以实现,那么有没有可以搜索网页标题、内容的方法,这样,我就能找到哪些服务器上运行的网站是与我要找的一致,从而能找出真实的服务器IP。在圈子里混,朋友推荐一个新的IOT搜索引擎,跟前面提到的两个相似,叫fofa,WWW.FOFA.SO,其优点是支持HTML源代码检索

举例:找到www.5173.com的真实IP

使用ping命令,返回信息有"49k6959vz6ea10u8.alicloudsec.com (218.11.3.155)",这就是使用了CDN服务的信号,显然是阿里云。

1
ping http://www.5173.com/

正在 Ping 49k6959vz6ea10u8.alicloudsec.com [180.97.163.234] 具有 32 字节的数据:
来自 180.97.163.234 的回复: 字节=32 时间=78ms TTL=43
来自 180.97.163.234 的回复: 字节=32 时间=73ms TTL=43
来自 180.97.163.234 的回复: 字节=32 时间=16ms TTL=43
来自 180.97.163.234 的回复: 字节=32 时间=23ms TTL=43

访问www.5173.com,源代码内显示标题有很特别的内容『网络游戏交易平台|手游交易|装备交易|游戏币交易|帐号交易|点卡充值|代练服务-是国内最权威最安全的游戏交易平台-5173.com』,包含有根域名5173.com,这种title是非常特殊的,用来检索,就能找到WWW.5173.COM的真实IP

然后在fofa中将这个标题内容作为关键词搜索,使用语法『title="网络游戏交易平台|手游交易|装备交易|游戏币交易|帐号交易|点卡充值|代练服务-是国内最权威最安全的游戏交易平台-5173.com"』

在下面的截屏,包含了www.5173.com的真实IP:

最后,访问http://180.97.163.234,如果网站可以打开,内容与www.5173.com是一致的,那么这就是真实IP;如果网站不可以打开,有可能这个是CDN,也有可能是一个虚拟主机服务器。使用 ip=="180.97.163.234"

搜索这个IP上的全部服务和网站,显示全是5173.com结尾的域名,基本确认这是真实ip,且是5173.com的主要网站服务器。

5.2 根据网站信息查IP

寻找某电商的子域名,可以根据其证书,header信息,备案号,页面引用的特定文件等找到相关其子域名。对于一些有cdn的,也可以绕过cdn找到真实IP

5.3 找Burp Suite代理

点进去看下,发现代理记录,这个人访问qq,baidu,sohu的记录都有,还有内网地址,额!看到了他浏览小说的记录,而且能看到cookie!这个抓包工具安全人员用的比较多,详细分析下,没准还能捡个0day!

5.4 找目录遍历漏洞

5.5 找矿机

5.6 找被入侵网站

-------------本文结束感谢您的阅读-------------