vuLnDAP Walkthrough
开始时间:2018年8月3日星期五
这是关于我如何完成vuLnDAP挑战的完整演练。可能还有其他多种方法,因此请不要将此视为唯一或最佳方法。如果您有更好的方法,请告诉我。
初始步骤
首先浏览库存控制系统,选择水果并注意URL为:
|
|
这是第一个注入点,您可以指定不同的对象类。您可以尝试猜测或暴力破解有效值,但更简单的方法是使用通配符,对于LDAP来说是*
,这给出以下URL,显示系统中所有对象的列表,包括用户和组。
|
|
目标选择
CEO Fred看起来是个好目标,选择他的账户会提供更多信息,但不多。
检查URL,您会看到以下内容:
|
|
参数disp
是搜索过滤器列表,这些过滤器告诉LDAP查询为指定对象返回哪些字段,任何不存在的字段都会被静默忽略。目前搜索返回库存水平、对象描述和通用名称(cn),这对于库存控制系统是完美的,但对于我们想要提取用户数据来说用处不大。要查看更多信息,您必须指定正确的过滤器。不幸的是,这里没有通配符功能,因此,如果没有更多挖掘,您将不得不猜测字段名称。
深入挖掘
如果您进一步查看,您会注意到返回链接将您带到以下URL,带有新的对象类posixAccount
:
|
|
所以,之前查看水果时对象类是fruit,现在我们查看的对象类是posixAccount,并看到用户列表。谷歌搜索posixAccount和LDAP,您会发现posixAccount是用于描述用户的标准模式,这里有一个来自Linux文档项目的好文章。以下是它提到的四个额外搜索过滤器:
- uidNumber
- gidNumber
- homedirectory
- userpassword
让我们尝试这些:
|
|
获取SSH密钥
这很好,我们得到了Fred的一些详细信息,但不是他的密码,我稍后会回到这一点,但请记住简报还提到了SSH密钥,所以让我们寻找一些。回到谷歌,这次搜索LDAP和SSH密钥。有很多点击,这是一个好文章OpenLDAP中的SSH公钥,但如果您阅读任何文章,您应该发现当您想在LDAP中存储SSH密钥时,您使用sshPublicKey
字段。让我们尝试将其添加到Fred的搜索过滤器中。
|
|
中奖了,我们得到了Fred的公共SSH密钥,但真的,这没什么用,因为它是设计为公开的。检查其他用户呢,这些用户在我们列出所有posixAccount对象时就被列出了。
对于Sue来说没什么有趣的:
但看看我们这里有什么,看起来有人创建我的账户时搞错了,意外地放入了我的私钥:
利用密钥
从这里开始,应该是一个简单的情况,抓取密钥并通过SSH在网络上畅游,享受乐趣。
关于密码的说明
快速退一步,当我们列出搜索过滤器时,我们要求了userpassword但没有得到任何返回,这是因为该字段仅用于身份验证,不幸的是,据我所知,无法检索。
结语
我希望您喜欢这个演练,正如开头所说,这是我第一次涉足LDAP,因此实现和演练可能不完全像现实世界中的那样,但我希望它们足够接近,让您在遇到LDAP时知道要寻找什么,并给您一些进一步实验的想法。任何建设性的反馈都欢迎。
最后一件事,在您使用该密钥向我的盒子扔SSH登录之前,省省力气吧,它是专门为这个项目制作的,如果您仔细看,您很容易就能确认这一点。