信息搜集与漏洞扫描
0x1 被动信息搜集
被动信息搜集是指,使用一些公开的、间接的信息搜索技巧,在不接触到目标系统的情况下,挖掘目标信息。
如果掌握一定的技巧,甚至可以确定目标网络中使用的操作系统和网站服务器类型。
whois 查询
我曾经就读的小学是江苏省常州市延陵小学,目前官网域名为czylxx.net
我们可以对它进行whois查询
我们还可以获得注册人的部分信息(姓名,邮箱)
Netcraft查询
Netcraft这个网站可以查询到特定网站的IP地址,依然以czylxx.net为例
我们甚至可以看到主机信息——win server 2012操作系统,IIS/8.5的web服务器
针对这个IP——61.160.213.115进行一次whois查询
可以看到网站的服务器提供商。
IP2Loaction
如果目标在国内的话,我们更推荐纯真IP库(http://www.cz88.net)对目标的地理位置进行查询
nslookup
我们再使用nslookup获取czylxx.net的更多信息
我们同样可以看到邮件服务器的DNS记录指向hostmaster.xinnetdns.com
Google Hacking
google搜索引擎的功能非常强大,掌握高超的搜索技巧,通过它就能找到相当多的信息
使用VPN或代理服务器进入google,在czylxx.net
域名下,搜索一些excel表格
google的搜索技巧非常多,但限于篇幅和个人兴趣,这里就不展开了
黑客的搜索引擎——fofa.so
FOFA是白帽汇推出的一款网络空间资产搜索引擎。它能够帮助用户迅速进行网络资产匹配、加快后续工作进程。例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。
我们通过它来看一下我们学校的服务器中间件版本信息
研究生部的网站用的是IIS/7.0
我们还发现了一个从未见过的域名 xgc.besti.edu.cn
但是在浏览器中打不开,应该是现在已经访问不了。
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选项对探索子网内活跃的主机。
我们发现10.0.2.10这个IP地址的主机是活跃的
接着使用基本的端口扫描功能对OWASP靶机进行扫描,这里使用TCP SYN扫描
TCP SYN扫描比较隐秘,同时也是nmap的默认扫描方式。
接下来看看OWASP靶机的服务版本信息,直接使用-A选项
-A选项相当于同时使用 -sV选项和-O选项
使用nmap脚本
nmap的扩展性也非常强,可以编写脚本来完成一些工作。
nmap本身自带了一些脚本,在Kali中,/usr/share/nmap/scripts目录下就是nmap所有的自带脚本。
使用--script=<script-name>
选项就可以使用这些脚本了。
这里使用ssh-brute脚本尝试暴力破解ssh口令
nmap自带了口令字典,可以进行扫描(但是默认的字典成功率并不高)
非常幸运,我们破解成功了!存在用户名user口令user的ssh登录账号,以及用户名root口令ubuntu的ssh用户。
这是nmap给出的username.lst,里面是用户名
nmap默认的password.lst口令字典
0x3 针对性扫描
接下来,我们使用metasploit对目标进行针对性扫描,获取特定操作系统、服务、软件以及配置缺陷等信息。
我们看一下linux metasploit目标提供的服务有那些:
然后我们对这些信息进行针对性扫描
数据库口令猜测
我们发现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
输入run,运行该辅助模块,得到如下结果
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服务
然后我们看一下这些FTP是否允许匿名用户登录,使用scanner/ftp/anonymous模块
很可惜,没有支持匿名登录的FTP服务器
我们也可以继续尝试弱口令破解,这里就不演示了。
对于其他服务器,比如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
命令判断是否安装成功
直接通过Task Wizard创建任务,输入要扫描的主机的IP即可
openvas扫描完毕后,我们来看一看生成的报告
有9个漏洞被openvas标记为“高危”的漏洞,我们来看一下
SSH的弱口令可以被暴力破解,mysql和postgresql都使用了默认的用户名口令
openvas甚至给出了SSH的一些用户名和口令(还差root:ubuntu这一个账户)
再看另一个标记为“high”的漏洞:
这应该是一个关于Apache的漏洞(CVE-2011-3192),容易通过这个漏洞来引发“拒绝服务”(DOS)攻击
在exploit-db中甚至有攻击代码
其实nmap中就有检测这个漏洞的脚本存在,我们看一下:
接着用nmap扫描一下:
我觉得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吧。
扫描目标
我们的扫描的对象是OWASP中的一个Web应用——Mutillidae。
主要的探测目标是找到该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
扫描结果
W3AF发现了这个Web应用存在的XSS漏洞,并给出了报告
下面是HTML格式的报告,报告比较长,不好截图
我们在看一下CVS格式的报告,直接用Excel打开就可以了
我们先把这个报告放在这里,等到后面做Web攻防实验的时候,在对它进行实际操作。
使用sqlmap探测SQL注入点
mutilliade有专门的SQL注入练习区。W3AF虽然也可以扫描SQL注入漏洞,但它毕竟过于臃肿,而且难用,我们需要更专门的工具。
我们使用sqlmap这个注入神器对这里进行探测。
扫描登录表单
首先输入sqlmap -u http://www.dvssc.com/mutilliade/index.php?page=login.php --forms
,开始扫描
等待片刻,并与sqlmap进行一些交互后,得到如下信息
也就是说这个注入点存在基于错误的盲注、基于时间的盲注、UNION查询的SQL注入点
我们甚至知道了后台数据库版本,Web应用的平台信息
数据库用的是MySQL,服务器操作系统是Ubuntu 10.04,Web应用平台为Apache 2.2.14/PHP 5.3.2
我非常惊讶,sqlmap仅仅从一个表单中就能获取这么多信息,真是神器!
更近一步——获取数据库名
我们接着尝试用sqlmap获取数据库名,添加--dbs
参数即可
很快,我们就得到了sqlmap的扫描结果
用sqlmap获取表名
到底哪个数据库才是存放用户名和口令的呢?我还得想办法获取这个信息。
我准备直接上手和Web应用交互,获取线索。
用户名和口令都输入test'
,看看会发生什么
我们得到了后台错误信息,从SQL语句中看到了表名
用户名和口令在表accounts中,这个表会在哪个数据库里呢?
我觉得是mutillidae数据库,用sqlmap看看这个数据库中的有哪些表吧
sqlmap -u http://www.dvssc.com/mutilliade/index.php?page=login.php --forms -D mutillidae --tables
我们的猜测应该没有错,在mutillidae数据库里存在accounts表
接下来,我们获取accounts表的列名!
用sqlmap获取列名
直接输入
sqlmap -u http://www.dvssc.com/mutilliade/index.php?page=login.php --forms -D mutillidae --tables -T accounts --columns
我们得到如下结果
非常醒目的username和password字段。那么,我们一口气干到底吧!
成功“拖库”
使用sqlmap,在之前的基础上增加--dump
选项,直接拖库
没想到口令居然都是用明文存储的,对于攻击者来说非常方便。
这是用sqlmap导出的cvs格式的数据
小结
这个番外本来只是展示一下专门针对Web应用的漏洞扫描的,
只不过sqlmap过于强大,一下子就变成脚本小子玩“拖库”了
但是,我们目前对Web攻防的技术和原理并没有深入的了解,暂时只是使用工具而已。
等到了Web攻防基础实验的时候,咱们不用现成的工具,完成一次手工的SQL注入吧