「渗透测试」篇
渗透测试(penetration test)是通过「模拟黑客的攻击方法」来评估计算机网络安全的一种评估方法,包括对系统的任何弱点、技术缺陷或漏洞的主动分析。
渗透测试流程
信息收集
主机、域名、系统、社会工程学、……
在渗透测试过程中很重要的一个环节,渗透测试的本质就是信息收集。安全测试
利用第一阶段(信息收集)收集到的信息,进行安全测试。
安全测试的主要内容包括XSS、SQL注入、命令执行、文件上传、业务漏洞、……
除了针对Web系统的安全测试,还可以针对目标主机的端口开放情况进行测试。横向渗透
在第二阶段找到漏洞点并成功利用漏洞进入目标系统后,通过在目标系统内进行提权、信息收集、建立代理(利用此系统作为跳板,访问内网)等方式获取更多信息。报告输出
将挖掘到的漏洞、利用手法和漏洞验证,以及渗透测试的流程进行文档化输出。
对目标系统上的Shell、后门进行清理。
常见的信息收集方法
作为渗透测试前期最主要的步骤,需要以更加细心的态度去进行信息收集。信息收集这一步的质量好坏,直接决定了能否成功地渗透进入目标系统(或达到渗透测试目标)。
- 域名(主域名/子域名)
- 域名注册信息(Whois)
- 子域名爆破
- 真实IP/IP段
通过域名解析出来的IP,来确定目标可能使用的 IP段。对于有 CDN 的域名,可以通过 SSRF、信息泄漏、发送邮件等方式获取目标真实IP。
对于大型公司,可能会有 AS号(自治系统号码,用来标识独立的自治系统),可以通过bgp.he.net
来查询 AS号。 - 网站信息收集
- 网站敏感目录
- 邮箱
- Web服务器指纹
- Web应用指纹
- HTML源码
有些时候,开发者会在网站 HTML源码 里嵌入一些未公开的接口或者其他信息等。 - Web目录爆破
- Web服务器探测
- 开放端口(服务)
- 系统版本
- ……
- 利用搜索引擎进行信息收集
- Google Hacking
子域名、敏感信息、敏感目录、…… - GitHub
很多开发者可能会误将一些敏感配置文件、公司代码、邮箱密码等,上传到GitHub上,这就造成了安全隐患。 - Shodan
一个「网络空间搜索引擎」 - ZoomEye
国产的和 Shodan 类似的产品
- Google Hacking
- 员工信息
- 邮箱信息
- ……
服务漏洞
「服务」就是某个主机的应用程序提供的一些服务性功能(HTTP服务、FTP服务、数据库服务、……),服务一般会对应着某个端口(HTTP服务-80端口、FTP服务-21端口、MySQL服务-3306端口、……)。
服务安全是主机安全的一个重点,服务的漏洞会导致主机沦陷。除了测试Web应用外,更要注重的是,对于服务的发现与漏洞的挖掘。
「Nmap」的使用
Nmap 是一个「网络扫描工具」,可以用来检测主机是否在线、端口是否开启,还可以检测目标主机的操作系统;Nmap 也提供了 NSE(Nmap scripting Engine)功能(一个强大的脚本插件,内含多种服务漏洞的检测)。
利用 Nmap 对网段进行「主机发现」:nmap 10.0.2.0/24 -sP
对指定 IP 进行全端口扫描:nmap 10.0.2.15 -p- -n -v --open
检测每个(开放的)端口所运行的服务,并使用 Nmap 默认的 NSE 脚本进行安全检测:nmap 10.0.2.15 -p- -n -v --open -sC -sV --version-all
一些典型的服务安全漏洞
- IIS
- PUT 漏洞
- 短文件名猜解
- 远程代码执行
- 解析漏洞
- Apache
- 解析漏洞
- 目录遍历
- Nginx
- 文件解析
- 目录遍历
- CRLF注入
- Tomcat
- 远程代码执行
- war 后门文件部署
进入内网的常用方法
- 端口转发
- 内网穿透
Metasploit
Metasploit 是一个「渗透测试集成框架」,简称「MSF」。MSF 内含许多攻击模块,涵盖了包括从操作系统到Web应用的漏洞利用(Exploit)、后渗透模块、扫描模块等。
通常来说,MSF 是渗透测试人员的必备工具,掌握 MSF 是渗透测试人员必须的技能。
常见的提权方式
提权的目的是「获取到更高的权限后,能收集更多的信息」。
Windows
Windows 下的提权是利用系统漏洞进行提权,主要通过 MSF 来进行。Linux
- 内核提权
- 一些错误配置导致的提权
- ……