You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

191 lines
11 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 35自动化攻防低代码驱动的渗透工具积累
你好,我是王昊天。
在之前的课程中我们学习了一些Web漏洞挖掘的基础知识这为我们打下了良好的基础。其实在Web攻防中还有一个很重要的部分那就是渗透测试它就是我们发现Web漏洞的一般方式。
其中,在渗透测试时,我们一般需要用到很多网络安全工具,这通常是一个麻烦的问题,因为我们每使用一个网络安全工具都需要获取并学习它,之后再次使用它时还需要注意版本有无更新。不过你不用担心,我已经为你解决了这个问题,潮汐社区版已经集成了大部分常见的网络安全工具,并且会定期更新它们的版本以供你使用。
今天,让我们结合潮汐社区版一起来学习渗透测试基础吧!
## 渗透测试基础
渗透测试是指安全从业人员对某一网络系统模拟黑客入侵进行攻击,旨在发现网络系统中的不安全因素并进行及时修补。
它主要是从Web页面入侵到服务器主机再从服务器主机渗透到域内环境的一个过程而**从Web到服务器的入侵也就是渗透测试的基础**。
一般来说,渗透测试基础可以分为四个方面,它们分别为目标确认、信息搜集、漏洞发现以及漏洞利用。
![图片](https://static001.geekbang.org/resource/image/95/86/95026b5088302a5c1b24ec6c37bc7b86.jpg?wh=1380x404)
首先,我们来学习渗透测试基础的第一个内容——目标确认。
## 目标确认
渗透测试的开始,需要我们明确自己着手的目标。
一般我们会有待攻击Web页面的URL链接在目标确认阶段我们需要根据这个链接获取到Web应用的真实IP地址以及存活子域的信息。接下来让我们来学习如何获取网页的真实IP。
### IP地址获取
当我们知道一个网站的网址时通过直接ping的方式可以返回一个IP信息但是我们大概率无法得到网站源服务器的真实IP。这是因为部分网站会使用CDN技术将自己的源站真实IP隐藏起来该技术会通过使用各种缓存服务器将这些缓存服务器分布到用户访问相对集中的地区或网络中当用户访问网络时由这些缓存服务器直接响应用户请求。
为了让你更好地理解获取IP的方式下面我们一起看一个示例。
```bash
ping www.mituan.zone
PING www.mituan.zone (54.222.162.186): 56 data bytes
64 bytes from 54.222.162.186: icmp_seq=0 ttl=48 time=27.061 ms
64 bytes from 54.222.162.186: icmp_seq=1 ttl=48 time=29.629 ms
```
在这个示例中我们通过ping命令来获取谜团域名的IP地址那么我们**如何知道它是真实的源站IP还是一个CDN地址呢**
这时我们就可以用到CDN检测工具——moreping来简单检测目标网站是否使用了CDN技术moreping是基于Python去调用API接口来高速批量多地ping来检测资产CDN归属的工具。
我们已经将它集成在了潮汐社区版lev.zone之中你可以在注册登录之后搜索moreping对它进行使用。注意在注册过程中需要用到邀请码你使用VefMiMj7N37tHDL7即可不过它仅可支持有限个用户使用。
![图片](https://static001.geekbang.org/resource/image/d5/65/d5862f4f43937465ac7d674e6b573365.png?wh=1867x1086)
点开moreping编排我们可以看到该编排的描述信息及使用说明。点击新建任务我们可以看到如下配置页面
![图片](https://static001.geekbang.org/resource/image/c8/4f/c89c8a3b7ec39ae93aa8b33a17bfcf4f.png?wh=1897x1109)
我们可以在这个页面输入想设置的任务名称例如moreping然后选择一个调用方式这里我们用快速模式就可以了。最后我们输入domain信息即可点击提交任务就开始运行了。
```plain
{'host': 'www.mituan.zone', 'isCdn': False, 'ip': {'54.222.162.186'}}
```
运行结束之后,我们可以获得如上信息,**在该信息的 isCdn 字段我们可以获取到该IP是否属于CDN**这样我们就能分辨出真实的IP信息。
到这里我们已经知道了如何获取待攻击页面的IP信息下一步让我们进入到信息搜集阶段。
## 信息搜集
信息搜集对于渗透测试是不可或缺的一部分。信息搜集的好坏与多少将一定程度上导致这次渗透任务的结果优劣,不论是网站暴露出的信息还是通过安全人员发掘出来的信息,都有为后续步骤创造机遇,为找到突破创造可能。
下面让我们学习一款典型的信息搜集工具——Nmap。
### Nmap服务器信息扫描
Nmap是一个用于网络发现和安全审计的免费开源程序用于网络扫描、服务升级计划管理以及主机或服务正常运行时间监控等任务。我们可以利用Nmap对服务器开放的端口、使用协议、提供服务、操作系统类型来一次全方位的扫描。
在目标确认阶段我们获取到了www.mituan.com的真实IP地址54.222.162.186,我们就对它继续进行下一步的信息扫描操作。
在潮汐社区版的市场中搜索Nmap然后点击新建任务并选择 port\_os - nmap SYN 模式输入谜团的IP地址开始扫描目标主机开放端口、主机名及操作系统。
![图片](https://static001.geekbang.org/resource/image/46/47/467561df22cb417cd305d3623404d147.png?wh=1920x913)
获取到的输出信息如上所示,我们可以获取到谜团服务器的开放端口信息。下面,让我们进入到漏洞发现阶段。
## 漏洞发现
在信息搜集阶段我们可以发现谜团服务器的80端口运行着HTTP服务。
事实上该服务对应的是谜团Web应用但这里为了演示更方便我们假设该服务对应着谜团中的 DVWA SQL Injection 靶场,并对其发起攻击。
我们首先开启谜团中的一个DVWA靶场登录后选择其中的 SQL Injection 实例。之后,我们就可以对它进行漏洞发现。
### sqlmap漏洞发现工具
我们很容易知道这是一个SQL注入靶场这样我们就可以使用潮汐社区版中的sqlmap SQL注入工具对它进行漏洞发现。
![图片](https://static001.geekbang.org/resource/image/62/66/62da457a76c9380ceaa0e27850d9bd66.png?wh=1920x949)
注意由于DVWA靶场需要登录才可以访问所以我们需要在cmd中输入cookie信息所以它的输入应该与下方示例类似
```plain
-u "http://1808d3f4e0bc4d8092ee9b26ad607e5a.app.mituan.zone/vulnerabilities/sqli/?id=chaoxi&Submit=Submit#" --cookie="PHPSESSID=phkop4mdpap307foab1e3veg91; security=low"
```
完成配置之后我们就可以点击提交运行我们的sqlmap SQL注入检测工具等待任务完成之后可以获得如下结果
![图片](https://static001.geekbang.org/resource/image/38/74/3829a352804835a00733341711786f74.png?wh=1920x954)
从输出中,我们可以看到**生效的payload信息**从而判定出该Web应用存在SQL注入问题。
到这里,我们已经完成了渗透测试基础中的漏洞发现阶段,接下来,让我们开始学习漏洞利用的方式。
## 漏洞利用
当我们在漏洞发现阶段找到漏洞之后我们就可以使用漏洞利用工具对Web应用进行攻击。
这里将用到谜团靶场中的专题·极客时间课程系列Tomcat CVE-2017-12615靶场进行漏洞利用的演示所以我们需要打开谜团运行Tomcat CVE-2017-12615靶场。
![图片](https://static001.geekbang.org/resource/image/85/b5/85560540517cbf57b88c7bdae3d387b5.png?wh=1766x964)
从页面中我们可以知道它使用的服务器版本为Apache Tomcat/8.5.19于是我们可以打开潮汐社区版中的工具exploitdb**这个工具可以根据关键词搜索相关的漏洞利用方式**。
![图片](https://static001.geekbang.org/resource/image/0f/59/0fb9c343984481a487dc1f3e437d0259.png?wh=1920x979)
我们选择simple模式的快速模式输入Tomcat8.5.19,然后点击提交,任务就开始运行了。
![图片](https://static001.geekbang.org/resource/image/e6/a3/e6fa7edbb85c3e4ffe4bcd6ba4c478a3.png?wh=1920x951)
运行完成之后我们可以看到如下返回信息这代表我们可以在链接https://www.exploit-db.com/exploits/42966中获取到漏洞利用工具。
![图片](https://static001.geekbang.org/resource/image/10/27/10667b0d79aa26e39ebc0a12dcc09427.png?wh=1920x953)
访问这一地址后我们下载其中的Exploit工具获取到一个Python文件42966.py。
![图片](https://static001.geekbang.org/resource/image/65/22/659ba4d0211e45be8773b0dd661a3722.png?wh=1920x950)
由于不知道它的用法我们下载来之后运行命令python3 42966.py获取到它的使用方式如下
```plain
options:
-u ,--url [::] check target url if it's vulnerable
-p,--pwn [::] generate webshell and upload it
-l,--list [::] hosts list
```
从使用方式中,我们发现需要使用 -u 参数来指定攻击的Web链接而使用 -p 参数则可以反弹shell。
于是我们将Tomcat靶场的地址作为参数执行如下命令
```plain
python3 42966.py -u http://ab41e0726b9747ef851288e1bfea3682.app.mituan.zone:8080/ -p
```
**发现弹出了shell攻击成功。**
到这里,我们就完成了渗透测试基础的四个步骤,在学习的过程中我们多次用到潮汐开源社区中的工具,你可能对于潮汐开源社区还是比较陌生,接下来我来给你们介绍它的功能,确保你在使用起来更加得心应手。
## 潮汐开源社区
潮汐开源社区是一个开源的安全工具合集平台,里面包含了大部分我们常见的安全工具,供我们在线使用,这解决了我们安装及维护安全工具的问题。
同时它还给我们提供了大量的编排所谓编排就是一个或多个工具的不同使用方式的结合例如在渗透测试基础中我们可以利用moreping以及Nmap工具结合起来实现对于待攻击应用的服务探测。
作为潮汐开源社区的用户,我们不仅可以使用其中集成好了的工具,还可以自己写一些编排,供其他用户使用。
![图片](https://static001.geekbang.org/resource/image/94/c6/9415e75ecf0c4be95d82d264c13337c6.png?wh=1120x483)
## 总结
在这一讲中,我们学习了渗透测试基础相关的知识。
首先,我们知道了渗透测试可以分为四个部分,即目标确认、信息搜集、漏洞发现以及漏洞利用。
在对目标确认的过程中我们调用了潮汐开源社区的moreping软件它可以帮助我们判断url对应的IP信息是否是真实源IP。
当确认好目标的IP信息后我们就进入到信息搜集阶段在这个阶段我们使用了潮汐开源社区的Nmap软件它可以帮助我们判断一个IP开启的服务类型及协议信息。
然后我们就进入到漏洞发现阶段在这个阶段里我们使用了潮汐开源社区的sqlmap工具对一个Web页面进行检测根据工具运行的结果我们成功判断出了这个页面存在SQL注入漏洞。
最后我们进入到漏洞利用阶段在这个阶段我们使用了exploitdb工具查询到了Tomcat8.5.19中的漏洞,然后下载漏洞利用脚本,成功发起了攻击行为。
## 思考题
你认为在渗透测试基础的四个部分中,哪一部分最重要?
欢迎在评论区留下你的思考。如果觉得今天的内容对你有所帮助的话,也欢迎你把课程分享给其他同事或朋友,我们共同学习进步!