首页 > 其他分享 >Web渗透测试流程

Web渗透测试流程

时间:2023-04-10 11:37:16浏览次数:52  
标签:Web 收集 渗透 流程 扫描 信息 目标 漏洞 测试

1.信息收集阶段

1.1 确定目标

  • 确定目标:

在信息收集阶段中,我们需要明确测试的目标,这包括确定要测试的网站、应用程序或系统以及测试的目的。我们需要收集有关目标的所有信息,例如目标的IP地址、URL、操作系统、Web服务器、应用程序和框架等。我们可以使用以下工具来收集信息:

工具名称说明
Nmap 用于扫描目标系统的端口和服务
Whois 用于查找目标域名的所有者信息
Recon-ng 用于收集目标的信息和资产
Shodan 用于搜索与目标相关的设备和服务
Google Hacking Database 用于搜索与目标相关的敏感信息和漏洞
Social Engineering Toolkit 用于利用社交工程学攻击目标

通过这些工具,我们可以收集尽可能多的信息,以便我们能够更好地了解目标并进行下一步的测试。

1.2 收集目标信息

  • 收集目标域名及IP地址:

    域名/IP地址备注
    www.example.com 主站
    mail.example.com 邮件系统
    ftp.example.com FTP服务器
  • 收集目标子域名:

    子域名备注
    www.example.com 主站
    mail.example.com 邮件系统
    ftp.example.com FTP服务器
  • 收集目标网站备案信息:

    网站备案信息备注
    网站名称:Example  
    网站备案号:京ICP备12345678号  
    网站备案时间:2020年01月01日  
  • 收集目标网站SSL证书信息:

    SSL证书信息备注
    证书颁发机构:Let’s Encrypt  
    证书有效期:2021年01月01日至2022年01月01日  
    证书类型:DV SSL证书  

1.3 分析目标信息- 确定目标网站的IP地址和端口号

  • 确定目标网站所使用的服务器类型和操作系统
  • 收集目标网站的子域名和子目录信息
  • 收集目标网站的敏感目录和敏感文件信息
  • 收集目标网站的管理员信息和系统架构信息
  • 收集目标网站的第三方组件和插件信息
  • 收集目标网站的漏洞信息和历史安全事件信息
  • 收集目标网站的备份文件和日志文件信息
  • 收集目标网站的社交媒体信息和员工信息

表格示例:

目标信息收集方法
IP地址和端口号 使用ping命令和端口扫描工具
服务器类型和操作系统 使用指纹识别工具和漏洞扫描工具
子域名和子目录信息 使用子域名枚举工具和目录扫描工具
敏感目录和敏感文件信息 使用目录扫描工具和文件泄露检测工具
管理员信息和系统架构信息 使用搜索引擎和社交媒体
第三方组件和插件信息 使用漏洞扫描工具和指纹识别工具
漏洞信息和历史安全事件信息 使用漏洞库和搜索引擎
备份文件和日志文件信息 使用目录扫描工具和文件泄露检测工具
社交媒体信息和员工信息 使用搜索引擎和社交媒体

2.漏洞扫描阶段

2.1 确定漏洞扫描范围

  • 确定漏洞扫描目标,包括IP地址、域名、子域名等。
  • 确认扫描的端口范围,包括常见的HTTP、HTTPS、FTP、SSH等端口。
  • 确认扫描的深度,包括浅度扫描、中度扫描和深度扫描。
  • 确认扫描的策略,如是否扫描已知漏洞、是否进行身份认证等。
  • 确认扫描的时间和频率,如每日、每周或每月扫描。

2.2 选择合适的漏洞扫描工具

  • 使用Nessus进行漏洞扫描,命令如下:

    nessus -h <target_host> -p <target_port>
    
  • 使用OpenVAS进行漏洞扫描,命令如下:

    openvas-cli -h <target_host> -p <target_port>
    
  • 使用Nmap进行漏洞扫描,命令如下:

    nmap -sV --script=vuln <target_host>
    
  • 使用Burp Suite进行漏洞扫描,步骤如下:

    1. 打开Burp Suite,点击“Target”选项卡,输入目标URL。
    2. 点击“Site map”选项卡,右键点击目标网站,选择“Active Scan”。
    3. 选择扫描选项,点击“Start Scan”开始扫描。
  • 使用Metasploit进行漏洞扫描,命令如下:

    msfconsole
    use auxiliary/scanner/http/xxx
    set RHOSTS <target_host>
    set RPORT <target_port>
    run
    

