渗透测试即模拟黑客入侵的手段对目标网络进修安全测试,从而发现目标网络的漏洞,对目标网络进行安全加固与漏洞修复。
Kali 是一个基于 debian 的渗透测试平台,其中集成了很多常见的和不常见的渗透测试工具,如下图:
工具实在是太多,下面就以平时比较常用的一些东西来做演示,感兴趣的朋友可以自己下去研究,类似 kali 的渗透测试系统有很多,但是我们要学习的是渗透的思路而不是工具的使用,有一个好的的思路对渗透的成功与否是非常重要的,还有弄清楚工具的原理也是关键。
首先介绍一下渗透测试流程大体的归纳:
1. 信息收集
2. 漏洞发现
3. 漏洞利用
4. 维持访问
这是我对于网络渗透常规手段的总结
1. 信息收集
信息收集又分为 被动信息收集 和 主动信息收集。很多人不重视信息收集这一环节,其实信息收集对于渗透来说是非常重要的一步,收集的信息越详细对以后渗透测试的影响越大,毫不夸张的说,信息的收集决定着渗透的成功与否。
1.1 被动信息收集
被动信息收集也就是说不会与目标服务器做直接的交互、在不被目标系统察觉的情况下,通过搜索引擎、社交媒体等方式对目标外围的信息进行收集,例如:网站的 whois 信息、 DNS 信息、管理员以及工作人员的个人信息等等。
1.1.1 IP 查询
想得到一个域名对应的 IP 地址,只要用 ping 命令 ping 一下域名就可以了:
当然,淘宝也使用了 CDN ,所以上面图片中得到的 IP 不是真实 web 服务器的 IP 地址,那么如何得到真实服务器的 IP 呢?
告诉大家个小窍门:不妨把“ www ”去掉,只 ping 下 taobao.com 试试
结果不一样了吧?因为一级域名没有被解析到 cdn 服务器上,很多使用了 cdn 服务器的站点都是这样。
1.1.2 whois 信息收集
在 linux 系统下有一个命令:whois ,可以查询目标域名的 whois 信息,用法很简单,如下图所示:
可以查询到域名以及域名注册人的相关信息,例如:域名注册商、 DNS 服务器地址、联系电话、邮箱、姓名、地址等。
也可以使用一些在线工具,如:http://whois.chinaz.com/
1.1.3 DNS 信息收集
还可以用 linux 下的 host 命令去查询 dns 服务器,具体命令格式为:
host -t ns xxx.com
例如对百度域名的 dns 服务器进行查询,如下图:
同样的用法,还可以查询 a 记录和 mx 记录:
Dnsenum 是一款域名信息收集工具,很好很强大。
示例用法:
1. dnsenum --enum xxx.com
可以看到 dnsenum 还对域传送漏洞进行了探测,并且尝试从谷歌获取域名,不过在国内谷歌被墙大家是知道的,如果想用谷歌需要翻墙了 ...
2. dnsenum -f words.txt xxx.com
通过 -f 参数指定字典对目标域名的子域名进行暴力猜解。
更多用法请查看 help 。
1.1.4 旁站查询
旁站也就是和目标网站处于同一服务器的站点,有些情况下,在对一个网站进行渗透时,发现网站安全性较高,久攻不下,那么我们就可以试着从旁站入手,等拿到一个旁站 webshell 看是否有权限跨目录,如果没有,继续提权拿到更高权限之后回头对目标网站进行渗透,可以用下面的方式收集旁站:
1. 通过 bing 搜索引擎
使用 IP:%123.123.123.123 格式搜索存在于目标 ip 上的站点,如下图:
这样便能够得到一些同服务器的其它站点。
也可以使用在线工具:http://s.tool.chinaz.com/same
1.1.5 C 段网站查询
什么是 C 段?每个 IP 都有四个段,如 127.23.33.46 , 127 为 A 段, 23 为 B 段, 33 为 C 段, 46 为 D 段。
在进行 web 渗透时,如果目标站点没有拿下,而旁站也一无所获,或者根本没有旁站,服务器也没有发现其它漏洞,怎么办呢?我们可以通过渗透同一个 C 段的网站、提权拿下服务器,也就是尝试拿下 D 段 1~254 中的一台服务器,接着内网渗透,思路就多了,比如:ARP 欺骗、嗅探?那么,如何收集 C 段存在的站点呢?
之前有不少 C 段查询的工具,由于这些工具多数使用的 bing 接口, bing 接口现在做了限制,需要申请 api-key ,所以很多工具都不能用了,如果要收集 C 段站点的话,可以用 1.1.4 中的方式挨个查询。
1.1.6 Google Hack
搜索引擎真的是个强大的东西,在挖掘信息时你也可以使用一些搜索引擎的语法,对目标的信息进行搜集,也会有一些意想不到的收获,可以用来查找站点敏感路径以及后台地址、查找某人信息、也可以用来搜集子域名等等,用处非常的多,只要自己去构造搜索语法。
网速问题无法开代理,所以访问不了谷歌,就不做演示了,大家可以自行百度去查找 google hack 相关文章。
1.2 主动信息收集
主动信息收集和被动信息收集相反,主动收集会与目标系统有直接的交互,从而得到目标系统相关的一些情报信息。
1.2.1 发现主机
nmap 是一个十分强大的网络扫描器,集成了许多插件,也可以自行开发。下面的一些内容我们就用 nmap 做演示。
首先,使用 nmap 扫描下网络内存在多少台在线主机:
nmap -sP 192.168.1.* / nmap -sP 192.168.1.0/24
-sP 参数和 -sn 作用相同,也可以把 -sP 替换为 -sn ,其含义是使用 ping 探测网络内存活主机,不做端口扫描。
1.2.2 端口扫描
-p 参数可以指定要扫描目标主机的端口范围,如,要扫描目标主机在端口范围 1~65535 开放了哪些端口:
1.2.3 指纹探测
指纹探测就是对目标主机的系统版本、服务版本、以及目标站点所用的 CMS 版本进行探测,为漏洞发现做铺垫。
-O 参数可以对目标主机的系统以及其版本做探测:
这样我们就得到目标主机所运行的系统为 windows xp
如下图所示,可以看到目标主机开放了哪些端口,以及对应的服务。我们还可以加上 -sV 参数来探测详细的服务版本号 :
在对一台主机进行渗透时,服务的版本是很有必要搞清楚的,当知道了服务版本以后,就可以去判断该版本的服务存在哪些漏洞,从而尝试利用该漏洞。
Nmap 的其他一些用法:
-A 参数可以探测目标系统的系统版本、 traceroute 信息、还会调用一些脚本
可以看到,详细的服务版本信息、系统指纹信息、还调用脚本探测了目标主机所在的工作组、主机名、系统时间、 traceroute 等相关的信息。
还有我个人使用 NMAP 对系统做扫描时,常喜欢用的一个组合是:
Nmap -sS -sV - O xxx.xxx.xxx.xxx
其中 -sS 参数的作用是 SYN 扫描, -sV 的作用是探测详细的服务版本信息, -O 是探测系统指纹。效果如下图:
另外,还有些情况,遇到目标系统或者网络对 ICMP 报文做了限制,而 nmap 默认情况下会先使用 ping 去探测目标主机是否存活,如果没有回应的话则不会继续进行端口扫描,遇到这样的情况,可以使用 -Pn 参数,不对目标主机进行 ping 检测。
可以使用 -h 参数查看 nmap 的详细帮助信息,里面有详细的参数介绍。
WEB 指纹探测:
对于 WEB 站点的指纹探测,就是要得到目标网站所用的 CMS 版本、以及 web 容器的版本。
这里用一个 web 站点来举例,
假设拿到一个 web 站点,首先查看站点根目录下有没有 robots.txt 文件,一般 CMS 在这个文件里会留下一些信息,如下:
通过 Disallow 这一项中的路径,就可以判断出是 wordpress 的后台,这样就得到了该网站使用的 CMS 为 wordpress ,或者留意网站下部的版权信息,默认没被修改的情况下可能会留有 powerd by wordpress/powerd by discuz 等字样,这也是获取 cms 的一种思路。
现在我们知道了 CMS 为 wordpress ,那么就用 wpscan 来探测下该 wordpress 站点的版本以及使用的插件版本、主题版本等:
如上图所示(两张图分别是两个不同的站点),默认不加参数会自动探测到 wordpress 的版本、插件版本、主题版本、还有 web 容器的版本信息等。
至于探测 WEB 容器的指纹信息方法就更多了,比如,随意提交一个错误页面,比如 Apache 、 iis 、 nginx 的默认的错误页面都是不同的,而且不同版本的错误页面也是不同的,如下:
可以看到版本为 apache 2
再用看一个 iis 的站点:
可以判断是 IIS7.5 的错误页面。
也可以用 Nmap 之类的扫描器对 web 服务器的版本进行探测,上一章讲过的 nmap 的 -sV 参数就可以达到这个目的。
1.2.4 web 敏感目录扫描
WEB 目录扫描也就是通过一些保存着敏感路径的字典(如:后台路径、在线编辑器路径、上传路径、备份文件等),对于一次网站渗透来说,对目录进行暴力猜解是前期阶段必不可少的一个步骤。如果运气好扫到了备份文件之类的,也许会事半功倍。
dirb 是一款 WEB 目录扫描工具,也被集成在 kali 渗透测试系统中,用法很简单,下面简单做个演示:
目标站点 www.hsezzz.cn
需要大家平时多收集 web 敏感路径的字典。
也有爬虫工具,便于帮助渗透者了解目标 web 的大概结构, webscarab 就是一款强大的 web 爬行工具,也可以做目录爆破用,还有很多其它功能,比如做 xss 测试等, java 开发的 gui 界面用法非常简单,这里就简单做爬虫演示:
首先打开 proxy 选项卡中的 listener 选项卡配置代理端口, IP 地址填 127.0.0.1 ,点击 start 开启代理服务:
接着,打开浏览器,设置代理服务器为 127.0.0.1 端口为自己在 webscarab 中设置的端口
配置好代理后,在浏览器中访问目标网站,然后打开 webscarab 的 spider 选项卡,选择起始点的请求(目标站点),点击 Fecth Tree 就可以在 messages 选项卡中看到请求信息
在 spider 窗格中双击自己目标站点前的文件夹图标就可以查看爬到的目录以及文件
信息收集对于一次渗透来说是非常重要的,收集到的信息越多,渗透的成功几率就越大,前期收集到的这些信息对于以后的阶段有着非常重要的意义。
网络安全零基础路线图
对于从来没有接触过网络安全的同学,我帮你们准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。