0%

「渗透测试」篇

「渗透测试」篇

渗透测试(penetration test)是通过「模拟黑客的攻击方法」来评估计算机网络安全的一种评估方法,包括对系统的任何弱点、技术缺陷或漏洞的主动分析。

渗透测试流程

  1. 信息收集
    主机、域名、系统、社会工程学、……
    在渗透测试过程中很重要的一个环节,渗透测试的本质就是信息收集

  2. 安全测试
    利用第一阶段(信息收集)收集到的信息,进行安全测试。
    安全测试的主要内容包括XSS、SQL注入、命令执行、文件上传、业务漏洞、……
    除了针对Web系统的安全测试,还可以针对目标主机的端口开放情况进行测试。

  3. 横向渗透
    在第二阶段找到漏洞点并成功利用漏洞进入目标系统后,通过在目标系统内进行提权、信息收集、建立代理(利用此系统作为跳板,访问内网)等方式获取更多信息。

  4. 报告输出
    将挖掘到的漏洞、利用手法和漏洞验证,以及渗透测试的流程进行文档化输出。
    对目标系统上的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 类似的产品
  • 员工信息
  • 邮箱信息
  • ……

信息搜集

服务漏洞

「服务」就是某个主机的应用程序提供的一些服务性功能(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

    • 内核提权
    • 一些错误配置导致的提权
    • ……