WebService常规测试点

发表于:2020-11-10 09:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Samzhang1    来源:博客园

分享:
  很多人误以为 Web Service没有界面,黑客就无法进行攻击。事实上,Web service通常仅是对现有应用层功能进行了封装,其后台应用层代码如果存在安全漏洞,我们完全可以使用 Web service进行攻击。绝大多数情况下,我们可以通过查看WSDL 从而了解 Web Service可以提供的操作及 SOAP 消息格式,所以说,Web中所面临的安全威胁同样存在于 Web Service中。   
  Web Service的漏洞分类可以分为2种:
  1、Web 应用安全漏洞:
  sql注入
  xss攻击
  命令执行
  越权
  LDAP注入
  缓冲区溢出
  逻辑漏洞
  等等
  2、XML 相关的特殊安全漏洞:
  1)、sql注入
  Web Service中的SQL注入(SQLi)漏洞与普通Web渗透测试中漏洞并无区别
  2)、XPath注入
  XPath 作为用来查询 XML 数据的语言,同样容易存在很多注入漏洞。某种程度来说,XPath 注入比 SQL 注入更简单,因为不同数据库产品的 SQL 语句有不同的语法,而XPath 只有一个标准。我们假定某 Web 服务后台采用了这段代码来查询某 XML 数据文件中的记录  
  存在注入漏洞的 XPath 查询
  Stmt = "//users/user[username/text()='" + username+ "' and password/text()='"
  其中 username 和 password 是通过 SOAP 消息进行传输,如下文:
 传递 XPath 查询参数的 SOAP 消息片段
  <soap:Envelope xmlns:soap="">
  <soap:Body>
  <fn:PerformFunction xmlns:fn="">
  <fn:uid>testuser</fn:uid>
  <fn:password>testpassword</fn:password>
  </fn:PerformFunction>
  </soap:Body>
  </soap:Envelope>
  假如黑客利用 SOAP 传入 username="admin", password="' or '1'='1",以上 XPath 查询就变为:
  遭注入的 XPath 查询1Stmt="//users/user[username/text()='admin' and password/te
  这样我们可以访问到 admin 用户信息。   
  3、拒绝服务攻击
  由于 Web 服务基于 XML 格式的协议进行通信(例如 SOAP 消息)。当 SOAP 消息到达Web 服务器段时,服务器端会调用 XML Parser 解析 XML 数据(包括 DTD 声明),黑客可以利用大量的超大消息体或者递归的 XML 实体声明,让服务器端长时间解析 XML 数据,直至服务器资源耗竭,从而形成拒绝访问攻击,导致 Web 服务停止服务。   
  例如,SOAP 消息中可以加入以下大量无意义的实体声明,导致 SOAP 消息解析缓慢。
  SOAP 消息中无意义的实体声明示例
  <!DOCTYPE root [<!ENTITY ha "Ha !"><!ENTITY ha2 "&ha; &ha;"><!ENTITY ha3 "&ha2; &ha2;">...<!ENTITY ha127 "&ha126; &ha126;"><!ENTITY ha128 "&ha127; &ha127;">]>
  4、信息泄
  某些 Web 服务会返回客户端指定的资源信息时,如果服务器端防范不当,则可能存在信息泄漏隐患。举个简单的类似 HelloWorld 的例子,假设某个 Web 服务会接受用户传来
  的名字“Jeremy”,然后返回“Hello, Jeremy!”。但,如果黑客传入如下参数:
  SOAP 消息中声明外部文件引用:
  <!DOCTYPE root [<!ENTITY myfile SYSTEM "file://c:/windows/win.ini">]>...<name>&myfile;</name>
  服务器端如果疏于参数校验及文件访问权限控制,该 Web 服务可能返回系统文件的内容。  
  5、使用soap ui+burp对Web Service渗透测试
  我们可以对Web Service方法的具体参数进行Fuzz测试,挖掘其中存在的各种技术漏洞和逻辑漏洞。也可以使用一些专业工具对常见的Web Service进行渗透测试。
  WebScarap
  SoapUI
  WCFStorm
  SOA Cleaner
  WSDigger
  wsScanner
  Wfuzz
  RESTClient
  BurpSuite
  WS-Attacker
  ZAP
  Metasploit
  WSDL Analyze
  一般我们是使用burp和SoapUI联动进行对web sevice渗透测试。通过SoapUI访问WebService,并将请求转发给BurpSuite。
  SoapUI NG Pro:渗透测试流程的发起,通信报文的解析、集合payload之后通信报文的重新组装等。
  Burp Suite:代理拦截,跟踪通信过程和结果,对通信进行重放和二次处理等。
  首先启动SoapUI软件,然后设置代理。  
   
   填入burp的代理IP
   
   创建一个新的SOAP工程。在“Initial WSDL”一栏填入WSDL地址:
   
   导入成功,SoapUI对给定的WSDL地址进行解析,以创建Web Service函数及请求
   
   接下来我们创建一个Generate TestSuite
   
  创建好了Generate TestSuite后,我们再来对其中一个接口来创建一个new SecurityTest.
  例如:我们对 AddCustomerNew TestCase接口进行SecurityTest(安全测试  
   
  Empty 空测试
  Automatic 默认安全测试,这个会默认对webservice 接口加载soapui中的所有测试模块。
  Full Control 可以自行选择测试模块
   
  我们来看看soapui中有哪些测试模块。
    
  选择好要使用的测试模块好,我们就可以使用soapui执行自动测试。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号