失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Web 应用程序渗透测试清单

Web 应用程序渗透测试清单

时间:2021-09-13 19:16:47

相关推荐

Web 应用程序渗透测试清单

侦察阶段

识别 Web 服务器、技术和数据库子公司和收购枚举反向查找ASN & IP 空间枚举和服务枚举谷歌多金Github 侦察目录枚举IP 范围枚举JS文件分析子域枚举和暴力破解子域接管参数模糊测试端口扫描基于模板的扫描(核)回程历史断链劫持互联网搜索引擎发现云存储配置错误

注册功能测试

检查重复注册/覆盖现有用户检查弱密码策略检查重用现有用户名检查电子邮件验证过程是否不足注册实施薄弱 - 允许一次性电子邮件地址弱注册实现-Over HTTP通过特制的用户名注册覆盖默认 Web 应用程序页面。=> 注册后,您的个人资料链接是否显示为/tushar?

一种。如果是这样,请枚举 Web 应用程序的默认文件夹,例如 /images、/contact、/portfolio

湾。使用用户名(例如图片、联系人、投资组合)进行注册

C。检查这些默认文件夹是否已被您的个人资料链接覆盖。”

会话管理测试

从应用程序中的批量 cookie 中识别实际会话 cookie使用一些标准的解码算法如 Base64、hex、URL 等解码 cookie将 cookie.session 令牌值修改 1 位/字节。然后重新提交并对所有令牌执行相同的操作。减少您需要执行的工作量,以识别令牌的哪些部分实际正在使用,哪些部分未使用如果自助注册可用并且您可以选择您的用户名,请使用一系列相似的用户名登录,其中包含它们之间的细微变化,例如 A、AA、AAA、AAAA、AAAB、AAAC、AABA 等。如果在登录时提交了其他用户特定数据或存储在用户配置文件中(例如电子邮件地址)检查会话 cookie 和 cookie 过期日期/时间识别 cookie 域范围检查 cookie 中的 HttpOnly 标志如果应用程序通过 SSL,请检查 cookie 中的安全标志检查会话固定,即身份验证前后会话 cookie 的值从不同的有效 IP 地址或系统重放会话 cookie 以检查服务器是否保持机器的状态检查通过不同机器/IP的并发登录检查是否有任何用户相关信息存储在cookie值中如果是,则篡改其他用户的数据未能使会话无效(电子邮件更改,2FA 激活)

认证测试

用户名枚举

在用户名和密码字段上使用各种 SQL 注入绕过身份验证

缺少密码确认

更改电子邮件地址更改密码管理 2FA

是否可以在没有身份验证的情况下使用资源?访问冲突

检查用户凭据是否通过 SSL 传输

弱登录功能 HTTP 和 HTTPS 均可用

在蛮力攻击中测试用户帐户锁定机制

变化:如果服务器阻止即时用户请求,则尝试使用入侵者的时间限制选项并再次重复该过程。

通过篡改用户代理到移动用户代理绕过速率限制通过将用户代理篡改为匿名用户代理来绕过速率限制使用空字节绕过速率限制

使用 cewl 命令创建密码单词表

测试 Oauth 登录功能

