mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2026-02-10 04:23:12 +08:00
javascript protocol for scripting (includes 15+ proto libs) (#4109)
* rebase js-layer PR from @ice3man543 * package restructuring * working * fix duplicated event & matcher status * fix lint error * fix response field * add new functions * multiple minor improvements * fix incorrect stats in js protocol * sort output metadata in cli * remove temp files * remove dead code * add unit and integration test * fix lint error * add jsdoclint using llm * fix error in test * add js lint using llm * generate docs of libs * llm lint * remove duplicated docs * update generated docs * update prompt in doclint * update docs * temp disable version check test * fix unit test and add retry * fix panic in it * update and move jsdocs * updated jsdocs * update docs * update container platform in test * dir restructure and adding docs * add api_reference and remove markdown docs * fix imports * add javascript design and contribution docs * add js protocol documentation * update integration test and docs * update doc ext mdx->md * minor update to docs * new integration test and more * move go libs and add docs * gen new net docs and more * final docs update * add new devtool * use fastdialer * fix build fail * use fastdialer + network sandbox support * add reserved keyword 'Port' * update Port to new syntax * misc update * always enable templatectx in js protocol * move docs to 'js-proto-docs' repo * remove scrapefuncs binary --------- Co-authored-by: sandeep <8293321+ehsandeep@users.noreply.github.com>
This commit is contained in:
32
integration_tests/protocols/javascript/net-multi-step.yaml
Normal file
32
integration_tests/protocols/javascript/net-multi-step.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
id: network-multi-step
|
||||
info:
|
||||
name: network multi-step
|
||||
author: tarunKoyalwar
|
||||
severity: high
|
||||
description: |
|
||||
Network multi-step template for testing
|
||||
|
||||
|
||||
javascript:
|
||||
- code: |
|
||||
var m = require("nuclei/net");
|
||||
var conn = m.Open("tcp",address);
|
||||
conn.SetTimeout(timeout); // optional timeout
|
||||
conn.Send("FIRST")
|
||||
conn.RecvString(4) // READ 4 bytes i.e PING
|
||||
conn.Send("SECOND")
|
||||
conn.RecvString(4) // READ 4 bytes i.e PONG
|
||||
conn.RecvString(6) // READ 6 bytes i.e NUCLEI
|
||||
|
||||
args:
|
||||
address: "{{Host}}:{{Port}}"
|
||||
Host: "{{Host}}"
|
||||
Port: 5431
|
||||
timeout: 3 # in sec
|
||||
|
||||
matchers:
|
||||
- type: dsl
|
||||
dsl:
|
||||
- success == true
|
||||
- response == "NUCLEI"
|
||||
condition: and
|
||||
43
integration_tests/protocols/javascript/redis-pass-brute.yaml
Normal file
43
integration_tests/protocols/javascript/redis-pass-brute.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
id: redis-pass-brute
|
||||
info:
|
||||
name: redis password bruteforce
|
||||
author: tarunKoyalwar
|
||||
severity: high
|
||||
description: |
|
||||
This template bruteforces passwords for protected redis instances.
|
||||
If redis is not protected with password. it is also matched
|
||||
metadata:
|
||||
shodan-query: product:"redis"
|
||||
|
||||
|
||||
javascript:
|
||||
- pre-condition: |
|
||||
isPortOpen(Host,Port)
|
||||
|
||||
code: |
|
||||
var m = require("nuclei/redis");
|
||||
m.GetServerInfoAuth(Host,Port,Password);
|
||||
|
||||
args:
|
||||
Host: "{{Host}}"
|
||||
Port: "6379"
|
||||
Password: "{{passwords}}"
|
||||
|
||||
payloads:
|
||||
passwords:
|
||||
- ""
|
||||
- root
|
||||
- password
|
||||
- admin
|
||||
- iamadmin
|
||||
stop-at-first-match: true
|
||||
|
||||
matchers-condition: and
|
||||
matchers:
|
||||
- type: word
|
||||
words:
|
||||
- "redis_version"
|
||||
- type: word
|
||||
negative: true
|
||||
words:
|
||||
- "redis_mode:sentinel"
|
||||
@@ -0,0 +1,26 @@
|
||||
id: ssh-server-fingerprint
|
||||
|
||||
info:
|
||||
name: Fingerprint SSH Server Software
|
||||
author: Ice3man543,tarunKoyalwar
|
||||
severity: info
|
||||
metadata:
|
||||
shodan-query: port:22
|
||||
|
||||
|
||||
javascript:
|
||||
- code: |
|
||||
var m = require("nuclei/ssh");
|
||||
var c = m.SSHClient();
|
||||
var response = c.ConnectSSHInfoMode(Host, Port);
|
||||
to_json(response);
|
||||
args:
|
||||
Host: "{{Host}}"
|
||||
Port: "22"
|
||||
|
||||
extractors:
|
||||
- type: json
|
||||
name: server
|
||||
json:
|
||||
- '.ServerID.Raw'
|
||||
part: response
|
||||
Reference in New Issue
Block a user