diff --git a/reNgine/tasks.py b/reNgine/tasks.py index 82926249..69181ca5 100644 --- a/reNgine/tasks.py +++ b/reNgine/tasks.py @@ -1260,7 +1260,7 @@ def get_and_save_meta_info(meta_dict): meta_finder_document.scan_history = meta_dict.scan_id item = DottedDict(results[meta]) - meta_finder_document.http_url = item.url + meta_finder_document.url = item.url meta_finder_document.name = meta meta_finder_document.http_status = item.status_code diff --git a/startScan/api/serializers.py b/startScan/api/serializers.py index e8ff8c84..10a9576f 100644 --- a/startScan/api/serializers.py +++ b/startScan/api/serializers.py @@ -48,6 +48,7 @@ class MetafinderDocumentSerializer(serializers.ModelSerializer): class Meta: model = MetaFinderDocument fields = '__all__' + depth = 1 class MetafinderUserSerializer(serializers.ModelSerializer): diff --git a/startScan/api/urls.py b/startScan/api/urls.py index 94d7e143..0e5507c5 100644 --- a/startScan/api/urls.py +++ b/startScan/api/urls.py @@ -30,7 +30,8 @@ urlpatterns = [ path('queryPorts/', ListPorts.as_view(), name='listPorts'), path('queryIps/', ListIPs.as_view(), name='listIPs'), path('querySubdomains/', ListSubdomains.as_view(), name='querySubdomains'), - path('queryOsintUsers/', ListOsintUsers.as_view(), name='querySubdomains'), + path('queryOsintUsers/', ListOsintUsers.as_view(), name='queryOsintUsers'), + path('queryMetadata/', ListMetadata.as_view(), name='queryMetadata'), ] urlpatterns += router.urls diff --git a/startScan/api/views.py b/startScan/api/views.py index 15954093..fecc2058 100644 --- a/startScan/api/views.py +++ b/startScan/api/views.py @@ -103,6 +103,17 @@ class ListOsintUsers(APIView): serializer = MetafinderUserSerializer(documents, many=True) return Response({"users": serializer.data}) + +class ListMetadata(APIView): + def get(self, request, format=None): + req = self.request + scan_id = req.query_params.get('scan_id') + if scan_id: + documents = MetaFinderDocument.objects.filter(scan_history__id=scan_id).distinct() + serializer = MetafinderDocumentSerializer(documents, many=True) + return Response({"metadata": serializer.data}) + + class ListIPs(APIView): def get(self, request, format=None): req = self.request diff --git a/startScan/templates/startScan/detail_scan.html b/startScan/templates/startScan/detail_scan.html index 6794784a..48e3f1a3 100644 --- a/startScan/templates/startScan/detail_scan.html +++ b/startScan/templates/startScan/detail_scan.html @@ -569,11 +569,11 @@ Detailed Scan Results for {{history.domain.name}}
-
+
-
OSINT: Meta Info Gathered
+
Discovered Metadata
@@ -664,743 +619,747 @@ Detailed Scan Results for {{history.domain.name}}
- {# modal #} - {% include 'base/_items/tab_modal.html' %} +
+{# modal #} +{% include 'base/_items/tab_modal.html' %} - {% endblock main_content %} +{% endblock main_content %} - {% block page_level_script %} - - - - - - - - - +{% block page_level_script %} + + + + + + + + + - +{% if history.fetch_url and history.used_gf_patterns %} +// gf patterns +{% for pattern in history.used_gf_patterns|split:"," %} +$("#pills-{{pattern}}-tab").click(function() { + get_endpoints({{scan_history_id}}, '{{pattern}}'); +}); +{% endfor %} +{% endif %} - {% endblock page_level_script %} + + +{% endblock page_level_script %} diff --git a/static/custom/custom.js b/static/custom/custom.js index 2949e04e..a9c7b041 100644 --- a/static/custom/custom.js +++ b/static/custom/custom.js @@ -1012,8 +1012,8 @@ function get_screenshot(scan_id){ ip_address = ips[ip]['address']; filter_values += 'ip_' + ip_address + ' '; if (ip_array.indexOf(ip_address) === -1){ - ip_array.push(ip_address); - } + ip_array.push(ip_address); + } ports = ips[ip]['ports']; for(var port in ports){ @@ -1022,13 +1022,13 @@ function get_screenshot(scan_id){ filter_values += 'port_' + port_number + ' '; if (port_array.indexOf(port_number) === -1){ - port_array.push(port_number); - } + port_array.push(port_number); + } filter_values += 'service_' + service_name + ' '; if (service_array.indexOf(service_name) === -1){ - service_array.push(service_name); - } + service_array.push(service_name); + } } } @@ -1197,3 +1197,38 @@ function fullScreenDiv(id, btn){ fullscreen.setAttribute("style","overflow:auto"); } + +function get_randid(){ + return '_' + Math.random().toString(36).substr(2, 9); +} + +function get_metadata(scan_id){ + $.getJSON(`../api/queryMetadata/?scan_id=${scan_id}&format=json`, function(data) { + $('#metadata-count').empty(); + for (var val in data['metadata']){ + doc = data['metadata'][val]; + rand_id = get_randid(); + $('#metadata-table-body').append(``); + file_name = `${truncate(doc['name'], 30)}`; + subdomain = `${doc['subdomain']['name']}`; + $(`#${rand_id}`).append(`${file_name}
${subdomain}`); + if (doc['author']){ + $(`#${rand_id}`).append(`${doc['author']}`); + } + else{ + $(`#${rand_id}`).append('') + } + if (doc['producer'] || doc['creator'] || doc['os']) { + metadata = '' + metadata += doc['producer'] ? 'Software: ' + doc['producer'] : '' + metadata += doc['creator'] ? '/' + doc['creator'] : '' + metadata += doc['os'] ? '
OS: ' + doc['os'] + '': '' + $(`#${rand_id}`).append(`${metadata}`); + } + else{ + $(`#${rand_id}`).append('') + } + } + $('#metadata-count').html(`${data['metadata'].length}`); + }); +} diff --git a/templates/base/base.html b/templates/base/base.html index b7a26428..b732f11f 100644 --- a/templates/base/base.html +++ b/templates/base/base.html @@ -80,7 +80,10 @@
- +