Web渗透测试方法论
方法论概要
在此方法论中我们的目标范围仅是一个域名或一个子域名,因此你应当针对你测试范围内的每一个不确定其web服务的域名,子域名或ip进行测试
1.首先确定web服务器所使用的技术,其次如果你成功识别到技术,那么接下来要知道如何
利用检索的信息。
·该技术版本有任何已知的漏洞吗
·使用的是常规的技术吗?有什么有用的技巧以此来检索更多的信息?
·有没有针对某种技术的专用的扫描器可以用?比如wpscan(一种专门用于扫描和识别WordPress网站中的漏洞和安全问题)
2. 利用通用扫描器进行扫描。你永远不知道他们是否会找到一些有趣的信息
3. 检查一些常规的内容:robots.txt,sitemap.xml,404error以及SSL/TLS scan
4. 爬取网页:是时候检查所有可能使用的文件,文件夹,参数了。另外还要检查是否有特殊发现
·只要在爬取或爆破的过程中发现新目录,就应该再对其进行爬取
5. 目录暴力破解:尝试暴力破解所有已经发现的文件夹,搜索新文件和目录
·只要在爆破或爬取过程中发现新目录,就应该对其进行暴力破解
6. 备份检查:向已经发现的文件添加常见的备份扩展名以此检查备份文件
7. 参数暴力破解:尝试找到隐藏的参数
8. 一旦确定了所有可能接受用户输入的点,那么立刻检查与其相关的所有类型的漏洞
代理
如今,web应用程序通常使用某种中间代理,这些代理可能会被滥用以此用来 做漏洞利用。这些漏洞需要一个易受攻击的代理才能被利用,不过它们通常也 需要后端有一些额外的漏洞。
·滥用逐跳标头
·缓存中毒与缓存欺骗
·HTTP请求走私与HTTP异步攻击
·HTTP2明文传输走私(H2C)
·服务端包含/边缘端包含注入
·揭秘cloudflare
·XSLT(可扩展样式语言表)服务器端注入
用户输入
大多数web应用程序将允许用户输入一些稍后处理的数据。根据服务器预 期的数据结构,某些漏洞可能被利用也可能不被利用。
·反射的值:如果引入的数据可能以某种方式反射在响应中,则该页面可能容易受 到多个问题的影响,其中一些提到的漏洞需要特殊条件,另一些则只需要反射内容。
·客户端模板注入(CSTI)
·命令注入
·CRLF(%0D%0A)注入
·悬空标记
·文件包含和目录遍历
·开放重定向
·XSS原型污染
·服务器端包含/边缘端包含注入
·服务器端请求伪造
·服务器端模板注入
·反向标签抓取
·XSLT(可扩展样式语言表)服务器端注入
·XSS跨站脚本
·XSSI跨站脚本包含
·XS-搜索/XS-泄漏
·搜索功能:如果该功能可以用于在后端内部搜索某种数据,那么您可能可以(滥 用)它来搜索任意数据。
·文件包含/目录遍历
·NOSQL注入
·SQL注入
·LDAP注入
·ReDos(正则表达式拒绝服务)
·XPATH注入
·表单,WebSockets和Post请求数据:当 Websocket 发布用户可以执行操作的 消息或表单时,可能会出现漏洞。
·CSRF跨站请求伪造
·CSWSH 跨站websocket劫持
·POSTMessage漏洞
·HTTP标头:根据web服务器给出的一些标头可能存在一些漏洞。
·点击劫持
·内容安全策略绕过
·Cookie Hacking
·CORS-错误配置和绕过
·旁路绕过:有几个特定的功能,一些解决方法可能有助于绕过它们
·2FA/OTP(双因子密码/一次性密码)绕过
·绕过付款流程
·验证码绕过
·登录绕过
·竞争条件
·速率限制绕过
·重置忘记密码绕过
·注册漏洞
·结构化对象/特殊功能:某些功能需要以非常特定的格式构建数据(例如一种语 言序列化对象或 XML)。 因此,可以更轻松地识别应用程序是否容易受到攻击, 因为它需要处理此类数据。如果使用特定格式的输入(例如电子邮件标头注入),某些特定功能也可能容易受 到攻击。
·反序列化
·邮件标头注入
·JWT(Json Web Tokens)漏洞
·XXE(XML External Entity)XML外部实体
·文件:允许上传文件的功能可能容易受到多个问题的影响。利用用户输入生成的 文件其中很有可能存在恶意代码。打开用户上传的文件或后台自动生成的文件都有 可能对普通用户造成威胁
·文件上传
·公式注入
·PDF注入
·服务器端XSS
·外部身份管理
·OAUTH到帐户接管
·SAML攻击
·其他有用的漏洞:这些漏洞可能有助于你利用其他漏洞。
·域或子域接管
·IDOR
·参数污染
·Unicode规范化漏洞
基础信息
web服务是最常见并且应用最广泛的服务,其存在许多不同类型的漏洞
默认的服务端口是80(HTTP),443(HTTPS)
查看默认端口开放情况:
nc -v domain.com 80
openssl s_client -connect domain.com:443
服务器版本(判断是否易受攻击)
确认服务器版本并进行漏洞检索
检查正在运行的服务器版本是否存在已知漏洞。
响应的 HTTP 标头和 cookie 对于识别所使用的技术和/或版本非常有用。 Nmap 扫描可以识别服务器版本,但也可以使用 Whatweb、webtech 或 https://builtwith.com/ 工具
·版本检测
whatweb -a 1 <URL> #隐秘的扫描
whatweb -a 3 <URL> #攻击性的扫描
webtech -u <URL>
webanalyze -host https://google.com -crawl 2
·漏洞检测
·浏览器
Google hacking: <服务名称>【版本】漏洞利用 <service_name> [version] exploit
您还应该尝试从 https://exploits.shodan.io/ 进行 shodan 漏洞利用搜索。
·searchsploit
用于从终端搜索exploitdb 中的服务漏洞利用的搜索工具
#Searchsploit 技巧
searchsploit "linux Kernel" #例子
searchsploit apache mod_ssl #其他的例子
searchsploit -m 7618 #将漏洞粘贴到当前目录中
searchsploit -p 7618[.c] #显示完整路径
searchsploit -x 7618[.c] #打开 vi 检查漏洞利用
searchsploit --nmap file.xml #在 nmap xml 结果中搜索漏洞
·pompem
https://github.com/rfunix/Pompe