OAuth 角色 资源所有者 → 用户资源服务器 → Twitter客户端应用程序 →授权服务器 → Twitterclient_id → Twitterdeck ID(这是一个公开的、非秘密的唯一标识符_client_secret → Twitter 和 Twitterdeck 已知用于生成 access_tokens 的 Secret Tokenresponse_type → 定义令牌类型,例如(代码、令牌等)范围 → Twitterdeck 想要的请求访问级别redirect_uri → 授权完成后用户重定向到的URLstate → OAuth 中的主要 CSRF 保护可以在用户被定向到授权服务器和再次返回之间持久保存数据grant_type → 定义 grant_type 和返回的令牌类型代码 → twitter 生成的授权代码,类似于 ?code= ,该代码与 client_id 和 client_secret 一起使用以获取 access_tokenaccess_token → twitterdeck 用来代表用户发出 API 请求的令牌refresh_token → 允许应用程序在不提示用户的情况下获取新的 access_token代码缺陷 重复使用代码代码预测/蛮力和速率限制应用 X 的代码对应用 Y 有效吗?Redirect_uri 缺陷 URL 根本没有经过验证:?redirect_uri=允许子域(子域接管或在这些子域上打开重定向):?redirect_uri=主机已验证,路径不是 链打开重定向):?redirect_uri=/callback?redirectUrl=主机已验证,路径未验证(Referer 泄漏):在 HTML 页面上包含外部内容并通过Referer 泄漏代码弱正则表达式在主机之后暴力破解 URL 编码字符:redirect_uri=§FUZZ§在主机之后(或在任何白名单打开重定向过滤器上)暴力破解关键字白名单:?redirect_uri=https://§FUZZ§.comURI 验证到位:使用典型的开放式重定向负载状态缺陷 缺少状态参数?(CSRF)可预测的状态参数?是否正在验证状态参数?杂项 client_secret 是否经过验证?Pre ATO 使用 facebook 电话号码注册没有电子邮件验证 Pre ATO

测试 2FA 错误配置

响应操纵状态码操纵2FA代码泄漏响应2FA 代码可重用性缺乏蛮力保护缺少 2FA 代码完整性验证使用 null 或 000000

我的帐户(登录后)测试

查找使用活动帐户用户 ID 的参数。尝试篡改它以更改其他帐户的详细信息创建仅与用户帐户相关的功能列表。更改电子邮件更改密码 - 更改帐户详细信息(姓名、号码、地址等)尝试 CSRF登录后更改电子邮件 ID 并使用任何现有电子邮件 ID 进行更新。检查它是否在服务器端得到验证。应用程序是否向新用户发送任何新的电子邮件确认链接?如果用户在某个时间范围内没有确认链接怎么办?在新选项卡中打开个人资料图片并检查 URL。查找电子邮件 ID/用户 ID 信息。EXIF 地理位置数据未从上传的图像中删除。检查帐户删除选项(如果应用程序提供)并通过忘记密码功能确认更改电子邮件 ID、帐户 ID、用户 ID 参数并尝试暴力破解其他用户的密码检查应用程序是否重新进行身份验证以执行身份验证后功能的敏感操作

忘记密码测试

未能在注销和密码重置时使会话无效检查是否忘记密码重置链接/代码唯一性如果用户在一定时间内未使用重置链接,则检查重置链接是否过期查找用户账户标识参数并篡改Id或参数值以更改其他用户的密码检查弱密码策略弱密码重置实现Token使用后不失效如果重置链接有另一个参数,例如日期和时间,那么。更改日期和时间值以使重置链接有效且有效检查是否询问了安全问题?允许猜测多少?–> 锁定政策是否维持?在新密码和确认密码中只添加空格。然后回车看看结果忘记密码手续完成后是否在同一页面显示旧密码?要求两个密码重置链接并使用用户电子邮件中的旧链接检查更改密码后活动会话是否被破坏?弱密码重置实施 通过 HTTP 发送的密码重置令牌发送连续忘记密码请求,以便它可以发送顺序令牌

联系我们 表格测试

是否在联系我们表单上实施了验证码以限制电子邮件泛滥攻击?它允许在服务器上上传文件吗?盲 XSS

产品购买测试

