文章目录
一、确定用户输入入口点
在检查枚举应用程序功能时生成的HTTP请求的过程中,用户输入入口点包括:
-
URL文件路径
通常,在查询字符?
之前的URL部分并不视为用户输入入口,但在REST风格的URL中,查询字符之前的URL部分实际上可作为数据参数。例如:bashhttp://eis/shop/browse/electronics/iphone
其中的
electronics
和iphone
应该被视为数据参数。 -
请求参数
多数情况下,在URL查询字符串、消息主体和HTTP cookie中提交的参数都是明显的用户输入。但是,这些参数可能不使用标准的name=value
格式,而是使用定制方案。如:bash/dir/file;foo=bar&foo2=bar2;
-
HTTP请求头
需要应用程序执行定制的日志功能,并可能记录HTTP请求头(如Referer
和User-Agent
)的内容。
二、确定服务端技术
-
文件扩展名
bashasp------Microsoft Active Server Page aspx------Microsoft ASP.NET jsp------java Server Page php------php语言 ...
-
目录名称
bashservlet------java servlet pls------ Oracle Aplication Server PL/SQL网关
-
会话令牌
bashJSESSIONID------java平台 ASPSESSIONID------Microsoft IIS服务器 ASP.NET------SessionId------Microsoft ASP.NET PHPSESSID------PHP
三、解析受攻击面
bash
1.客户端确认------服务器没有采用确认检查
2.数据库交互------SQL注入
3.文件上传于下载------路径遍历漏洞、存储型XSS、文件上传漏洞
4.显示用户提交的数据------XSS
5.动态重定向------重定向与消息头注入攻击
6.社交网络功能------用户枚举、存储型XSS
7.登录------用户枚举、弱口令、暴力破解
8.多阶段登录------逻辑漏洞、验证绕过
9.会话状态------猜测令牌、令牌处理不安全
10.访问控制------垂直越权和水平越权
11.明文通信------会话劫持、敏感信息泄露
12.站外链接------Referer消息头中查询字符串参数泄露
13.错误信息------信息泄露
14.电子邮件交互------电子邮件与命令注入
15.本地代码1组件或交互------缓冲区溢出
16.使用第三方插件------已知漏洞