AssassinGo

August 23, 2024 · View on GitHub

Rawsec's CyberSecurity Inventory MIT License

AssassinGo

AssassinGo is an extensible and concurrency information gathering and vulnerability scanning framework, with WebSocket based Web GUI.

Just for learn, welcome PR.

Features

  • Retrieve Security Headers
  • Bypass CloudFlare
  • Detect CMS Version
  • Honeypot Detect
  • Port Scan
  • Trace Route and Mark on Google Map
  • Subdomain Scan
  • Dir Scan and Site Map
  • Whois Lookup
  • Crawl the Paramed URLs
  • Basic SQLi Check
  • Basic XSS Check
  • Intruder
  • SSH Bruter
  • Google-Hacking with Headless-Chrome
  • Friendly PoC Interface
  • Web GUI(using WebSocket)
  • Generate Report

Installation

localhost

git clone https://github.com/AmyangXYZ/AssassinGo
cd AssassinGo
docker-compose up --build -d
cat backup.sql | docker exec -i assassingo_mariadb_1 /usr/bin/mariadb -uag --password=password ag

Then visit http://127.0.0.1:8000 and login as admin:admin

VPS

If you want to deploy on your VPS, please clone the Frontend and modify the base_url of AJAX and WebSocket, then run npm run build and copy the output to web/ directory as deploy.sh says.

Remember to add your google-map key in index.html.

Demo

base

traceroute

subdomain

intruder

seek

poc

Outline Design

I choose Composite Pattern to increase expansibility.

design-pattern

API

AJAX

PathMethodFuncParamsReturn
/tokenPOSTsign inusername=admin&password=adminn{SG_Token:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1M…W4ifQ.qY-k5f54CrQ6_dNdjgQgqjh5xS8iFZOjTLcfMfirY0w" (stored in cookie)}
/api/targetPOSTset a targettarget=xxx OR targets=t1,t2...nil
/api/info/basicGETget ip and retrieve security headersnil{data:{"ip": "192.168.1.1", "webserver": "nginx","click_jacking_protection":true,"content_security_policy":false,"strict_transport_security":false,"x_content_type_options":true}
/api/info/bypasscfGETfind real ip behind cloudflarenil{"real_ip":"123.123.123.123"}
/api/info/cmsGETdetect cmsnil{data:{"cms": "wordpress"}}
/api/info/honeypotGETget ip and webservernil{data:{"score": "0.3"}}
/api/info/whoisGETwhoisnil{data:{"domain":"example.com","registrar_name":"alibaba", "admin_name":"xiaoming", "admin_email":"a@qq.com", "admin_phone":"+86.12312345678", "created_date":"2016-07-28T12:57:53.0Z","expiration_date":"2018-07-28T12:57:53.0Z", "ns":"dns9.hichina.com", "state":"clienttransferprohibited"}}
/api/pocGETget poc listnil{data:{"poc_list":["drupal-rce":{"id":"CVE-2017-7602","ty## pe":"remote code execution","text":"biubiubiu","platform## ":"php","data":"2018-04-25",## "reference":"https://cve.mitre.org/cgi-## bin/cvename.cgi?name=CVE-2018-7602"},"seacms-v654-rce"]## }}
/api/poc/:pocGETrun the specified pocnil{data:{"host": "example.com", "exploitable":"true"}}

WebSocket

PathFuncParamsReturn
/ws/info/portport scannil{"port": "80", "service": "http"}
/ws/info/tracerttrace route and mark on google mapnil{"ttl": 1, "addr": 192.168.1.1, "elapsed_time": 22720440, "country": China, "lat": 34.2583,"long": 116.1614}
/ws/info/subdomainenmu subdomainnil{"subdomain":"earth.google.com"}
/ws/info/dirbbrute force dir{"concurrency":20, "dict":"php"}; {"stop":1}{"path": "admin.php", "resp_status": 200, "resp_len": 110}
/ws/attack/crawlcrawl paramed urls{"max_depth": 4}{"url": "example.com/?id=1"}
/ws/attack/sqlicheck sqlinil{"sqli_url": "example.com/?id=1}
/ws/attack/xsscheck xssnil{"xss_url": "example.com/?id=1}
/ws/attack/intrudebrute force{"header": "GET / HTTP/1.1 ...", "payload": "p1,p2...", "concurrency": "10"}; {"stop":1}{"payload": 1, "resp_status": 200, "resp_len": 110}
/ws/attack/sshbrute force ssh{"port":"22",, "concurrency":40}{"user":"root","passwd":"biubiubiu"}
/ws/seekseek targets{"query": "biu", "se": "bing/google", "max_page": 10}{"urls": urls}
/ws/poc/:pocrun poc{concurrency:10}{"exploitable_host": "example.com"}

License

MIT