立即购买 篡改产品ID以低奖购买其他高价值产品篡改产品数据以增加相同奖品的数量礼品券 篡改请求中的礼物/优惠券数量(如果有)以增加/减少要使用的优惠券/礼物的数量篡改礼品/代金券价值以增加/减少代金券的货币价值。(例如 100 美元作为代金券,篡改价值以增加,减少金钱)通过在参数篡改中使用旧的礼品值来重用礼品/优惠券检查礼品/优惠券参数的唯一性并尝试猜测其他礼品/优惠券代码使用参数污染技术通过在 BurpSuite 请求中再次添加相同的参数名称和值来添加相同的凭证两次从购物车添加/删除产品 篡改用户 ID 以从其他用户的购物车中删除产品篡改购物车 ID 以从其他用户的购物车中添加/删除产品识别购物车 ID/用户 ID 以查看其他用户帐户中添加的商品地址 篡改 BurpSuite 请求将其他用户的送货地址更改为您的通过在送货地址上添加 XSS 向量来尝试存储的 XSS使用参数污染技术添加两个送货地址,而不是试图操纵应用程序在两个送货地址上发送相同的物品下订单 篡改付款选项参数以更改付款方式。例如,考虑某些商品不能以货到付款方式订购,但从借记卡/贷记卡/PayPal/网上银行选项篡改请求参数到货到付款可能允许您为该特定商品下订单在每个主请求和子请求和响应中篡改用于支付操作的金额值检查 CVV 是否以明文形式进行检查应用程序本身是否处理您的卡详细信息然后执行交易,或者它是否调用任何第三方支付处理公司来执行交易跟踪订单 通过猜测订单跟踪号来跟踪其他用户的订单蛮力追踪号码前缀或后缀以追踪其他用户的批量订单愿望清单页面测试 检查用户 A 是否可以在其他用户 B 的帐户的愿望清单中添加/远程产品检查用户 A 是否可以从他/她(用户 A 的)愿望清单部分将产品添加到用户 B 的购物车中。产品购买后测试 检查用户A是否可以取消用户B购买的订单检查用户 A 是否可以查看/检查用户 B 已下的订单检查用户A是否可以修改用户B下订单的收货地址带外测试 用户可以订购缺货的产品吗?

银行应用测试

计费活动 检查用户“A”是否可以查看用户“B”的帐户对帐单检查用户“A”是否可以查看用户“B”的交易报告检查用户“A”是否可以查看用户“B”的摘要报告检查用户“A”是否可以代表用户“B”通过电子邮件注册每月/每周帐户对帐单检查用户“A”是否可以更新用户“B”的现有电子邮件 ID 以检索每月/每周帐户摘要存款/贷款/关联/外部账户检查 检查用户“A”是否可以查看用户“B”的存款账户摘要检查存款账户的账户余额篡改扣税查询测试 检查用户 'A' 的客户 id 'a' 是否可以通过篡改客户 id 'b' 来查看用户 'B' 的减税详情增减利率、利息金额、退税检查参数篡改检查用户“A”是否可以下载用户“B”的 TDS 详细信息检查用户“A”是否可以代表用户“B”请求支票簿。定期存款账户测试 检查用户“A”是否可以代表用户“B”开立 FD 账户检查用户是否可以开立比当前账户余额更多的FD账户根据支票/日期范围停止付款 用户'A'可以通过支票号码停止用户'B'的付款吗用户“A”能否根据用户“B”的日期范围停止付款状态查询测试 用户'A'可以查看用户'B'的状态查询吗用户'A'可以修改用户'B'的状态查询吗用户'A'可以从他自己的帐户中代表用户'B'发帖和查询吗资金转移测试 是否可以将资金从用户“A”转移到用户“C”而不是用户“B”,而用户“A”的目的是从用户“A”转移到用户“B”转账金额可以被操纵吗?用户'A'是否可以使用他/她自己的帐户通过参数操作来修改用户'B'的收款人列表是否可以在用户 'A' 自己的帐户或用户 'B' 的帐户中添加收款人而无需任何适当的验证安排传输测试 用户“A”可以查看用户“B”的日程转移吗用户“A”能否更改用户“B”的日程转移详情通过 NEFT 进行资金转账测试 通过 NEFT 转账进行金额操作检查用户“A”是否可以查看用户“B”的 NEFT 转账详细信息测试账单支付 检查用户是否可以在没有任何检查员批准的情况下注册收款人检查用户“A”是否可以查看用户“B”的待付款检查用户“A”是否可以查看用户“B”的付款详情

打开重定向测试

