渗透测试基础学习总结
首先来看看基本的渗透流程图:
主要分为四个大步骤:信息收集,漏洞分析,渗透攻击,后渗透。
在这里主要讲一些基本的类容,更深层次的还是需要下来慢慢学习。
1. 信息收集
1.1 域名
域名是互联网上用于标识和定位网站的字符串,由字母、数字和连字符组成,通过点号分隔不同层级。例如 google.com 是一个典型域名,用于代替复杂的IP地址(如 172.217.0.0),方便用户记忆和访问网站。
域名的结构
- 顶级域(TLD):位于域名最右侧,如
.com、.org、.net 

- 二级域:紧邻顶级域左侧的部分,通常是网站名称(如
google在google.com中)。 - 子域名:可选的层级,位于二级域左侧(如
mail.google.com中的mail)。

注册域名地址:阿里云万网_域名注册_域名交易_建站_备案_资质_商标_软著-阿里云(万网)
为什么要学习域名:域名发现是安全测试中的关键环节,能够帮助识别目标组织的数字资产范围,暴露潜在的攻击面。通过系统性地收集子域名、关联域名和历史记录,可以发现隐蔽或遗忘的入口点
关于多级域名的学习可以通过其他域名找到主站的漏洞
例如:这里是川师的主站,通常我们要对主站进行漏洞分析但一般很难找到漏洞
而通过主站我们通常可以解析出网络ip地址因为通常很难突破,所以我们需要另一个域名
这个域名可能也对应主站相同的网络ip地址,我们可以在这个页面进行突破寻找漏洞从而获得更高的权限
1.2 DNS
DNS是互联网的核心服务之一,用于将可读的域名转换为IP 地址。DNS 通过分层分布式数据库实现高效解析,是互联网访问的基础设施
1.2.1 host文件与DNS的关系
host文件地址:C:\Windows\System32\drivers\etc
本地DNS与host文件的核心关系在于:host文件的解析优先级高于本地DNS,它是系统最先检查的本地映射表,而本地DNS是网络层面的解析服务,用于在本地无记录时获取域名对应的IP地址。
1. 解析顺序:从本地到网络
当计算机需要将一个域名(如 www.example.com)转换为IP地址时,系统会按以下顺序进行解析:
- 首先检查Hosts文件:操作系统会查看本地的Hosts文件中是否有该域名的映射。如果有,直接使用对应IP,解析结束。
- 查询本地DNS缓存:如果Hosts中没有,系统会检查是否曾经解析过该域名并缓存在本地。
- 向本地DNS服务器发起请求:若缓存无结果,系统会将请求发送给配置的DNS服务器(如运营商或公共DNS),由其递归查询根域名、顶级域名和权威域名服务器,最终返回IP地址

ping baidu.com 的时候可以看到ip地址在111.63.65.103


在文件中修改后

可以看到已经解析成了1.1.1.1
而某些钓鱼网站也用的这种原理,通过更改,使访问的域名指向另一个ip网络地址
1.2.2 CDN与DNS的关系
CDN(内容分发网络)是一种分布式服务器系统,通过将内容缓存到全球各地的边缘节点,使用户能够从最近的节点获取数据,从而降低延迟、提高访问速度。

查询网络IP地址网站:多个地点Ping服务器,网站测速 - 站长工具
为什么要了解CDN?当我们对于某一个节点进行安全测试的时候是对该节点的数据缓存进行访问而不是对主节点进行访问。使用CDN绕过技术可以获得真实IP地址
1.2.3 常见DNS攻击
DNS劫持(DNS Hijacking)
攻击者通过篡改DNS解析结果,将用户导向恶意网站。常见手段包括入侵本地路由器、运营商级劫持或恶意软件修改本地Hosts文件。
DNS缓存投毒(DNS Cache Poisoning)
攻击者向DNS服务器注入伪造的解析记录,导致服务器返回错误的IP地址。利用DNS协议漏洞(如事务ID可预测),使缓存服务器长期存储恶意记录。
DDoS攻击(DNS Flood)
向目标DNS服务器发送海量查询请求,耗尽服务器资源使其无法响应正常查询。通常结合僵尸网络或伪造IP发起。
1.3 web架构

客户端 绝大部分是浏览器。 Trident内核,代表是IE EDGE内核,代表是微软的Edge浏览器 Gecko内核,代表是Firefox WebKit内核,代表是Safari和Chrome Blink内核,代表是最新的Chrome Presto内核,代表是Opera
Web服务端 web服务端从客户端接收请求数据,并对请求数据进行处理之后返回数据给 用户客户端。 Unix和Linux平台下的常用Web服务器有Apache,Nginx,Lighttpd,Tomcat,IBM WebSphere、BEA Weblogic等,其中 应用最广泛的是Apache。而WindowsNT/2000/2003平台下最常用的服务器则是微软公司的IIS。
存储端 用来检索和存储数据,最常见的是数据库。 大型数据库有:Oracle、Sybase、DB2、SQL server 小型数据库有:Access、MySQL等。

Web服务端的组成:

