找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

983

积分

0

好友

139

主题
发表于 5 天前 | 查看: 20| 回复: 0

渗透测试是一项系统性的安全评估活动,旨在模拟攻击者的行为以发现目标系统的潜在安全风险。一个规范的渗透测试过程通常遵循PTES(渗透测试执行标准)等框架,并包含信息搜集、漏洞挖掘、建立据点、权限提升与内网渗透以及取证溯源等关键阶段。本文将详细拆解这一完整流程,为安全从业者提供清晰的思路指引。

一、信息搜集:一切的开端

信息搜集是渗透测试的基石,其核心在于尽可能全面地描绘目标画像。

1. 主机扫描
  • 存活主机发现:扫描目标网段,识别在线的主机。可使用御剑高速端口扫描器等工具,在扫描端口的同时探测存活IP。
  • 端口与服务识别:扫描主机开放的端口及其对应服务。NMap 是此阶段的首选工具,虽然速度可能稍慢,但其信息全面且准确度高。
  • 操作系统与版本探测:同样可以使用 NMapNessus 来识别目标主机的操作系统类型及具体版本号。
  • 已知漏洞扫描:结合 NMap 的脚本引擎与 Nessus 等专业漏洞扫描器,对主机可能存在的公开漏洞进行初步探测。
2. Web应用扫描
  • 域名与子域名发现:使用子域名挖掘机等工具收集目标的所有关联域名。Dirsearch 等目录扫描工具也可用于发现隐藏的子域名或路径。
  • WHOIS信息查询:通过在线站点查询域名的注册人、联系方式等敏感信息。
  • URL路径与后台入口探测:使用 DirsearchDirb 配合强大的字典,扫描Web应用的目录、文件及后台管理入口。
  • 常规漏洞扫描:利用 AWVSNessus 等自动化工具对Web应用进行全面的漏洞扫描。
  • 重要概念:此处的“Web”泛指所有基于HTTP/HTTPS协议的应用,不限于传统的网页。
3. 功能分析

深入分析目标应用的功能点,寻找逻辑缺陷。

  • 分析登录、注册、密码重置等核心功能,可能存在SQL注入(如通过代码审计发现的注册逻辑问题)、逻辑漏洞等风险。
  • 尝试注册并登录,体验所有用户可操作的功能。
  • 定位所有强交互功能点:URL跳转、评论、文件上传/下载/引用等。
  • 探查后台管理功能,如文件管理、数据库查询、命令执行、系统配置等。
  • 重点关注密码重置流程,这是逻辑漏洞(如图片验证码失效、短信轰炸、支付金额篡改等)的高发区。
4. 抓包分析

通过分析请求与响应,洞察应用内部逻辑。

  • 前端源码审计:审查HTML/JS源代码,寻找敏感信息、隐藏接口或可能存在XSS、CSRF漏洞的点。
  • 关键功能抓包:使用 BurpSuite 或 Fiddler 拦截请求,推测后端实现逻辑。
  • 编码与加密分析:检查数据是否采用Base64、时间戳、哈希或特定框架(如JWT、Shiro)的编码/加密方式,这些信息可能泄露在Cookie或请求体中。
  • 会话分析:分析Session和Cookie的生成、传递与验证机制,寻找认证绕过或信息泄露的可能。
  • 常用工具:BurpSuite、Fiddler、Wireshark、科来网络分析仪。
5. 常用工具汇总
  • 主机扫描:NMap, Nessus
  • Web扫描:XRay + Rad, AWVS, AppScan, SQLMap, XSStrike, Dirb, 御剑
  • 在线信息搜集:ZoomEye, FOFA, Shodan, 微步在线,以及万网、企查查等商业信息平台。
二、漏洞挖掘与利用

在信息搜集的基础上,针对性地寻找和利用安全漏洞。

  1. 已知EXP利用:直接搜索并利用目标框架(如Struts2)、CMS或中间件的公开漏洞利用工具。
  2. 暴力破解:当验证码可绕过时,使用各类密码字典进行尝试。BurpSuite 的Intruder模块功能强大,也可使用Hydra等专用工具或自行编写 Python脚本 进行自动化破解。
  3. 逻辑漏洞挖掘:密码重置功能是重中之重。攻击面包括:重置凭证接收端可篡改、泄漏、未校验、可爆破、用户混淆、应答参数影响逻辑、Token可预测等。测试时,重点尝试在请求中替换用户名或身份标识为他人。
  4. JS信息泄露:分析前端JavaScript代码,可能发现内部API接口、敏感路径或业务逻辑参数,为构造请求提供线索。
  5. 后台漏洞利用:针对发现的上传点(传WebShell)、查询点(SQL注入)、命令执行点等,结合漏洞知识库进行深入测试。
  6. 代码审计:若获得源码,可通过RIPS、Fortify SCA等工具进行自动化审计,或人工审计以精确定位漏洞并构造Payload。

