[Ruby]List wsdl actions use for webservice Hacking

简介:

Pnig0s p.s: Last Version

            must use this with Brup suite's enumerate wsdl function~

 

 
  1. require 'rubygems' 
  2. require 'savon' 
  3. require 'nokogiri' 
  4.  
  5.  
  6. class CustomMenuItem 
  7.    
  8.    
  9.   def enum_wsdl(rhost) 
  10.     client = Savon::Client.new("#{rhost}"
  11.     # Comment out the client.http.auth.basic line below if not required. 
  12.     client.http.auth.basic("guest""guest"
  13.     client.http.proxy = "http://127.0.0.1:8080" 
  14.     if (client.respond_to?('wsdl')) and (client.wsdl.respond_to?('soap_actions')) 
  15.       puts("\n\e[1m\e[35m-{*}-\e[0m List of available action(s):" + "\n"
  16.       client.wsdl.soap_actions.each do |action| 
  17.         puts("\n\e[1m\e[32m-{+}-\e[0m #{action}" + "\n")          
  18.       end 
  19.     end        
  20.   rescue => $! 
  21.     puts("\e[1;31m-{-}-\e[0m #{$!}"
  22.   end 
  23.    
  24.   def parse_wsdl(wsdl) 
  25.     wsdl_element_hash = {} 
  26.     doc = Nokogiri::XML(wsdl) 
  27.     msg = doc.xpath("//wsdl:message"
  28.     test_m1 = nil 
  29.     test_m2 = nil 
  30.     msg.each do |m| 
  31.      m1 = m.to_s.match(/name="(.*)Request"/) 
  32.      m2 = m.to_s.match(/name="(.*)" type="(.*)"/) 
  33.      test_m1 = m1.kind_of?(MatchData) ? m1[1] : nil 
  34.      test_m2 = m2.kind_of?(MatchData) ? m2[1] : nil 
  35.       
  36.      if !test_m1.niland !test_m2.nil
  37.          wsdl_element_hash[test_m1] = test_m2 
  38.      end 
  39.     end 
  40.     return wsdl_element_hash 
  41.   end 
  42.    
  43.   def form_request(rhost) 
  44.     client = Savon::Client.new("#{rhost}"
  45.     client.http.auth.basic("guest""guest"
  46.     client.http.proxy = "http://127.0.0.1:8080" 
  47.     # The old version had leveraged a ".to_xml" method versus the more curent ".xml" 
  48.     wsdl = client.wsdl.xml 
  49.     wsdl_hash = parse_wsdl(wsdl) 
  50.     client.wsdl.soap_actions.each {|itm| 
  51.       if wsdl_hash.has_key?(itm.to_s.lower_camelcase) 
  52.         begin 
  53.         k = ":" + "#{itm}" 
  54.         v = ":" + "#{wsdl_hash[itm.to_s.lower_camelcase]}" 
  55.          eval("client.request #{k} do 
  56.           soap.body = { #{v} => 101 } 
  57.          end") 
  58.         rescue 
  59.         end 
  60.     end  
  61.     } 
  62.   end 
  63.    
  64.   def menu_item_clicked(*params) 
  65.     menu_item_caption, message_info = params 
  66.              
  67.     message_info.each do |itm| 
  68.       if menu_item_caption == "enumerate wsdl" 
  69.         enum_wsdl(itm.url) 
  70.       elsif menu_item_caption == "form SOAP request" 
  71.         form_request(itm.url) 
  72.       end   
  73.     end 
  74.   end 
  75.    
  76. end 
  77.  
  78. $burp.registerMenuItem("enumerate wsdl", CustomMenuItem.new
  79. $burp.registerMenuItem("form SOAP request", CustomMenuItem.new

 
















本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/763520,如需转载请自行联系原作者

相关文章
|
7月前
|
XML 网络架构 数据格式
Ruby 教程 之 Ruby Web Service 应用 - SOAP4R 2
Ruby Web Service 应用 - SOAP4R
72 5
|
7月前
|
XML Linux 网络架构
Ruby 教程 之 Ruby Web Service 应用 - SOAP4R 1
Ruby Web Service 应用 - SOAP4R
59 3
web service hacking
 http://www.soapui.org/SOAP-and-WSDL/web-service-hacking.
568 0
|
7月前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
7月前
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
98 0
|
7月前
|
Java 应用服务中间件 Spring
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
166 0
|
7月前
|
Java 应用服务中间件 Spring
WebService - CXF开发Server和Client(main方法测试)
WebService - CXF开发Server和Client(main方法测试)
103 0
|
存储 测试技术
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
138 0
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
|
Java Android开发
哇!eclipse+webservice开发实例居然这样写(有源码可用)
哇!eclipse+webservice开发实例居然这样写(有源码可用)
151 0
哇!eclipse+webservice开发实例居然这样写(有源码可用)
|
XML 存储 测试技术
Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试
Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试
160 0