常用注射参数

/{payload}?next={payload}?url={payload}?target={payload}?rurl={payload}?dest={payload}?destination={payload}?redir={payload}?redirect_uri={payload}?redirect_url={payload}?redirect={payload}/redirect/{payload}/cgi-bin/redirect.cgi?{payload}/out/{payload}/out?{payload}?view={payload}/login?to={payload}?image_url={payload}?go={payload}?return={payload}?returnTo={payload}?return_to={payload}?checkout_url={payload}?continue={payload}?return_path={payload}

使用 burp 'find' 选项来查找 URL、red、redirect、redir、origin、redirect_uri、target 等参数

检查这些可能包含 URL 的参数的值

将 URL 值更改为并检查是否被重定向

尝试单斜杠和 url 编码

使用列入白名单的域或关键字

使用 // 绕过 http 黑名单关键字

使用 https: 绕过 // 黑名单关键字

使用 \ 绕过 // 黑名单关键字

使用 // 绕过 // 黑名单关键字

使用空字节 %00 绕过黑名单过滤器

使用°符号绕过

主机头注入

提供任意 Host 标头检查有缺陷的验证发送模棱两可的请求 注入重复的主机头提供绝对 URL添加换行注入主机覆盖标头

SQL注入测试

入口点检测

简单字符多重编码合并字符逻辑测试奇怪的字符

使用 SQLmap 识别漏洞参数

在浏览器GUI中填写表单正常提交转到 burpsuite 中的历史记录选项卡并找到相关请求右键单击并选择“复制到文件”选项将文件另存为 anyname.txt要运行的 SQLmap 命令pythonsqlmap.pyr ~/Desktop/textsqli.txt 代理=http://127.0.0.1:8080

对所有请求运行 SQL 注入扫描程序

绕过WAF

在 SQL 查询之前使用空字节使用 SQL 内联注释序列网址编码更改大小写(大写/小写)使用 SQLMAP 篡改脚本

时间延迟

Oracle dbms_pipe.receive_message(('a'),10)Microsoft WAITFOR DELAY '0:0:10'PostgreSQL SELECT pg_sleep(10)MySQL SELECT sleep(10)

有条件的延误

Oracle SELECT CASE WHEN (YOUR-CONDITION-HERE) THEN 'a'||dbms_pipe.receive_message(('a'),10) ELSE NULL END FROM dualMicrosoft IF (YOUR-CONDITION-HERE) WAITFOR DELAY '0:0:10'PostgreSQL SELECT CASE WHEN (YOUR-CONDITION-HERE) THEN pg_sleep(10) ELSE pg_sleep(0) ENDMySQL SELECT IF(YOUR-CONDITION-HERE,sleep(10),'a')

跨站脚本测试

使用 theinfosecguy 的 QuickXSS 工具尝试 XSS使用 '“> .txt上传文件如果脚本标签被禁止,请使用

和其他 HTML 标签

如果输出作为任何变量的值反映在 JavaScript 中,只需使用 alert(1)如果“被过滤,则使用此有效负载 />使用图像文件上传 JavaScript执行 JS 负载的不寻常方法是将方法从 POST 更改为 GET。它有时会绕过过滤器标记属性值 输入登陆 -<input type=”text” name=”state” value=”INPUT_FROM_USER”>要插入的有效负载 -“ οnfοcus=”alert(document.cookie)”语法编码有效负载“%3cscript%3ealert(document.cookie)%3c/script%3e”XSS 过滤器规避 < 和 > 可以替换为 html 实体 < 和 >你可以试试 XSSpolyglot。例如/*-><svg/οnlοad='+/“/+/οnmοuseοver=1/+/[*/[]/+alert(1)//'>XSS 防火墙绕过 检查防火墙是否仅阻止小写尝试用新行打破防火墙正则表达式(\r\n)尝试双重编码测试递归过滤器注入没有空格的锚标记尝试使用 Bullet 绕过空格尝试更改请求方法

CSRF 测试

