《安全测试指南》——授权测试【学习笔记】

【授权测试】
*部分括号内容均为个人理解 。
 
1. 目录遍历 / 文件包含测试(OTG-AUTHZ-001)
 
测试方法
   1)黑盒测试
  
  <输入向量枚举>
  
  ·是否存在用于文件操作的请求参数?
  ·是否有异常的文件扩展名?
  ·是否存在有趣的变量名称?(http://x.com/a/jsp?item=test.html ;http://x.com/a.php?file=content;http://x.com/main.cgi?home=index.htm
  ·是否可以确定web应用通过cookie动态生成页面内容?(cookie: ID = d0eqrq90qweqwe;USER=1929129ad;PSTYTLE=GreenDotRed)
   
  <测试技术>
   
  【对IIS Web服务器请求 /etc/passwd 是毫无意义的
 
  测试实例:
    http://test.com/getUserprofile.jsp?item=../../../../../etc/passwd
  cookie:  
    Cookie: USER=1929129ad;PSTYTLE=../../../etc/passwd
  包含外部网站文件和脚本:
    http://test.com/index.php?file=http://www.owasp.org/malicioustxt
   不使用任何路径遍历字符的情况下,显示CGI组件的源代码:
    http://test.com/main.cgi?home=main.cgi
  main.cgi组件与HTML静态文件处于相同的文件夹。可尝试用特殊字符(“.” dot, "%00"  null)绕过文件扩展名控制。
 
  操作系统路径分隔符
  
  Unix:          root directory:   "/"                                      directory separator:  "/"
  Windows OS Shell:   root directory:   "<drive letter>:\"                directory separator:  "\" or "/"
   Mac OS:        root directory:   "<drive letter>:"                directory separator:  ":
 
  URL 编码和双重URL编码绕过
    ../  →  %2e%2e%2f    、  %2e%2e/    、 ..%2f   
    ..\  →  %2e%2e%5c   、  %2e%2e\   、..%5c  、..%255c
 
   Windows shell中的绕过:
    file.txt...
    file.txt<spaces>    (Windows API:在任意shell命令和api调用中,如果一个字符串被当做文件名解析,periods、spaces将被删除)
    file.txt""""
    file.txt<<<>>><
    ./././file.txt
    nonexistant/../file.txt
 
  Windows UNC:用于引用SMB共享文件。
    \\server_or_ip\path\to\file.abc
    \\?\server_or_ip\path\to\file.abc
 
  Windows NT:索引Windows设备。
    \\.\GLOBALROOT\Device\HarddiskVolume1\
 
  索引设备上的第一个光盘驱动器。
    \\.\CdRom0\
 
   2)灰盒测试
    代码审查:
      PHP:include(),include_once(),require(),require_once(),fopen(),readfile()....
      JSP/Servlet:java.io.File(),java.io.Fo;eReader() ....
      ASP:include file,include virtual....
    对于PHP,测试人员可使用:lang:php (include|require)(_once)?\s*[' " (]?\s*\$_(GET|POST|COOKIE)
    
    代码例子:filename = Request.QueryString("file");
         Replace(filename, "/","\");
         Replace(filename, "..\"," ");
    测试:file=....//....//boot.ini
          file= ....\\....\\boot.ini
          file=..\..\boot.ini
 
  工具:DotDotPwn-The Directory Traversal Fuzzer
     Path Traversal Fuzz Strings
 
 
2. 绕过授权模式测试(OTG-AUTHZ-002)
  测试人员需注意:
    ·即使用户没有获得认证,是否仍然可以访问资源?(未经授权访问)
    ·是否在注销后仍可以访问资源?(会话未失效)
    ·是否可以访问其他角色和特权用户才能访问的功能和资源?(越权)
    ·一个本应被管理功能拒绝的用户角色,是否还能使用这些功能? (越权)
 
测试方法
   <测试管理功能>
     非管理员用户尝试请求:http://test.com/admin/addUser.jsp
  <测试分配给不同角色的资源>
    一个应用使用公共文件夹为不同用户存储临时pdf文件。文件abc.pdf应该仅可被角色A的用户test1访问,测试角色B的用户能否访问该资源?
    (越权调用临时存储的文件)
 
3. 权限提升测试(OTG-AUTHZ-003)(感觉还是有点与002重复了)
 
测试方法
  <角色/特权测试>
  例子1:post参数:groupid=grp001&orderid=00001
      是否可修改groupid和orderid的值来获得该授权数据。
  例子2:响应内容:value=profile
      是否将profile改为sysadmin就可以成为管理员的权限。
  
 
4. 不安全对象引用测试(OTG-AUTHZ-004)
  通过修改用于直接检索对象的参数值,就可绕过授权对资源进行访问。 

测试方法
  <直接用于检索数据库记录的参数> (修改数据id)
    http://test.com/orderlist?order=12345
  <用于在系统执行操作的参数>   (修改用户id)
    http://test.com/changepassword?user=test_1
  <用于检索文件系统资源的参数>  (修改文件id)
    http://test.com/showimage?img=00001
  <用于访问程序功能的参数>    (修改功能菜单参数id)
    http://test.com/accesspage?caidan=12
 
 
 
*本文仅为《安全测试指南4.0》一书的个人学习笔记
posted @ 2025-06-29 16:44  怪盗积德  阅读(12)  评论(0)    收藏  举报