常用工具:Hydra, Metasploit Framework, 反序列化利用工具,RIPS(代码审计),蚁剑/哥斯拉(WebShell管理)。

三、建立据点:获取稳定控制

成功利用漏洞后,通常仅获得一个不稳定的WebShell,需要建立更稳定、持久的控制通道。

1. 反弹Shell

将目标的Shell会话反弹到攻击者控制的服务器上,以获得一个交互式、稳定的命令行环境。

2. 可能遇到的障碍与绕过
  • 命令不存在:使用 whereis 检查 nc, bash, python, php, perl 等常见命令是否存在,寻找替代品。
  • 禁止出口流量:防火墙可能阻止内网主机主动向外发起连接。可通过DNS、HTTP等带外(OOB)通道进行验证和利用。
  • 端口限制:目标可能只允许访问外部特定端口(如80、443)。此时需将反弹Shell的监听端口设置为这些允许的端口。
  • 流量审查:IDS/IPS可能检测Shell流量特征。可使用OpenSSL对反弹Shell的流量进行加密,或利用HTTPS等加密协议进行隧道传输,以规避检测。
3. 确认环境与制作木马
  • 获取系统详细信息(OS版本、运行服务、可用执行环境、网络策略)。
  • 根据环境制作定制化木马,并考虑持久化与免杀。
    • 内存马:木马仅存在于内存中,重启即失效。例如:<?php set_time_limit(0); assert($_POST['a']); unlink('shell.php'); ?>
    • 不死马:在内存马基础上,通过循环写文件、创建计划任务等方式实现持久化,难以清除。
    • 免杀技术:通过代码混淆、加密、编码等方式改变木马静态特征,并利用动态行为规避沙箱检测。
4. 常用工具

Metasploit Framework, Cobalt Strike。

四、权限提升与内网渗透
1. 权限提升

初始获得的WebShell权限通常较低(如www-data)。提权方法包括:

  • 利用内核漏洞(栈溢出)。
  • 搜寻配置文件、日志中的明文密码或散列值。
  • 利用环境变量劫持、不安全的服务配置、SUID/SGID程序滥用、sudo配置错误等。
  • 借助权能(Capabilities)或计划任务(Cron Job)进行提权。
2. 权限维持

在获取高权限(如root)后,需部署后门、创建隐藏账户、安装Rootkit或设置计划任务,以确保在系统重启或清理后仍能维持访问。

3. 内网穿透与横向移动

以内网受控主机为跳板,进行横向移动,渗透同一网络内的其他主机。

  • 内网穿透:使用Frp、Cobalt Strike的Socks代理等功能,在攻击机和内网主机之间建立稳定通道。
  • 内网渗透:过程与外网渗透类似,但更注重隐蔽性和对内部协议(如SMB、WinRM、数据库服务)的攻击。主要场景:
    • 办公网:可能存在域环境,常通过社工、钓鱼等方式进入,侧重于信息收集与域控攻击。
    • 服务器区:以已控服务器为跳板,扫描和攻击内网其他服务器。
5. 常用工具
  • 提权:MSF, Linux/Windows Exploit Suggester。
  • 内网渗透:Cobalt Strike, Ladon, Impacket工具包。
  • 穿透代理:Frp, Neo-reGeorg, Cobalt Strike。
五、取证溯源

作为防御方视角,在安全事件发生后进行溯源分析。

  1. 数据恢复:对删除的文件进行恢复(前提是存储空间未被覆盖)。低级格式化或多次覆盖后数据难以恢复。
  2. 日志分析:检查系统日志、应用日志、安全设备日志,追踪攻击者行为路径。
  3. 流量分析:对全流量或特定时间段的流量包进行分析,还原攻击过程。
  4. 社工库查询:利用泄露的密码库等信息,关联攻击者身份。



上一篇:Nginx+Consul零停机发布实践:生产环境蓝绿/灰度发布运维指南
下一篇:Java Web应用安全实战:防范SQL注入、XSS、CSRF与越权访问指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 19:39 , Processed in 0.106134 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表