元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过ServiceMetadataBehavior实现了基于WS-MEX和HTTP-GET的元数据发布,针对这两种不同的协议,元数据获取的实现方式也是不同的 图1 通过IE显示获取的元数据(以WS-MEX方式发布) 二、 基于HTTP-GET的元数据获取 上面我们通过自定的方式成功获取了服务端以WS-MEX方式发布的元数据,现在我们来是实现基于HTTP-GET 既然服务端采用了基于HTTP-GET的元数据发布方式,那么就意味着我们可以通过简单的HTTP请求的方式获取相应的元数据资源。 通过两种方式获取的元数据本质上是相同的,不过可能细心的读者已经发现了:与上面的例子(WS-MEX)获取的MetadataSet不同,通过HTTP-GET获取的MetadataSet仅仅包含一个元数据方言 图2 通过IE显示获取的元数据(以HTTP-GET方式发布)
操作案例 从请求http-get响应数据中匹配随机数num的值,然后创建请求get-num来引用num的作为请求参数。 设置步骤: 选中请求——添加——后置处理器——正则表达式提取器 根据http-get的响应,提取返回值中的num 配置如下: ? 相关资料:正则表达式教程 新建一个请求get-num,在新的请求中将http-get返回的数据作为参数传递,如下图所示: ?
/teamserver [ip address] [password] [profile] 0x02 编写配置文件 1、定义事务指标 http-get { # 指标 } http-post { # 指标 } 2、控制客户端和服务端指标 http-get { client { # 指标 } server { # 指标 } }
基于HTTP-GET的元数据发布方式与基于WS-MEX原理类似,但是ServiceMetadataBehavior需要做的更多额外的工作。 图1 WCF服务端分发体系 但是如果采用HTTP-GET模式,实际上我们需要从ChannelDispatcher开始,重新构建整个分发体系。 首先创建绑定对象,该绑定由两个绑定元素构成:TextMessageEncodingBindingElement和HttpTransportBindingElement,这些因为元数据请求消息就是单纯的HTTP-GET 然后,我们在ServiceMetadataBehaviorAttribute添加两个属性:HttpGetEnabled和HttpGetUrl,前者表示是否采用基于HTTP-GET的元数据发布模式,后者指定元数据发布的地址
hydra IP ftp -l 用户名 -P 密码字典 -e ns -vV get方式提交,破解web登录: # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns IP http-get /admin/ # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f IP http-get /admin/index.php post方式提交,破解web登录: hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV get方式提交,破解web登录: # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/ # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php post方式提交,破解web登录:
JsonRequestBehavior 14: { 15: AllowGet, 16: DenyGet 17: } 出于对安全的考虑,JsonResult在默认的情况下不能作为对HTTP-GET 我们可以通过它的JsonRequestBehavior属性开启JsonResult对HTTP-GET请求的支持。 该属性类型为JsonRequestBehavior枚举,两个枚举项AllowGet和DenyGet分别表示允许/拒绝支持对HTTP-GET请求的响应。 JsonResult的JsonRequestBehavior属性在初始化的时候被设置为DenyGet,如果我们需要用创建的JsonResult来响应HTTP-GET请求,需要显式地将它的JsonRequestBehavior public override void ExecuteResult(ControllerContext context) 5: { 6: //确认是否用于响应HTTP-GET
[INFO] 19:21:42: [REQUEST] GET /jquery-3.3.1.min.js [INFO] 19:21:42: == Valid malleable http-get request 5543 [INFO] 19:21:45: [REQUEST] GET /jquery-3.3.1.min.js [INFO] 19:21:45: == Valid malleable http-get : 212 [INFO] 19:24:48: [REQUEST] GET /jquery-3.3.1.min.js [INFO] 19:24:48: == Valid malleable http-get
是一个支持多种网络服务的非常快速的网络登陆破解工具;支持AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET vV hydra IP ftp -l 用户名 -P 密码字典 -e ns -vV get方式提交,破解web登录: hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns IP http-get /admin/ hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f IP http-get /admin/index.php post方式提交,破解web登录: 该软件的强大之处就在于支持多种协议的破解
thc-hydra,可支持AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV 3、get方式提交,破解web登录: hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/ hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php 4、post方式提交,破解web登录: hydra
支持如下协议: Asterisk,AFP,CiscoAAA,Ciscoauth,Ciscoenable,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST, HTTP-GET ) -vV hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV get方式提交,破解web登录 hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/ hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php post方式提交,破解web登录 该软件的强大之处就在于支持多种协议的破解
JsonRequestBehavior 14: { 15: AllowGet, 16: DenyGet 17: } 出于对安全的考虑,JsonResult在默认的情况下不能作为对HTTP-GET 我们可以通过它的JsonRequestBehavior属性开启JsonResult对HTTP-GET请求的支持。 该属性类型为JsonRequestBehavior枚举,两个枚举项AllowGet和DenyGet分别表示允许/拒绝支持对HTTP-GET请求的响应。 JsonResult的JsonRequestBehavior属性在初始化的时候被设置为DenyGet,如果我们需要用创建的JsonResult来响应HTTP-GET请求,需要显式地将它的JsonRequestBehavior public override void ExecuteResult(ControllerContext context) 5: { 6: //确认是否用于响应HTTP-GET
元数据发布的实现者:ServiceMetadataBehavior ServiceMetadataBehavior是一个实现了IServiceBehavior的服务行为,它实现了基于如下两种协议的元数据发布模式: HTTP-GET MetadataExporter MetadataExporter { get; set; } 22: } ServiceMetadataBehavior定义了一系列的属性用于控制具体的元数据发布行为,其中绝大部分是基于HTTP-GET ExternalMetadataLocation表示返回给客户端的一个外部元数据地址,可以是绝对地址,也可以是基于HttpGetUrl或者HttpsGetUrl表述的相对地址;基于HTTP-GET的元数据发布同时支持 14: </system.serviceModel> 15: </configuration> 下一篇中,我们将会讨论ServiceMetadataBehavior在内部是如何实现基于HTTP-GET
创建profile: 一般基本的profile一般包括以下基本部分: 公共配置 https证书(可选) http-get client metadata 流量特征 语法如下: http-get { client { metadata { } } server { output { } } } http-post output { } } } http-stager { client { } server { output { } } } 待码块按 HTTP 请求分为 http-get win_svc"; ### TCP Beacon set tcp_port "1337"; # TCP beacon listen port ### HTTP-GET http-get { set uri "/search/"; client { header "Host" "www.bing.com"; header
的最新版本为Hydra 7.6,它支持AFP、Cisco AAA、Cisco auth、Cisco enable、CVS、Firebird、FTP、uHTTP-FORM-GET、HTTP-FORM- POST、HTTP-GET 3.GET方式提交,破解Web登录 hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/ hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php 4.POST方式提交,破解Web登录 (1)hydra -l 用户名 -P 密码字典 -s 80 ip http-post-form
supports: AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV get方式提交,破解web登录: # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/ # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php post方式提交,破解web登录
Beacon与teamserver端c2的通信逻辑: 1.stager的beacon会先下载完整的payload执行 2.beacon进入睡眠状态,结束睡眠状态后用 http-get方式 发送一个metadata (具体发送细节可以在malleable_profie文件里的http-get模块进行自定义),metadata内容大概是目标系统的版本,当前用户等信息给teamserver端 。 http-get模块: ? 如上图所示。设定了victim的beacon发送给c2的metadata的相关配置。 http-get&http-post http-get 和 http-post 修改格式和上面基本类似 ? ? 这里 都是伪造成 jquery.com的流量。 测试验证: .
元数据发布:将导出的MetadataSet对象转换为可被寻址的元数据资源,通过相关的协议发布出来,WS-MEX和HTTP-GET是两种常见的协议,元数据的发布通过System.ServiceModel.Description.ServiceMetadataBehavior 元数据获取:通过相关协议(WS-MEX或者HTTP-GET)获取发布出来的元数据资源,并转换成MetadataSet对象。
, ex);
38 }
39 }
其中引用的 httpManager.Get() 方法如下:
///
设置步骤:选中一个请求,如http-get,然后右键选择:添加——断言——响应断言。
(只看profile里的http-get和http-post部分的配置即可) 配置Get的header和burp代理(方便查看调试) 配置Post请求相关信息 4.尝试运行.