Automne's Shadow.

CSAW CTF 2018 SSO WriteUp

2018/09/19 Share

Web

automne

打开网址,查看网页源码

automne

进入/protected里查看,返回

Misssing header: Authorization

OAuth2.0协议是一种授权协议,表示一种约定的流程和规范。目前主流的互联网网站除了可以使用“用户名+密码”模式和“手机号+验证码”模式登录外,很多还提供了第三方帐号登录,比如常见的QQ登录、微博登录、百度帐号登录、GitHub登录等。而这些第三方登录方式就是采用了OAuth2.0协议实现。如下图直观显示。

automne

OAuth2.0协议目前已经成为SSO单点登录和用户授权的标准。
具体协议规范和实现方法可参考:
https://tools.ietf.org/html/rfc6749
里面标明了诸如/oath2/authorize和/oath2/token等请求的发送方法。

经查看得知其Authorization Request的发送方式,response_type和client_id是必需的,且response必需为code,而client_id根据题意就是admin。另外redirect_uri一般也是需要的,这里填写最终要查询的/protected网址,即http://web.chal.csaw.io:9000/protected。

automne

并且要求使用"application/x-www-form-urlencoded"格式,根据题意使用POST方法发送请求。准备Burp。

发起/oauth2/authorize请求并抓包发送至Repeater,给出相应的参数。

automne

如此一来,就得到了code的内容:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRfaWQiOiJhZG1pblxyXG5cclxuIiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3dlYi5jaGFsLmNzYXcuaW86OTAwMC9wcm90ZWN0ZWQiLCJpYXQiOjE1MzcyODQyNDgsImV4cCI6MTUzNzI4NDg0OH0.5IzhVwgdktwjoDj4mu9U3Y50OjZzM3eCUXSGCfQAyjc

code的内容其实可以通过base64解密,解密后发现这其实是一个JWT(Json Web Token)字符串。

automne

接下来就是Access Token Request请求的构造。

automne

这里协议里说的很清楚,要求有grant_type/code/redirect_uri/client_id,除了将redirect_uri设置为最后要求证的http://web.chal.csaw.io:9000/protected。
同样在浏览器端发起/oauth2/token请求并burp抓包发送到Repeater,并将请求做相应修改。

automne

在响应中得到token值:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoidXNlciIsInNlY3JldCI6InVmb3VuZG1lISIsImlhdCI6MTUzNzI4NDI2MywiZXhwIjoxNTM3Mjg0ODYzfQ.5BRLhTv810S1ZGGZdBY3jkPmUbCXnFNZoH_lLFavTMo

同样可以base64解密,但是可以看到最后有乱码。

automne

这里有一个比较好用的JWT base64编解码网站:https://jwt.io/
将token的内容复制过去,右边即是解密内容。

automne

得到token后,其实就可以去尝试访问/protected的内容了,查看文档可知,可以在Authorization里使用Bearer token的形式发起GET请求。

automne

如果不改user为admin,将会提示如下:

automne

如果不填写secret的话,将会提示如下:

automne

正确修改方法如下图:

automne

对应的token为:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiYWRtaW4iLCJzZWNyZXQiOiJ1Zm91bmRtZSEiLCJpYXQiOjE1MzcyODQyNjMsImV4cCI6MTUzNzI4NDg2M30.hTXoA7lKV8MEndimn13JF2naTBudr77aftGyqzT1A70

Burp抓包处理,使用上面的token,即可得到flag:

flag{JsonWebTokensaretheeasieststorage-lessdataoptiononthemarket!theyrelyonsupersecureblockchainlevelencryptionfortheirmethods}

automne

注意token的时效性。

挺不错的一道学习OAuth2.0协议使用的题目。

CATALOG