CSRF 令牌的验证取决于请求方法CSRF 令牌的验证取决于令牌的存在CSRF 令牌不绑定到用户会话CSRF 令牌绑定到非会话 cookieReferer 的验证取决于是否存在标头

SSO 漏洞

如果将您重定向到 SSO,例如 ,请在上执行 FUZZ如果/internal将您重定向到 SSO,例如 Google 登录,请尝试在 internal 之前插入 public,例如/public/internal以获得内部访问权限尝试使用令牌制作 SAML 请求并将其发送到服务器并弄清楚服务器如何与之交互如果令牌请求中有 AssertionConsumerServiceURL 尝试插入您的域,例如作为窃取令牌的值如果令牌请求中有 AssertionConsumerServiceURL 尝试对 AssertionConsumerServiceURL 的值进行 FUZZ 如果它与 Origin 不相似如果有任何 UUID,请尝试将其更改为受害者攻击者的 UUID,例如内部员工或管理员帐户的电子邮件等尝试找出服务器是否容易受到 XML 签名包装的影响?尝试弄清楚服务器是否检查签名者的身份?尝试在 SAML 响应的顶部注入 XXE 有效负载尝试将 XSLT 有效负载作为 SAML 响应的子节点注入到 Transforms 元素中如果受害者可以接受由为攻击者提供服务的同一身份提供者颁发的令牌,那么您可以接管受害者帐户在测试 SSO 时尝试在 Burp Suite 中搜索关于 Cookie 标头中的 URL,例如 Host=IP;如果有尝试将IP更改为您的IP以获取SSRF

XML 注入测试

将内容类型更改为 text/xml 然后插入下面的代码。通过中继器检查

<?xml version="1.0" encoding="ISO 8859 1"?><!DOCTYPE tushar [<!ELEMENT tushar ANY<!ENTITY xxe SYSTEM "file:///etc/passwd" >]><tushar>&xxe;</<!ENTITY xxe SYSTEM "file:///etc/hosts" >]><tushar>&xxe;</<!ENTITY xxe SYSTEM "file:///proc/self/cmdline" >]><tushar>&xxe;</<!ENTITY xxe SYSTEM "file:///proc/version" >]><tushar>&xxe;</

带外交互的盲 XXE

跨域资源共享 (CORS)

解析 Origin 标头时出错列入白名单的 null 原始值

服务器端请求伪造 (SSRF)

常用注射参数

"access=","admin=","dbg=","debug=","edit=","grant=","test=","alter=","clone=","create=","delete=","disable=","enable=","exec=","execute=","load=","make=","modify=","rename=","reset=","shell=","toggle=","adm=","root=","cfg=","dest=","redirect=","uri=","path=","continue=","url=","window=","next=","data=","reference=","site=","html=","val=","validate=","domain=","callback=","return=","page=","feed=","host=","port=","to=","out=","view=","dir=","show=","navigation=","open=","file=","document=","folder=","pg=","php_path=","style=","doc=","img=","filename="

尝试基本的本地主机负载

绕过过滤器

使用 HTTPS 绕过用 [::] 绕过使用域重定向绕过使用十进制 IP 位置绕过使用 IPv6/IPv4 地址嵌入绕过使用格式错误的 url 绕过使用稀有地址绕过(通过删除零的速记 IP 地址)使用封闭的字母数字绕过

云实例

AWS

<http://instance-data><http://169.254.169.254><http://169.254.169.254/latest/user-data><http://169.254.169.254/latest/user-data/iam/security-credentials/>[ROLE NAME]<http://169.254.169.254/latest/meta-data/><http://169.254.169.254/latest/meta-data/iam/security-credentials/>[ROLE NAME]<http://169.254.169.254/latest/meta-data/iam/security-credentials/PhotonInstance><http://169.254.169.254/latest/meta-data/ami-id><http://169.254.169.254/latest/meta-data/reservation-id><http://169.254.169.254/latest/meta-data/hostname><http://169.254.169.254/latest/meta-data/public-keys/><http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key><http://169.254.169.254/latest/meta-data/public-keys/[ID]/openssh-key><http://169.254.169.254/latest/meta-data/iam/security-credentials/dummy><http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access><http://169.254.169.254/latest/dynamic/instance-identity/document>

