afrog

package module
v2.7.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 12, 2023 License: MIT Imports: 11 Imported by: 0

README

afrog

A Security Tool for Bug Bounty, Pentest and Red Teaming

DownloadWikiPoC

PoC Contributors

Typora-Logo
不动明王
Typora-Logo
雪山
Typora-Logo
White-hua
Typora-Logo
123456
Typora-Logo
ifofor
Typora-Logo
Air
Typora-Logo
执着
Typora-Logo
purple-WL
Typora-Logo
throat
Typora-Logo
Secx
Typora-Logo
冰河
Typora-Logo
Sheen
Typora-Logo
a16
Typora-Logo
A1
Typora-Logo
rainbow2972
Typora-Logo
wuha0926
Typora-Logo
茄子
Typora-Logo
lei_sec
Typora-Logo
G-H-Z
Typora-Logo
wh1te
Typora-Logo
清月
Typora-Logo
york
Typora-Logo
7eleven.eth
Typora-Logo
Double...
Typora-Logo
ICEY_
Typora-Logo
lazy
Typora-Logo
Lay0us
Typora-Logo
m4sk
Typora-Logo
沉默树人
Typora-Logo
陈麻子
Typora-Logo
leonardo-o1
Typora-Logo
江湖人称魏...
Typora-Logo
若兮风
Typora-Logo
-sudo
Typora-Logo
Cuerz
Typora-Logo
laohuan12138
Typora-Logo
exp0l0zzz
Typora-Logo
1derian
Typora-Logo
CMDB-M
Typora-Logo
li1u
Typora-Logo
oxsonder
Typora-Logo
Zhiliao
Typora-Logo
Typora-Logo
HuiTaiL
Typora-Logo
Miracles666
Typora-Logo
Observer

What is afrog

afrog is a high-performance vulnerability scanner that is fast and stable. It supports user-defined PoC and comes with several built-in types, such as CVE, CNVD, default passwords, information disclosure, fingerprint identification, unauthorized access, arbitrary file reading, and command execution. With afrog, network security professionals can quickly validate and remediate vulnerabilities, which helps to enhance their security defense capabilities.

Features

  • Open source
  • Fast, stable, with low false positives
  • Detailed HTML vulnerability reports
  • Customizable and stably updatable PoCs
  • Active community exchange group

Installation

Prerequisites

  • Go version 1.19 or higher.

you can install it with:

Binary

$ https://github.com/monkey92t/afrog/releases

Github

$ git clone https://github.com/monkey92t/afrog.git
$ cd afrog
$ go build cmd/afrog/main.go
$ ./afrog -h

Go

$ go install -v github.com/monkey92t/afrog/cmd/afrog@latest

Running afrog

By default, afrog scans all built-in PoCs, and if it finds any vulnerabilities, it automatically creates an HTML report with the date of the scan as the filename.

afrog -t https://example.com

Warning occurs when running afrog

If you see an error message saying:

[ERR] ceye reverse service not set: /home/afrog/.config/afrog/afrog-config.yaml

it means you need to modify the configuration file.

To execute a custom PoC directory, you can use the following command:

afrog -t https://example.com -P mypocs/

Use the command -s keyword to perform a fuzzy search on all PoCs and scan the search results. Multiple keywords can be used, separated by commas. For example: -s weblogic,jboss.

afrog -t https://example.com -s weblogic,jboss

Use the command -S keyword to scan vulnerabilities based on their severity level. Severity levels include: info, low, medium, high, and critical. For example, to only scan high and critical vulnerabilities, use the command -S high,critical.

afrog -t https://example.com -S high,critical

You can scan multiple URLs at the same time as well.

afrog -T urls.txt

Configuration file

The first time you start afrog, it will automatically create a configuration file called afrog-config.yaml, which will be saved in the current user directory under $HOME/.config/afrog/afrog-config.yaml.

Here is an example config file:

reverse:
  ceye:
    api-key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    domain: "xxxxxx.ceye.io"
  jndi:
    jndi_address: "x.x.x.x"
    ldap_port: "1389"
    api_port: "34567"

reverse is a reverse connection platform used to verify command execution vulnerabilities that cannot be echoed back. Currently, only ceye can be used for verification.

Ceye Configuration

To obtain ceye, follow these steps:

  • Go to the ceye.io website and register an account.
  • Log in and go to the personal settings page.
  • Copy the domain and api-key and correctly configure them in the afrog-config.yaml file.

JNDI Configuration

The JNDI vulnerability refers to security vulnerabilities that exploit the JNDI (Java Naming and Directory Interface) functionality in Java applications. This type of vulnerability can lead to remote code execution or other security issues.

To obtain JNDI, follow these steps:

  • To obtain the source code and compile the JAR file, please visit the official website github.com/r00tSe7en/JNDIMonitor. Alternatively, you can go to the official afrog website afrog/helper/jndi to download the pre-compiled JAR file
  • Upload the JNDIMonitor-2.0.1-SNAPSHOT.jar file to the server (such as a VPS server), and execute the following startup command:
java -jar ./JNDIMonitor-2.0.1-SNAPSHOT.jar -i 0.0.0.0 -l 1389 -p 3456

