mirror of
https://github.com/yogeshojha/rengine.git
synced 2026-09-18 15:57:44 +02:00
466 lines
21 KiB
HTML
466 lines
21 KiB
HTML
{% extends 'base/base.html' %}
|
|
{% load static %}
|
|
{% load humanize %}
|
|
{% load custom_tags %}
|
|
{% load mathfilters %}
|
|
{% block title %}
|
|
Target Summary for {{target.domain_name}}
|
|
{% endblock title %}
|
|
|
|
{% block custom_js_css_link %}
|
|
<link rel="stylesheet" type="text/css" href="{% static 'plugins/table/datatable/datatables.css' %}">
|
|
<link rel="stylesheet" type="text/css" href="{% static 'assets/css/forms/theme-checkbox-radio.css' %}">
|
|
<link rel="stylesheet" type="text/css" href="{% static 'plugins/table/datatable/dt-global_style.css' %}">
|
|
<link rel="stylesheet" type="text/css" href="{% static 'plugins/table/datatable/custom_dt_custom.css' %}">
|
|
<link rel="stylesheet" type="text/css" href="{% static 'assets/css/custom.css' %}">
|
|
<link href="{% static 'assets/css/dashboard/dash_1.css' %}" rel="stylesheet" type="text/css" />
|
|
<link href="{% static 'assets/css/components/custom-modal.css' %}" rel="stylesheet" type="text/css" />
|
|
<link href="{% static 'assets/css/elements/custom-tree_view.css' %}" rel="stylesheet" type="text/css" />
|
|
<link href="{% static 'plugins/lightbox/css/lightbox.css' %}" rel="stylesheet" />
|
|
<link href="{% static 'plugins/apex/apexcharts.css' %}" rel="stylesheet" type="text/css">
|
|
<link href="{% static 'assets/css/components/tabs-accordian/custom-accordions.css' %}" rel="stylesheet" type="text/css" />
|
|
<script src="{% static 'custom/custom.js' %}"></script>
|
|
{% endblock custom_js_css_link %}
|
|
|
|
{% block breadcrumb_title %}
|
|
Target Summary for {{target.domain_name}}
|
|
{% endblock breadcrumb_title %}
|
|
|
|
|
|
{% block main_content %}
|
|
<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12 layout-px-spacing">
|
|
<div class="row layout-top-spacing">
|
|
<div class="col-xl-3 col-lg-3 col-md-6 col-sm-6 col-12 mt-2">
|
|
<div class="widget widget-one_hybrid">
|
|
<div class="widget-heading">
|
|
<div class="w-icon text-info">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-globe">
|
|
<circle cx="12" cy="12" r="10"></circle>
|
|
<line x1="2" y1="12" x2="22" y2="12"></line>
|
|
<path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path>
|
|
</svg>
|
|
</div>
|
|
|
|
<h2 class="text-warning">{{scan_count}}</h2>
|
|
<h6 class="">Total Scans</h6>
|
|
</div>
|
|
<div class="widget-content">
|
|
<div class="icon-container">
|
|
<span class="icon-name"> <b>{{this_week_scan_count}}</b> Scans this week</span>
|
|
</div>
|
|
<br>
|
|
<a data-toggle="modal" data-target="#exampleModal" class="text-info">View all Scans</a>
|
|
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="exampleModalLabel">Scans initiated for {{target.domain_name}}</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-x"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="widget-table-two">
|
|
<div class="widget-content">
|
|
<div class="table-responsive">
|
|
<table class="table table-striped table-bordered table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th><div class="th-content">Scan Type</div></th>
|
|
<th><div class="th-content">Last Scanned on</div></th>
|
|
<th><div class="th-content">Status</div></th>
|
|
<th><div class="text-center">Scan Result</div></th>
|
|
<th> </th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for scan in scan_history %}
|
|
<tr>
|
|
<td>{{scan.scan_type}}</td>
|
|
<td>{{scan.last_scan_date}}</td>
|
|
<td class="text-center">
|
|
{% if scan.scan_status == -1 %}
|
|
<span class="shadow-none badge badge-warning bs-tooltip" data-placement="top" title="Waiting for other scans to complete">{% include 'base/_items/progress_spin.html' %}Pending</span>
|
|
{% elif scan.scan_status == 0 %}
|
|
<span class="shadow-none badge badge-danger">Failed</span>
|
|
{% elif scan.scan_status == 1 %}
|
|
<span class="shadow-none badge badge-primary">{% include 'base/_items/progress_spin.html' %}Scanning</span>
|
|
{% elif scan.scan_status == 2 %}
|
|
<span class="shadow-none badge badge-success p-2">Successful</span>
|
|
{% elif scan.scan_status == 3 %}
|
|
<span class="shadow-none badge badge-danger">Aborted</span>
|
|
{% else %}
|
|
<span class="shadow-none badge badge-danger">Unknown</span>
|
|
{% endif %}
|
|
</td>
|
|
<td class="text-center">
|
|
<span class="badge badge-pills badge-info bs-tooltip" title="Subdomains">{{scan.get_subdomain_count}}</span>
|
|
<span class="badge badge-pills badge-warning bs-tooltip" title="Endpoints">{{scan.get_endpoint_count}}</span>
|
|
<span class="badge badge-pills badge-danger bs-tooltip" title="Vulnerabilities">{{scan.get_vulnerability_count}}</span>
|
|
</td>
|
|
<td class="text-center">
|
|
<a href="{% url 'detail_scan' scan.id %}" class="text-info">View More...</a>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-xl-3 col-lg-3 col-md-6 col-sm-6 col-12 mt-2">
|
|
<div class="widget widget-one_hybrid">
|
|
<div class="widget-heading">
|
|
<div class="w-icon text-info">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-compass">
|
|
<circle cx="12" cy="12" r="10"></circle><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"></polygon>
|
|
</svg>
|
|
</div>
|
|
|
|
<h2 class="text-warning">{{subdomain_count}}</h2>
|
|
<h6 class="">Unique Subdomains</h6>
|
|
</div>
|
|
<div class="widget-content">
|
|
<div class="icon-container">
|
|
{% if subdomain_difference > 0 %}
|
|
{% include 'base/_items/up_arrow.html' %}
|
|
<span class="icon-name bs-tooltip" title="{{subdomain_difference}} more subdomains discovered on the last scan"> {{subdomain_difference}} Subdomains</span>
|
|
{% elif subdomain_difference < 0 %}
|
|
{% include 'base/_items/down_arrow.html' %}
|
|
<span class="icon-name bs-tooltip" title="{{subdomain_difference|abs}} less subdomains discovered on the last scan"> {{subdomain_difference|abs}} Subdomains</span>
|
|
{% else %}
|
|
|
|
{% endif %}
|
|
</div>
|
|
<br>
|
|
<a href="#" class="text-info">View all Subdomains</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-xl-3 col-lg-3 col-md-6 col-sm-6 col-12 mt-2">
|
|
<div class="widget widget-one_hybrid">
|
|
<div class="widget-heading">
|
|
<div class="w-icon text-info">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
|
|
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path>
|
|
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
|
|
</svg>
|
|
</div>
|
|
|
|
<h2 class="text-warning">{{endpoint_count}}</h2>
|
|
<h6 class="">Unique Endpoints</h6>
|
|
</div>
|
|
<div class="widget-content">
|
|
<div class="icon-container">
|
|
{% if endpoint_difference > 0 %}
|
|
{% include 'base/_items/up_arrow.html' %}
|
|
<span class="icon-name bs-tooltip" title="{{endpoint_difference}} more endpoints discovered on the last scan"> {{endpoint_difference}} Endpoints</span>
|
|
{% elif endpoint_difference < 0 %}
|
|
<span class="icon-name bs-tooltip" title="{{endpoint_difference|abs}} less endpoints discovered on the last scan"> {{endpoint_difference|abs}} Endpoints</span>
|
|
{% include 'base/_items/down_arrow.html' %}
|
|
{% else %}
|
|
|
|
{% endif %}
|
|
</div>
|
|
<br>
|
|
<a href="#" class="text-info">View all Endpoints</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-xl-3 col-lg-3 col-md-6 col-sm-6 col-12 mt-2">
|
|
<div class="widget widget-one_hybrid">
|
|
<div class="widget-heading">
|
|
<div class="w-icon text-danger">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-shield-off">
|
|
<path d="M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18"></path>
|
|
<path d="M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38">
|
|
</path>
|
|
<line x1="1" y1="1" x2="23" y2="23">
|
|
</line>
|
|
</svg>
|
|
</div>
|
|
|
|
<h2 class="text-danger">{{vulnerability_count}}</h2>
|
|
<h6 class="">Vulnerabilities</h6>
|
|
</div>
|
|
<div class="widget-content">
|
|
<div class="icon-container">
|
|
{% if vulnerability_difference > 0 %}
|
|
{% include 'base/_items/up_arrow.html' %}
|
|
<span class="icon-name bs-tooltip" title="{{vulnerability_difference}} more Vulnerabilities discovered on the last scan"> {{vulnerability_difference}} Vulnerabilities</span>
|
|
{% elif vulnerability_difference < 0 %}
|
|
{% include 'base/_items/down_arrow.html' %}
|
|
<span class="icon-name bs-tooltip" title="{{vulnerability_difference|abs}} less Vulnerabilities discovered on the last scan"> {{vulnerability_difference|abs}} Vulnerabilities</span>
|
|
{% else %}
|
|
|
|
{% endif %}
|
|
</div>
|
|
<br>
|
|
<a href="#" class="text-info">View all Vulnerabilities</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row layout-top-spacing">
|
|
<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12 layout-spacing">
|
|
<div class="widget widget-table-one">
|
|
<div class="widget-heading">
|
|
<h6 class="">Recent Scans</h6>
|
|
</div>
|
|
<div class="widget-content">
|
|
{% for item in recent_scans %}
|
|
<div class="transactions-list">
|
|
<a href="{% url 'detail_scan' item.id %}">
|
|
<div class="t-item">
|
|
<div class="t-company-name">
|
|
<div class="t-icon">
|
|
<div class="icon">
|
|
{% if item.scan_status == 1 %}
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-zap"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
|
|
{% elif item.scan_status == 2 %}
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check-circle"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
|
|
{% else %}
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-circle"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="t-name">
|
|
<h4>{{item.domain_name}}</h4>
|
|
<p class="meta-date">{{item.last_scan_date|naturaltime}}</p>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="t-rate">
|
|
{% if item.scan_status == -1 %}
|
|
<span class="shadow-none badge badge-warning">{% include 'base/_items/progress_spin.html' %}Pending</span>
|
|
{% elif item.scan_status == 0 %}
|
|
<span class="shadow-none badge badge-danger">Failed</span>
|
|
{% elif item.scan_status == 1 %}
|
|
<span class="shadow-none badge badge-info">{% include 'base/_items/progress_spin.html' %}Scanning</span>
|
|
{% elif item.scan_status == 2 %}
|
|
<span class="shadow-none badge badge-success">Successful</span>
|
|
{% elif item.scan_status == 3 %}
|
|
<span class="shadow-none badge badge-danger">Aborted</span>
|
|
{% else %}
|
|
<span class="shadow-none badge badge-danger">Unknown</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
{% empty %}
|
|
<div class="alert alert-arrow-left alert-icon-left alert-light-warning mb-4" role="alert">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-circle"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12" y2="16"></line></svg>
|
|
Please wait for the scans to be completed, if any, or You may also initiate the scan
|
|
<a href="{% url 'list_target' %}" class='text-info'>from here.</a>
|
|
</strong>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% include 'base/_items/interesting_recon.html' %}
|
|
<div class="row layout-spacing">
|
|
{% if info_count > 0 or low_count > 0 or medium_count > 0 or high_count > 0 or critical_count > 0 %}
|
|
<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12 layout-spacing">
|
|
<div class="widget widget-chart-two">
|
|
<div class="widget-heading">
|
|
<div class="row">
|
|
<div class="col-6">
|
|
<h6 class=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-shield-off text-danger">
|
|
<path d="M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18"></path>
|
|
<path d="M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38">
|
|
</path>
|
|
<line x1="1" y1="1" x2="23" y2="23">
|
|
</line>
|
|
</svg> Vulnerability Scan Summary</h6>
|
|
</div>
|
|
<div class="col-6">
|
|
<span class="float-right"><a href="{% url 'all_vulns' %}" class="text-info">View all vulnerabilities</a></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="widget-content">
|
|
<div class="row">
|
|
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-12 layout-spacing">
|
|
<h6 class="text-info text-center">Vulnerability Breakdown by Severity</h6>
|
|
<div id="vulnerability-chart" class=""></div>
|
|
</div>
|
|
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-12">
|
|
<h6 class="text-danger text-center">Most Common Vulnerabilities</h6>
|
|
<div class="table-responsive">
|
|
<table class="table table-hover table-light">
|
|
<tbody>
|
|
<thead>
|
|
<th>Vulnerability Name</th>
|
|
<th class="text-center">Count</th>
|
|
<th>Severity</th>
|
|
</thead>
|
|
{% for item in most_common_vulnerability %}
|
|
<tr onclick="window.location='start_scan/detail/vuln?query={{item.name}}';" style="cursor: pointer;">
|
|
<td>{{item.name}}</td>
|
|
<td class="text-center">
|
|
{{item.count}}
|
|
</td>
|
|
<td>
|
|
<div class="t-rate">
|
|
{% if item.severity == 0 %}
|
|
<span class='badge badge-info'>Info</span>
|
|
{% elif item.severity == 1 %}
|
|
<span class='badge badge-low'>Low</span>
|
|
{% elif item.severity == 2 %}
|
|
<span class='badge badge-warning'>Medium</span>
|
|
{% elif item.severity == 3 %}
|
|
<span class='badge badge-danger'>High</span>
|
|
{% elif item.severity == 4 %}
|
|
<span class='badge badge-critical'>Critical</span>
|
|
{% endif %}
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{% empty %}
|
|
Not enough data
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
<small class="text-muted float-right mr-3">*Informational vulnerabilities are ignored.</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endblock main_content %}
|
|
|
|
|
|
{% block page_level_script %}
|
|
<script src="{% static 'plugins/table/datatable/datatables.js' %}"></script>
|
|
<script src="{% static 'plugins/lightbox/js/lightbox.js' %}"></script>
|
|
<script src="{% static 'plugins/apex/apexchart.min.js' %}"></script>
|
|
<script src="{% static 'assets/js/dashboard/dash_1.js' %}"></script>
|
|
<script src="{% static 'assets/js/ui-accordions.js' %}"></script>
|
|
<script src="{% static 'custom/custom.js' %}"></script>
|
|
<script src="//cdn.datatables.net/1.10.16/js/dataTables.bootstrap4.min.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
// Collapse Sidebar
|
|
collapse_sidebar();
|
|
// apex charts for vulnerability summary
|
|
var options = {
|
|
chart: {
|
|
type: 'donut',
|
|
width: 380
|
|
},
|
|
colors: ['#D50000', '#F44336', '#FF6D00', '#FFD600', '#2962FF'],
|
|
dataLabels: {
|
|
enabled: false
|
|
},
|
|
legend: {
|
|
position: 'bottom',
|
|
horizontalAlign: 'center',
|
|
fontSize: '14px',
|
|
markers: {
|
|
width: 10,
|
|
height: 10,
|
|
},
|
|
itemMargin: {
|
|
horizontal: 0,
|
|
vertical: 8
|
|
}
|
|
},
|
|
plotOptions: {
|
|
pie: {
|
|
donut: {
|
|
size: '70%',
|
|
background: 'transparent',
|
|
labels: {
|
|
show: true,
|
|
name: {
|
|
show: true,
|
|
fontSize: '29px',
|
|
fontFamily: 'Nunito, sans-serif',
|
|
color: undefined,
|
|
offsetY: -10
|
|
},
|
|
value: {
|
|
show: true,
|
|
fontSize: '26px',
|
|
fontFamily: 'Nunito, sans-serif',
|
|
color: '20',
|
|
offsetY: 16,
|
|
formatter: function (val) {
|
|
return val
|
|
}
|
|
},
|
|
total: {
|
|
show: true,
|
|
showAlways: true,
|
|
label: 'Total',
|
|
color: '#888ea8',
|
|
formatter: function (w) {
|
|
return w.globals.seriesTotals.reduce( function(a, b) {
|
|
return a + b
|
|
}, 0)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
stroke: {
|
|
show: true,
|
|
width: 25,
|
|
},
|
|
series: [{{critical_count}}, {{high_count}}, {{medium_count}}, {{low_count}}, {{info_count}}],
|
|
labels: ['Critical', 'High', 'Medium', 'Low', 'Info'],
|
|
responsive: [{
|
|
breakpoint: 1599,
|
|
options: {
|
|
chart: {
|
|
width: '350px',
|
|
height: '400px'
|
|
},
|
|
legend: {
|
|
position: 'bottom'
|
|
}
|
|
},
|
|
breakpoint: 1439,
|
|
options: {
|
|
chart: {
|
|
width: '250px',
|
|
height: '390px'
|
|
},
|
|
legend: {
|
|
position: 'bottom'
|
|
},
|
|
plotOptions: {
|
|
pie: {
|
|
donut: {
|
|
size: '65%',
|
|
}
|
|
}
|
|
}
|
|
},
|
|
}]
|
|
}
|
|
var chart = new ApexCharts(
|
|
document.querySelector("#vulnerability-chart"),
|
|
options
|
|
);
|
|
|
|
chart.render();
|
|
</script>
|
|
|
|
{% endblock page_level_script %}
|