谷歌云

<http://169.254.169.254/computeMetadata/v1/><http://metadata.google.internal/computeMetadata/v1/><http://metadata/computeMetadata/v1/><http://metadata.google.internal/computeMetadata/v1/instance/hostname><http://metadata.google.internal/computeMetadata/v1/instance/id><http://metadata.google.internal/computeMetadata/v1/project/project-id>

Digital Ocean

curl <http://169.254.169.254/metadata/v1/id><http://169.254.169.254/metadata/v1.json><http://169.254.169.254/metadata/v1/><http://169.254.169.254/metadata/v1/id><http://169.254.169.254/metadata/v1/user-data><http://169.254.169.254/metadata/v1/hostname><http://169.254.169.254/metadata/v1/region><http://169.254.169.254/metadata/v1/interfaces/public/0/ipv6/address>

Azure

<http://169.254.169.254/metadata/v1/maintenance><http://169.254.169.254/metadata/instance?api-version=-04-02><http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=-04-02&format=text>

通过开放重定向绕过

文件上传测试

将恶意文件上传到存档上传功能并观察应用程序如何响应上传文件并更改其路径以覆盖现有系统文件大文件拒绝服务元数据泄露ImageMagick 库攻击像素泛滥攻击绕过 空字节 (%00) 绕过内容类型绕过魔术字节绕过客户端验证绕过黑名单分机绕过同形字符绕过

验证码测试

缺少验证码字段完整性检查HTTP 动词操作内容类型转换可重复使用的验证码检查是否可以使用绝对路径检索验证码,例如/internal/captcha/images/24.png检查 CAPTCHA 的服务器端验证。使用 firebug 插件从 GUI 中删除验证码块并向服务器提交请求检查是否可以使用 OCR 工具完成图像识别?

JWT 令牌测试

暴力破解密钥使用“无”算法签署新令牌更改令牌的签名算法(用于模糊测试)将非对称签名令牌签名到其对称算法匹配(当您拥有原始公钥时)

Websockets 测试

拦截和修改 WebSocket 消息Web 套接字 MITM 尝试测试秘密标头 websocketwebsockets中的内容窃取websockets中的令牌认证测试

GraphQL 漏洞测试

不一致的授权检查缺少自定义标量的验证未能适当地限制速率自省查询启用/禁用

WordPress 常见漏洞

wordpress 中的 XSPAwp-login.php 中的暴力破解信息披露wordpress用户名备份文件 wp-config 暴露暴露的日志文件通过 load-styles.php 拒绝服务通过 load-scripts.php 拒绝服务DDOS 使用 xmlrpc.php

拒绝服务

饼干炸弹像素泛滥,使用具有巨大像素的图像帧泛滥,使用带有巨大帧的 GIFReDoS(正则表达式 DoS)CPDoS(缓存中毒拒绝服务)

其他测试用例(所有类别)

检查安全标头,至少 X 框架选项X-XSS 标头HSTS 标头CSP 标头推荐人政策缓存控制公钥引脚角色授权测试 检查普通用户是否可以访问高权限用户的资源?强制浏览不安全的直接对象引用参数篡改将用户帐户切换为高权限用户盲操作系统命令注入 使用时间延迟通过重定向输出带外交互带外数据泄露CSV 导出时的命令注入(上传/下载)CSV Excel 宏注入如果找到 phpinfo.php 文件,请检查配置泄漏并尝试利用任何网络漏洞。参数污染社交媒体分享按钮破解密码学 密码学实现缺陷加密信息泄露用于加密的弱密码网络服务测试 测试目录遍历Web 服务文档披露服务、数据类型、输入类型边界和限制的枚举

如果觉得《Web 应用程序渗透测试清单》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。