Below are example methods for writing POCs. Please click to view.

Json Output (For developers)

Json

Optional command: -json -j, Save the scan results to a JSON file. The JSON file includes the following contents by default: target, fulltarget, id, and info. The info field includes the following sub-fields: name, author, severity, description, and reference. If you want to save both request and response contents, please use the -json-all command parameter.

afrog  -t https://example.com -json result.json
afrog  -t https://example.com -j result.json

Warning

The content of the JSON file is updated in real time. However, there is an important note to keep in mind: before the scan is completed, if developers want to parse the file content, they need to add a ']' symbol to the end of the file by themselves, otherwise it will cause parsing errors. Of course, if you wait for the scan to complete before parsing the file, this issue will not occur.

JsonAll

Optional command: -json-all -ja, The only difference between the -json-all and -json commands is that -json-all writes all vulnerability results, including request and response, to a JSON file.

afrog -t https://example.com -json-all result.json
afrog -t https://example.com -ja result.json

Screenshot

As Library

Simple Example

Scan the website http://example.com

package main

import (
	"fmt"

	"github.com/monkey92t/afrog"
)

func main() {
	if err := afrog.NewScanner([]string{"http://example.com"}, afrog.Scanner{}); err != nil {
		fmt.Println(err.Error())
	}
}

More examples:

Discussion group

To join the afrog communication group on WeChat, please first add the afrog personal account and mark it as afrog. Then, you will be added to the group by the administrator.

afrog has joined 404Starlink

Disclaimer

This tool is intended only for legally authorized enterprise security construction purposes. If you want to test the functionality of this tool, you should build a target environment by yourself.

To prevent malicious use, all PoCs included in this project are theoretical assessments of vulnerabilities. The tool does not exploit vulnerabilities, launch real attacks or exploits on targets.

When using this tool for vulnerability scanning, it is important to ensure that your behavior complies with local laws and regulations, and that you have obtained sufficient authorization. Do not scan unauthorized targets.

If you engage in any illegal behavior while using this tool, you will be solely responsible for any corresponding consequences, and we will not bear any legal or joint responsibility.

Before installing and using this tool, please read each clause carefully and thoroughly. Restrictions, disclaimers, or other clauses that may significantly affect your rights and interests may be highlighted in bold or underlined to draw your attention. Unless you have fully read, fully understood, and agreed to all the terms of this agreement, do not install or use this tool. Your use of the tool or your acceptance of this agreement in any other express or implied manner will be deemed as your acknowledgment and agreement to be bound by this agreement.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewScanner

func NewScanner(target []string, opt Scanner) error

Types

type Scanner

type Scanner struct {
	Target             []string
	TargetsFile        string
	PocFile            string
	Output             string
	Json               string
	JsonAll            string
	Search             string
	Silent             bool
	Severity           string
	Update             bool
	DisableUpdateCheck bool
	MonitorTargets     bool
	RateLimit          int
	Concurrency        int
	Retries            int
	MaxHostError       int
	Timeout            int
	Proxy              string
	MaxRespBodySize    int
	DisableOutputHtml  bool

	JndiAddress string
	LdapPort    string
	ApiPort     string
}

func (*Scanner) WithConcurrency

func (s *Scanner) WithConcurrency() int

func (*Scanner) WithDisableOutputHtml

func (s *Scanner) WithDisableOutputHtml() bool

func (*Scanner) WithDisableUpdateCheck

func (s *Scanner) WithDisableUpdateCheck() bool

func (*Scanner) WithJson

func (s *Scanner) WithJson() string

func (*Scanner) WithJsonAll

func (s *Scanner) WithJsonAll() string

func (*Scanner) WithMaxHostError

func (s *Scanner) WithMaxHostError() int

func (*Scanner) WithMaxRespBodySize

func (s *Scanner) WithMaxRespBodySize() int

func (*Scanner) WithMonitorTargets

func (s *Scanner) WithMonitorTargets() bool

func (*Scanner) WithOutput

func (s *Scanner) WithOutput() string

func (*Scanner) WithPocFile

func (s *Scanner) WithPocFile() string

func (*Scanner) WithProxy

func (s *Scanner) WithProxy() string

func (*Scanner) WithRateLimit

func (s *Scanner) WithRateLimit() int

func (*Scanner) WithRetries

func (s *Scanner) WithRetries() int

func (*Scanner) WithSearch

func (s *Scanner) WithSearch() string

func (*Scanner) WithSeverity

func (s *Scanner) WithSeverity() string

func (*Scanner) WithSilent

func (s *Scanner) WithSilent() bool

func (*Scanner) WithTargetsFile

func (s *Scanner) WithTargetsFile() string

func (*Scanner) WithTimeout

func (s *Scanner) WithTimeout() int

func (*Scanner) WithUpdate

func (s *Scanner) WithUpdate() bool

Directories

Path Synopsis
cmd
examples
pkg
log
Package log This is a wrapper for the zap framework no SugerLogger, Only Logger @author: 胖胖的ALEX example:
Package log This is a wrapper for the zap framework no SugerLogger, Only Logger @author: 胖胖的ALEX example:
poc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL