实验室:开发一个定制小工具链用于Java避难所化
专家
该实验室使用基于序列化的会话机制。如果您可以构建合适的小工具链,则可以利用该实验室的不安全的挑战获取管理员的密码。
要解决实验室,请访问源代码并使用它来构建小工具链以获取管理员的密码。然后,登录为行政人员
并删除卡洛斯的帐户。
您可以使用以下凭据登录到自己的帐户:维纳:彼得
请注意,解决该实验室需要与我们在此处介绍的另一个主题的基本熟悉beplay体育能用吗网络安全学院。
暗示
为了节省一些努力,我们提供了通用Java程序,用于序列化对象。您可以调整它以生成适合利用的对象。如果您还没有设置Java环境,则可以使用基于浏览器的IDE来编译和执行程序,例如repl.it
。
解决方案
确定漏洞
- 登录到您自己的帐户,并注意会话Cookie包含一个串行的Java对象。
- 在网站图中,请注意网站引用文件beplay体育能用吗
/backup/accesstokenuser.java
。您可以在Burp Repeater中成功要求此文件。 - 向上导航到
/备份
目录并注意到它还包含一个productTemplate.java
文件。 - 注意
productTemplate.ReadObject()
方法传递模板的ID
将属性归因于SQL语句。 - 基于泄漏的源代码,编写一个小型Java程序,以实例化A
ProductTemplate
使用任意ID,将其序列化,然后base64-对其进行编码。模板
如果您被卡住了,我们还提供了现成的程序您可以运行。如果您正在使用我们的程序,那么您需要更改的只是
“您的付费负载”
字符串在main.java
文件。这实例化并序列化ProductTemplate
与它的ID
设置为您在此处输入的任何有效负载。然后将对象进行基本64编码,然后输出到控制台,准备您复制。 - 使用您的Java程序创建一个
ProductTemplate
与ID
设置为单个撇号。复制base64字符串并将其作为会话cookie提交。错误消息证实该网站容易受到基于Postgres的影响beplay体育能用吗SQL注入通过这个供应对象。
提取密码
确定了此漏洞后,您现在需要找到一种方法来利用它来提取管理员的密码。此时,您有以下测试不同有效载荷的选项:
- 像上一步一样对Java文件进行更改,重新编译,然后再运行,然后再将新值粘贴到会话cookie中。这可能很耗时,因为您必须重复要测试的每个有效负载的所有这些步骤。
- 或者,您可以使用黑客延期。然后,您可以将原始的序列化对象粘贴到Burp Repeater中,并添加标签,以自动更新偏移量并自动编码对象。这使得测试大量有效载荷变得更快,甚至与Burp Intruder兼容。
模板
如果您以前没有使用过黑客,我们提供了以下模板。请注意,这是在此处编码的基础64,以避免复制/粘贴问题:
PEBiYXNlNjRfND6s7QAFc3IAI2RhdGEucHJvZHVjdGNhdGFsb2cuUHJvZHVjdFRlbXBsYXRlAAAAAAAAAAECAAFMAAJpZHQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwdAA8QGZyb21fY2hhcmNvZGVfMz48QGdldF9sZW4gLz48QC9mcm9tX2NoYXJjb2RlXzM+WU9VUi1QQVlMT0FELUhFUkU8QHNldF9sZW4+PEBsZW5ndGhfMD5ZT1VSLVBBWUxPQUQtSEVSRTxAL2xlbmd0aF8wPjxAL3NldF9sZW4+PEAvYmFzZTY0XzQ+
使用此模板:
- 将其复制并粘贴到Burp Repeater中的会话cookie中。
base64-decode it揭示看起来像这样的东西:
<@base64_4>’sr#data.productcatalog.producttemplatemplatelidtljava/lang/string; xpt <@frof_charcode_3> <@get_len/> <@get_len/> <@/frof_charcode_3><@/lentage_0> <@/set_len> <@/base64_4>
- 代替两个都出现
您的付费负载
使用您要测试的有效载荷。留下其他一切。 - 发送请求。如果要检查hackvertor生成的输出,可以查看“ Logger”选项卡上的请求。
有几种提取密码的方法,但是对于此解决方案,我们将执行一个简单,基于错误的方法联盟
攻击。