Exp6 信息搜集与漏洞扫描

信息搜集与漏洞扫描

0x1 被动信息搜集

被动信息搜集是指,使用一些公开的、间接的信息搜索技巧,在不接触到目标系统的情况下,挖掘目标信息。

如果掌握一定的技巧,甚至可以确定目标网络中使用的操作系统和网站服务器类型。

whois 查询

我曾经就读的小学是江苏省常州市延陵小学,目前官网域名为czylxx.net

我们可以对它进行whois查询

1-1

我们还可以获得注册人的部分信息(姓名,邮箱)

1-2

Netcraft查询

Netcraft这个网站可以查询到特定网站的IP地址,依然以czylxx.net为例

1-3

我们甚至可以看到主机信息——win server 2012操作系统,IIS/8.5的web服务器

针对这个IP——61.160.213.115进行一次whois查询

1-4

可以看到网站的服务器提供商。

IP2Loaction

如果目标在国内的话,我们更推荐纯真IP库(http://www.cz88.net)对目标的地理位置进行查询

1-5

nslookup

我们再使用nslookup获取czylxx.net的更多信息

1-6

我们同样可以看到邮件服务器的DNS记录指向hostmaster.xinnetdns.com

Google Hacking

google搜索引擎的功能非常强大,掌握高超的搜索技巧,通过它就能找到相当多的信息

使用VPN或代理服务器进入google,在czylxx.net域名下,搜索一些excel表格

1-7

google的搜索技巧非常多,但限于篇幅和个人兴趣,这里就不展开了

黑客的搜索引擎——fofa.so

FOFA是白帽汇推出的一款网络空间资产搜索引擎。它能够帮助用户迅速进行网络资产匹配、加快后续工作进程。例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。

我们通过它来看一下我们学校的服务器中间件版本信息

1-0-1

研究生部的网站用的是IIS/7.0

1-0-2

我们还发现了一个从未见过的域名 xgc.besti.edu.cn

1-0-3

但是在浏览器中打不开,应该是现在已经访问不了。

0x2 主动信息搜集

主动信息搜集需要与目标系统进行直接的交互,从而进行更深入的了解。

在我的实验环境中

  • 攻击机Kali,IP: 10.0.2.6
  • 靶机OWASP BWA,IP: 10.0.2.10

限于篇幅与个人兴趣,这部分我只介绍nmap的使用。

nmap基础

nmap的参数虽然很多,但常用的只有那么几个。

下面是nmap支持的部分扫描类型:

  • -sT TCP connect扫描,即“全连接扫描”,该扫描建立完整的三次握手过程
  • -sS TCP SYN扫描,即“半连接扫描”
  • -sP ping扫描,通过ICMP echo请求探测主机(原理同ping)
  • -sU UDP扫描

还有TCP FIN扫描,ACK扫描, 圣诞树扫描之类的,看帮助文档就行了。

nmap还提供了如下的扫描选项:

  • -A 完全扫描,提供所有能提供的信息
  • -O 操作系统探测
  • -sV 服务版本探测
  • -p 指定需要扫描的端口范围

nmap还可以和metasploit的数据库进行绑定,在MSF中使用db_nmap,它的参数和nmap完全一致,而且结果会保存到MSF的数据库中。

实战nmap端口扫描

先进行一次主机发现,使用-sn选项对探索子网内活跃的主机。

2-0

我们发现10.0.2.10这个IP地址的主机是活跃的

接着使用基本的端口扫描功能对OWASP靶机进行扫描,这里使用TCP SYN扫描

2-1

TCP SYN扫描比较隐秘,同时也是nmap的默认扫描方式。

接下来看看OWASP靶机的服务版本信息,直接使用-A选项

2-2

-A选项相当于同时使用 -sV选项-O选项

使用nmap脚本

nmap的扩展性也非常强,可以编写脚本来完成一些工作。

nmap本身自带了一些脚本,在Kali中,/usr/share/nmap/scripts目录下就是nmap所有的自带脚本。

2-3

使用--script=<script-name> 选项就可以使用这些脚本了。

这里使用ssh-brute脚本尝试暴力破解ssh口令

2-4

nmap自带了口令字典,可以进行扫描(但是默认的字典成功率并不高)

2-5

非常幸运,我们破解成功了!存在用户名user口令user的ssh登录账号,以及用户名root口令ubuntu的ssh用户。

这是nmap给出的username.lst,里面是用户名

2-7

nmap默认的password.lst口令字典

2-6

0x3 针对性扫描

接下来,我们使用metasploit对目标进行针对性扫描,获取特定操作系统、服务、软件以及配置缺陷等信息。

我们看一下linux metasploit目标提供的服务有那些:

3-0

然后我们对这些信息进行针对性扫描

数据库口令猜测

我们发现linux metasploit靶机中存在mysql数据库,postgresql数据库。

现在就使用metasploit对数据库进行口令猜测

mysql数据库口令破解——使用mysql_login模块

我偷了个懒,直接复制了nmap的口令字典和用户名字典,然后设置如下参数

set RHOSTS 10.0.2.11
set STOP_ON_SUCCESS true
set PASS_FILE passwords
set USER_FILE usernames
set USER_AS_PASS true
set THREADS 50

3-1

输入run,运行该辅助模块,得到如下结果

3-2

postgresql数据库的弱口令破解也是如此,这里就不演示了。

大家可以在weakpass.com网站上下载一些口令字典(虽然我还不知道好不好用)

FTP扫描

metasploit可以针对特定服务,对一个网段中的主机进行扫描,这里我们以FTP服务为例子。

设置参数如下:

use auxiliary/scanner/ftp/ftp_version
set RHOSTS 10.0.2.0/24
set THREAD 50

我们可以发现在10.0.2.0/24这个网段中,有两台主机开启了FTP服务

3-3

然后我们看一下这些FTP是否允许匿名用户登录,使用scanner/ftp/anonymous模块

3-4

很可惜,没有支持匿名登录的FTP服务器

3-5

我们也可以继续尝试弱口令破解,这里就不演示了。

对于其他服务器,比如SSH、Telnet、SMB等等,这里的思路都是类似的,先扫描发现这些服务,然后尝试弱口令破解。

0x4 漏洞扫描

接下来,我们使用漏洞扫描器进行漏洞扫描。使用漏洞扫描器会产生比较大的流量,如果要干坏事,就别用漏洞扫描器了,很容易被别人发现。

但如果是自己利用漏洞扫描器发现自己系统的漏洞和未打的补丁,漏洞扫描器就非常方便了。

依然以靶机linux metasploit(IP: 10.0.2.11)为目标,对它进行漏洞扫描

使用OpenVAS进行漏洞扫描

Kali上安装Openvas非常简单

root@kali:~# apt-get update
root@kali:~# apt-get dist-upgrade

root@kali:~# apt-get install openvas
root@kali:~# openvas-setup

安装完成后,会显示admin账号的口令,用它登录web应用后,改一个简单一点的口令就行。

记得执行openvas-check-setup命令判断是否安装成功

4-1

直接通过Task Wizard创建任务,输入要扫描的主机的IP即可

4-2

openvas扫描完毕后,我们来看一看生成的报告

4-3

有9个漏洞被openvas标记为“高危”的漏洞,我们来看一下

4-4

SSH的弱口令可以被暴力破解,mysql和postgresql都使用了默认的用户名口令

openvas甚至给出了SSH的一些用户名和口令(还差root:ubuntu这一个账户)

4-5

再看另一个标记为“high”的漏洞:

4-6

这应该是一个关于Apache的漏洞(CVE-2011-3192),容易通过这个漏洞来引发“拒绝服务”(DOS)攻击

在exploit-db中甚至有攻击代码

4-7

其实nmap中就有检测这个漏洞的脚本存在,我们看一下:

4-8

接着用nmap扫描一下:

4-9

我觉得OpenVAS就是用nmap发现了这个漏洞的。

至于解决办法吗……更新apache版本吧(笑)

也可以看一看https://wiki.apache.org/httpd/CVE-2011-3192给出的迁移办法吧,很详细。

基础问题解答

(1) 哪些组织负责DNS,IP的管理?

答:

顶级的管理者是ICANN,ICANN理事会是ICANN的核心权利机构,它设立三个支持组织,分别是:

  • 地址支持组织(ASO)负责IP地址系统的管理。
  • 域名支持组织(DNSO)负责互联网上的域名系统(DNS)的管理。
  • 协议支持组织(PSO)负责涉及Internet协议的唯一参数的分配。

5个地区性注册机构:

  • ARIN主要负责北美地区业务
  • RIPE主要负责欧洲地区业务
  • APNIC主要负责亚太地区业务
  • LACNIC主要负责拉丁美洲美洲业务
  • AfriNIC主要负责非洲地区业务。

(2) 什么是3R信息

答:

  • Registrant:注册人
  • Registrar:注册商
  • Registry:官方注册局

(3) 评价一下扫描结果的准确性

答:还是挺不错的,linux metasploit的漏洞信息在《Metasploit魔鬼训练营》里面都列出来了,OpenVAS给出的扫描结果虽然没有具体到CVE编号,但都给出存在漏洞的服务器信息,也就是都沾边了。

实验新得与体会

从这篇报告中,我希望大家可以看出我对nmap工具情有独钟

我第一次接触nmap是在冯雁老师的课上,当时用的是nmap的图形工具zenmap

说来也奇怪,我在冯雁老师的课上用的最多的工具其实是wireshark,但我到现在看到wireshark的数据包都一头雾水。

对nmap的使用我已经有自己的“三板斧”了,如果我能熟悉Lua语言的话,就可以编写自己的nmap脚本了。

不过我以后也没时间玩nmap了吧。

番外——Web应用的漏洞扫描

Web应用的攻防技术比较热门,和系统攻防相比,Web应用的攻防技术门槛比较低。

诸如pwn、逆向、二进制、内存攻防技术等等这些方向,对初学者来说不太友好,学习曲线很陡峭。

我感觉自己在一学期的学习中掌握基础的Web应用的攻防技术还是有一点点希望的。

在走出校园之前,我想尽可能的多体会一些攻防技术之美,就稍微探索一下Web方向吧。

这部分内容参考《Metasploit魔鬼训练营》

目标靶机OWASP BWA,IP地址:10.0.2.10

使用W3AF扫描XSS漏洞

W3AF是一款开源的Web应用攻击和统计平台,《Metasploit魔鬼训练营》对它的评价较高。

W3AF的安装相当麻烦,使用过程中的参数的配置也比较繁琐,GUI界面操作一般。

不过,《Metasploit魔鬼训练营》没有介绍“广为流传”的Burp Suite,而是选择了W3AF,应该是有原因的。

让我们尝试使用一下W3AF吧。

ww-0

扫描目标

我们的扫描的对象是OWASP中的一个Web应用——Mutillidae。

ww-0-1

主要的探测目标是找到该web应用的XSS漏洞。

因此,这次扫描用到插件有audit(审计模块)中的xss,crawl(爬虫)中的web_spider

配置扫描参数

使用w3af_console打开W3AF的命令行,进行如下的配置

plugins
audit xss   				// 审计XSS漏洞
crawl web_spider			// 配置网页爬虫
crawl config web_spider		
set only_forwad True
back
output html_file			//配置输出格式,选择了html和cvs两种输出方式
output cvs_file
back
target						//设置扫描目标
set target http://www.dvssc.com/mutillidae
back
start

ww-1

扫描结果

W3AF发现了这个Web应用存在的XSS漏洞,并给出了报告

下面是HTML格式的报告,报告比较长,不好截图

ww-2

我们在看一下CVS格式的报告,直接用Excel打开就可以了

ww-3

我们先把这个报告放在这里,等到后面做Web攻防实验的时候,在对它进行实际操作。

使用sqlmap探测SQL注入点

mutilliade有专门的SQL注入练习区。W3AF虽然也可以扫描SQL注入漏洞,但它毕竟过于臃肿,而且难用,我们需要更专门的工具。

我们使用sqlmap这个注入神器对这里进行探测。

s-1

扫描登录表单

首先输入sqlmap -u http://www.dvssc.com/mutilliade/index.php?page=login.php --forms,开始扫描

s-2

等待片刻,并与sqlmap进行一些交互后,得到如下信息

s-3

也就是说这个注入点存在基于错误的盲注基于时间的盲注UNION查询的SQL注入点

我们甚至知道了后台数据库版本,Web应用的平台信息

s-4

数据库用的是MySQL,服务器操作系统是Ubuntu 10.04,Web应用平台为Apache 2.2.14/PHP 5.3.2

我非常惊讶,sqlmap仅仅从一个表单中就能获取这么多信息,真是神器!

更近一步——获取数据库名

我们接着尝试用sqlmap获取数据库名,添加--dbs参数即可

很快,我们就得到了sqlmap的扫描结果

s-5

用sqlmap获取表名

到底哪个数据库才是存放用户名和口令的呢?我还得想办法获取这个信息。

我准备直接上手和Web应用交互,获取线索。

用户名和口令都输入test',看看会发生什么

s-6

我们得到了后台错误信息,从SQL语句中看到了表名

s-7

用户名和口令在表accounts中,这个表会在哪个数据库里呢?

我觉得是mutillidae数据库,用sqlmap看看这个数据库中的有哪些表吧

sqlmap -u http://www.dvssc.com/mutilliade/index.php?page=login.php --forms -D mutillidae --tables

s-8

我们的猜测应该没有错,在mutillidae数据库里存在accounts表

接下来,我们获取accounts表的列名!

用sqlmap获取列名

直接输入

sqlmap -u http://www.dvssc.com/mutilliade/index.php?page=login.php --forms -D mutillidae --tables -T accounts --columns

我们得到如下结果

s-9

非常醒目的username和password字段。那么,我们一口气干到底吧!

成功“拖库”

使用sqlmap,在之前的基础上增加--dump选项,直接拖库

s-10

没想到口令居然都是用明文存储的,对于攻击者来说非常方便。

这是用sqlmap导出的cvs格式的数据

s-11

小结

这个番外本来只是展示一下专门针对Web应用的漏洞扫描的,

只不过sqlmap过于强大,一下子就变成脚本小子玩“拖库”了

但是,我们目前对Web攻防的技术和原理并没有深入的了解,暂时只是使用工具而已。

等到了Web攻防基础实验的时候,咱们不用现成的工具,完成一次手工的SQL注入

原文地址:https://www.cnblogs.com/wyf12138/p/8973406.html