1.3.1 中间件
中间件:是服务器上的“桥梁软件”,帮你的电脑实现Web服务、数据库存储等功能,是让靶场能跑起来的核心组件。
Web漏洞环境里最常用的3类中间件:
1. Web服务器中间件:Apache、Nginx、IIS,负责接收浏览器请求、展示网页”;
2. 数据库中间件:MySQL、SQL Server,负责存储靶场的用户数据、漏洞测试数据”;
3. 脚本运行中间件:PHP、Python解释器,负责解析靶场的动态代码,让漏洞能被触发。
1.4动态网站工作原理
用户请求-->web服务器-->中间件处理--> 数据库查询--> 数据处理 --> 生成静态页面 -->返回用户
- 用户请求阶段:渗透者可能通过构造恶意请求(如SQL注入、XSS攻击)直接攻击Web服务器或应用程序。用户输入未经过滤或验证时,攻击者可以注入恶意代码或命令。
- Web服务器与中间件处理:Web服务器(如Apache、Nginx)或中间件(如Tomcat、Node.js)可能存在配置错误或漏洞。攻击者利用服务器漏洞(如目录遍历、文件包含)获取敏感信息或执行任意代码。
- 数据库查询环节:SQL注入是最常见的渗透方式。攻击者通过输入恶意SQL语句绕过验证,直接操作数据库。未正确使用参数化查询或ORM框架时,数据库可能暴露数据或遭受破坏。
- 数据处理与静态页面生成:模板引擎(如Jinja2、Thymeleaf)在渲染页面时,若未对动态内容转义,可能导致XSS攻击。攻击者注入的脚本会在用户浏览器执行,窃取会话或敏感信息。
- 返回用户阶段:中间人攻击(MITM)可能发生在数据传输过程中。未使用HTTPS或加密不完善时,攻击者可截获或篡改返回给用户的数据。
2. Web漏洞环境搭建
2.1 Phpstudy + Dvwa
首先下载Phpstudy:https://www.xp.cn
根据向导安装
打开后

在这个路径下解压出DVWA
对这个文件的后缀修改为PHP如下图:

打开Phpstudy

查看用户密码,密码可以修改一下,这里我改成了123456
打开刚刚的文件用记事本即可,改成下面这样,密码看你如何修改


这里可以看到域名的信息
启动后选择选项,这里因为数据库的5.7版本不兼容所以我换了8.0版本的

启动后在浏览器搜索,即可

点击搭建数据库

创建成功后输入用户密码 admin password就ok了


3. 漏洞分析
常见web应用漏洞

3.1 简单的SQL注入
SQL注入(SQL Injection)是一种针对数据库的安全漏洞攻击技术,攻击者通过构造恶意的SQL查询语句,插入到应用程序的输入参数中,从而绕过验证、窃取数据或破坏数据库。这种攻击通常发生在未对用户输入进行严格过滤的Web应用中。

注入后的代码:
SELECT * FROM `users` WHERE user = 'admin' or '1'='1' AND password = '$pass';
3.2 XSS
XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的安全漏洞,攻击者通过注入恶意脚本到受害者的浏览器中执行,从而窃取用户数据、劫持会话或破坏页面内容。XSS通常分为以下三类:
存储型XSS
恶意脚本被永久存储在目标服务器(如数据库、留言板等),当其他用户访问包含该脚本的页面时,脚本自动执行。常见于用户提交内容未过滤的场景。
反射型XSS
恶意脚本作为请求参数(如URL)发送到服务器,服务器未过滤直接返回给用户浏览器执行。通常通过诱骗用户点击恶意链接触发。
DOM型XSS
完全在客户端发生的攻击,恶意脚本通过修改页面的DOM结构执行,不经过服务器处理。例如通过document.write或innerHTML动态插入未经验证的内容。
3.3 CSRF
CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接,利用受害者在目标网站(如银行、社交媒体)的已登录状态,伪造请求执行非授权操作。由于请求是从受害者的浏览器发出,目标网站可能误认为是合法操作。
CSRF的攻击原理
攻击者需要受害者已登录目标网站且会话未过期。攻击者构造恶意请求(如转账、修改密码),通过图片、链接或表单诱导受害者触发。浏览器会自动携带目标网站的Cookie或其他身份凭证,导致请求被服务器视为合法。
4. 渗透测试类型

白盒测试: 提供测试系统的源代码或者目标相关资料。
黑盒测试: 未提供测试目标或者相关系统的资料,例如:源代码等信息。
灰盒测试: 是白盒测试和黑盒测试基本类型的组合。
4.1 渗透测试方法
4.1.1 web渗透测试
信息收集 基础信息:IP,网段,域名,端口
系统信息:操作系统版本
应用信息:各端口的应用,如web应用,邮件应用等等
版本信息:所有这些探测到的东西的版本。
服务信息:cms版本信息,脚本语言。
漏洞探测 Web服务器漏洞:Web服务器配置问题
Web应用漏洞:Web应用开发问题
其它端口服务漏洞:21/8080/7001/22/3389等
4.1.2 内部网络渗透测试
自动化验证:结合自动化扫描工具提供的结果
手工验证:根据公开资源进行验证
登陆猜解:可以尝试猜解一下登陆口的账号密码等
信息业务漏洞验证:如可能存在业务漏洞处,要进行验证 编写报告
补充介绍:要对漏洞成因,验证过程和带来危害进行分析
修补建议:当然要对所有产生的问题提出合理高效安全的解决办法
4.1.3 社会工程学渗透测试
自动化验证:结合自动化扫描工具提供的结果 手工验证:根据公开资源进行验证 登陆猜解:可以尝试猜解一下登陆口的账号密码等 信息业务漏洞验证:如可能存在业务漏洞处,要进行验证
邮箱信息:目标官网公开的邮箱、招标平台邮箱、招聘信息的邮箱等
人员信息:目标网站上预留的联系人手机号等信息,通过加微信进一步利用 构造钓鱼内容 收集的招聘信息,就需要构造简历 招标平台信息,需要构造招标咨询 举报监督投诉的信息,需要构造举报内容 邮箱平台信息,需要构造一个一样的钓鱼网站
更多推荐
所有评论(0)