2.3 进行漏洞扫描- 使用常用漏洞扫描器进行扫描,如Nessus、OpenVAS等

  • 对扫描结果进行筛选和整理,确定需要进一步验证的漏洞
  • 对每个漏洞进行深入验证,包括利用漏洞进行攻击、验证漏洞是否真实存在等
  • 将漏洞验证结果进行记录和整理,生成漏洞报告并提交给相关部门进行修复。

表格示例:

漏洞名称漏洞类型验证结果
SQL注入漏洞 注入漏洞 存在
XXE漏洞 XML解析漏洞 不存在
CSRF漏洞 跨站请求伪造漏洞 存在

3.漏洞利用阶段

3.1 确定攻击目标

  • 3.1 确定攻击目标

确定攻击目标是漏洞利用阶段的第一步,攻击者需要明确攻击目标,包括目标的IP地址、操作系统版本、Web服务器版本、应用程序版本等信息。攻击者可以通过搜索引擎、WHOIS查询、端口扫描等方式获取目标信息。例如,使用nmap工具进行端口扫描:

nmap -sS -p 1-65535 -T4 target_ip

扫描结果可以得到目标主机的开放端口和服务类型,从而确定目标的操作系统和Web服务器版本。

3.2 选择合适的漏洞利用工具

  • 选择合适的漏洞利用工具:

    工具名称用途示例
    Metasploit 自动化漏洞利用框架 use exploit/windows/smb/ms08_067_netapi
    sqlmap 自动化SQL注入工具 python sqlmap.py -u "http://example.com/?id=1" --dbs
    Burp Suite 综合性的渗透测试工具 拦截并修改HTTP请求
    Nmap 端口扫描工具 nmap -sS -p 1-65535 example.com
    Hydra 暴力破解工具 hydra -l admin -P password.txt example.com http-post-form "/login.php:user=^USER^&pass=^PASS^:Invalid username or password"

3.3 进行漏洞利用- 选定目标漏洞:根据前面的漏洞扫描和漏洞验证,选定一个可利用的漏洞作为攻击目标。

  • 收集目标信息:根据漏洞类型,收集目标系统的相关信息,如操作系统、应用程序版本、服务端口等。
  • 编写漏洞利用代码:根据漏洞类型和目标信息,编写可利用漏洞的代码。
  • 运行漏洞利用代码:将漏洞利用代码运行在目标系统上,获取系统权限或敏感信息。
  • 清理痕迹:在攻击结束后,清理攻击留下的痕迹,避免被发现。
  • 表格:
选定目标漏洞收集目标信息编写漏洞利用代码运行漏洞利用代码清理痕迹
Web应用程序中的SQL注入漏洞 获取数据库类型、版本、表结构等信息 编写SQL注入语句 将SQL注入语句插入到Web应用程序中 删除日志、清理服务器上的恶意文件等

4.提权阶段

4.1 提升权限

  • 4.1 提升权限

    在提权阶段,我们会使用各种技术手段提升我们的权限,以便更深入地访问目标系统。

    以下是一些常见的提权方法:

    方法描述
    提升进程权限 利用漏洞或者提权工具将当前进程的权限提升为系统管理员权限或者其他高权限
    利用服务漏洞 利用服务程序存在的漏洞,提升权限
    利用系统漏洞 利用系统存在的漏洞,提升权限
    利用系统配置错误 利用系统配置错误,提升权限
    利用社会工程学 利用社会工程学手段,获取管理员权限

    在实际操作中,我们需要根据具体情况选择适合的提权方法,并且需要注意提权过程中的隐蔽性,尽量避免被目标系统检测到。

4.2 寻找敏感信息- 在网站中搜索常见的敏感文件,如/etc/passwd/etc/shadow等,尝试读取其中的内容。

  • 使用目录爆破工具扫描网站目录,查找可能存在的敏感文件和目录。
  • 检查网站是否存在未授权访问漏洞,如未授权访问的管理员页面或数据库管理页面等。
  • 尝试使用SQL注入漏洞获取敏感信息,如管理员账号、密码等。
  • 使用社会工程学技巧,如钓鱼邮件、伪造登录页面等,获取用户的敏感信息。

5.覆盖痕迹阶段

5.1 删除日志

  • 在渗透测试中,攻击者会留下很多痕迹,例如攻击日志、命令历史等,因此在渗透测试的覆盖痕迹阶段需要删除这些痕迹,以避免被发现。
  • 5.1 删除日志:攻击者在渗透测试过程中可能会在受攻击的系统中留下攻击痕迹,例如访问日志、系统日志等,因此需要删除这些日志,以避免被系统管理员发现。可以使用以下命令删除日志:
rm -rf /var/log/*

表格:

命令说明
rm -rf /var/log/* 删除/var/log/目录下的所有文件和子目录

5.2 清除痕迹- 清除浏览器缓存和历史记录,尤其是敏感信息的访问记录;

  • 删除临时文件和日志文件;
  • 清除操作系统的事件日志;
  • 删除测试过程中产生的临时文件和日志文件;
  • 删除测试过程中通过漏洞获取到的文件和数据;
  • 在目标系统上留下的任何测试痕迹都应该被清除。

表格示例:

清除痕迹方法说明
清除浏览器缓存和历史记录 清除敏感信息的访问记录
删除临时文件和日志文件 清除系统中产生的临时数据
清除操作系统的事件日志 防止被攻击者发现测试痕迹
删除测试过程中产生的临时文件和日志文件 防止被攻击者发现测试痕迹
删除测试过程中通过漏洞获取到的文件和数据 防止被攻击者发现测试痕迹
在目标系统上留下的任何测试痕迹都应该被清除 防止被攻击者发现测试痕迹

6.报告编写阶段

6.1 汇总测试结果

  • 6.1 汇总测试结果
漏洞名称漏洞等级漏洞描述漏洞证明建议
SQL注入 在登录页面找到SQL注入漏洞 ’ or 1=1 – 对输入进行过滤或者使用预编译语句
XSS 在搜索框中发现反射型XSS漏洞 <script>alert(‘XSS’)</script> 对输入进行过滤或者使用转义字符
文件上传 在文件上传功能中发现文件类型没有限制 尝试上传一个php文件 对上传文件进行类型限制和内容过滤

6.2 分析测试结果

  • 对测试结果进行分类整理,包括高、中、低风险漏洞的数量及详细信息。

  • 根据测试结果提出相应的修复建议,包括修复方案、修复优先级等。

  • 将测试结果和修复建议整理成报告形式,包括漏洞概述、风险评估、修复建议等内容。

  • 报告中应包含详细的测试过程、测试结果、修复建议等信息,同时应当简明扼要,便于相关人员理解和操作。

表格:

漏洞类型风险等级漏洞描述修复建议
SQL注入 通过输入特定字符,可对数据库进行非法操作 对输入内容进行过滤和转义处理
XSS 可以在网页中注入恶意脚本,获取用户信息 对用户输入的内容进行过滤和转义处理
CSRF 利用用户已登录的身份,进行恶意操作 增加token验证机制
文件上传漏洞 可以上传恶意文件,进行攻击 对上传文件进行类型和大小的限制

6.3 撰写测试报告- 撰写测试报告应包括以下内容:

  1. 测试概述:对测试的目的、范围、方法、工具、时间等进行简要描述。
  2. 测试环境:描述测试所使用的环境,包括硬件、软件、网络等。
  3. 测试过程:详细描述测试的具体过程,包括测试的步骤、测试结果、发现的问题等。
  4. 漏洞评估:对发现的漏洞进行评估,包括漏洞的危害程度、影响范围、修复建议等。
  5. 总结与建议:对整个测试过程进行总结,提出改进建议和安全加固措施。
  6. 附录:包括测试的详细数据、测试的截图、漏洞的复现步骤等。

表格示例:

测试概述测试环境测试过程
对测试的目的、范围、方法、工具、时间等进行简要描述。 描述测试所使用的环境,包括硬件、软件、网络等。 详细描述测试的具体过程,包括测试的步骤、测试结果、发现的问题等。
漏洞评估总结与建议附录
对发现的漏洞进行评估,包括漏洞的危害程度、影响范围、修复建议等。 对整个测试过程进行总结,提出改进建议和安全加固措施。 包括测试的详细数据、测试的截图、漏洞的复现步骤等。

标签:Web,收集,渗透,流程,扫描,信息,目标,漏洞,测试
From: https://www.cnblogs.com/lusuo/p/17302364.html

相关文章

  • ios的百度网盘web版本视频播放器的字幕插件功能
    详情见https://coding.net/u/qidizi/p/pan.baidu.com.srt.plugin/git这里放一张效果图。......
  • kali linux 基本渗透测试流程
    渗透测试流程1.信息收集阶段网络拓扑结构分析使用nmap扫描目标网络,获取目标主机IP地址和开放端口信息使用whois查询目标域名的注册信息和DNS服务器信息使用nslookup查询目标域名的IP地址和子域名信息使用traceroute获取目标主机的路由信息使用ping测试目标主机的可达......
  • Abnormal build process termination--解决IDEA启动web项目报错
    在projectstructure中,把sdk中的jdk重新添加,却发现选择了正确的jdk目录却提示不是正确的jdk路径。于是,我重新安装了jdk。在idea中又重新引了jdk。这个问题就解决了。所以有时候当你一直运行正确的时候,突然发现有问题了。可能就是近期修改的东西导致的。基本就是jdk的问题  把......
  • 基于数字孪生智慧污水厂Web3D可视化系统
    城市水环境不仅关系到国民生活的质量,还对我国社会发展有着深入的影响。城市污水处理厂的存在不仅能够提升生态环保工作发挥的效用,还能够向城市居民宣传生态环保的重要性,使得更多的市民认识到节约、环保的意义,能够从自身出发,注重节约用水及循环利用,减少水资源浪费,起到强化生态环保......
  • Websphere运维
    查看IHS的cert有效期:/opt/IBM/IBMIHS90/bin/gskcapicmd-cert-details-dbcertname.kdb-stashed-labelcertname查看MQcert有效期:echo""|openssls_client-connectlocalhost:1415>/tmp/getCert.logopensslx509-in/tmp/getCert.log-enddate-noout|......
  • c#怎么实现web端上传超大文件
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • VS2019使用C语言进行websocket编程
    一直在写C#代码好多年不写C语言代码了,记录一下之前某个项目里用C写的一个websocket服务,用C的优势是写的东西体积小性能高,但是写业务的话还得用C#、Java之类的语言,不然会折腾死人。。。 用VisualStudio新建一个C++(因为不能直接建C语言项目)项目,我演示就创建一个控制台项目。项......
  • 基于k8s的web集群项目
     准备5台linux机器   系统是centos7.9 2核/4G的配置1.k8s的部署安装1.1.准备环境:先给每台服务器起好名字,使用固定的ip地址,防止后面因为ip地址的变化,导致整个集群异常(每台机器)master192.168.18.139node1192.168.18.138node2192.168.18.137......
  • JavaWeb
    JavaWebjavaweb1、基本概念1.1、前言web开发:web,网页的意思,www.baidu.com静态webhtml,css提供给所有人看的数据始终不会发生变化!动态web淘宝,几乎是所有的网站提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!技术栈:Servl......
  • SpringSecurity之WebSecurity和HttpSecurity
    SpringSecurity启动过程中有两个重要的类。分别是WebSecurity和HttpSecurity。 看看WebSecurity的定义:publicfinalclassWebSecurityextendsAbstractConfiguredSecurityBuilder<Filter,WebSecurity>implementsSecurityBuilder<Filter>,ApplicationContextAware,Servl......