- Регистрация
- 20.01.2011
- Сообщения
- 7,665
- Розыгрыши
- 0
- Реакции
- 135
Zaxvat (Захват)
Zaxvat (Захват) - это инструмент командной строки, написанный на Go, предназначенный для захвата доменов / субдоменов.Посмотреть вложение 69820
На какой платформе/фреймворке это написано?
Эта программа написана на языке программирования Go. Он использует стандартную библиотеку для различных операций.Для чего он используется и как он работает?
Значит если вы знакомы с захватом доменов / субдоменов, то вы должны знать что в основном это работает через запись CNAME - для тех кто не знакомы, скоро выйдет статья на эту тему. Так вот этот скрипт проверяет, является ли CNAME домена уязвимым для захвата или нет.Что делает этот инструмент лучше других (отличия)?
- Он берёт список CNAME которых можно захватить, из этого списка - Для просмотра ссылки Войди
или Зарегистрируйся - который постоянно обновляется. Таким образом, вам не нужно беспокоиться о том, обновлен ли список для проверки или нет. - Он написан на Go, как и другие мои инструменты. Я использую Go, потому что я сторонник качества и скорости.
- Предоставляет подробную информацию, не только текст "Это уязвимо", но также извлекает сервис и документацию, если она существует. (Очевидно, из списка, который я привел выше)
Примеры использования в реальной жизни
Я хочу напомнить вам, что данное программное обеспечение предназначено только для легального использования.Для просмотра ссылки Войди
Сорс Код
Код:
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net"
"net/http"
"os"
"strings"
)
type Fingerprint struct {
CICDPass bool `json:"cicd_pass"`
CNAME []string `json:"cname"`
Discussion string `json:"discussion"`
Documentation string `json:"documentation"`
Fingerprint string `json:"fingerprint"`
HTTPStatus int `json:"http_status"`
NXDomain bool `json:"nxdomain"`
Service string `json:"service"`
Status string `json:"status"`
Vulnerable bool `json:"vulnerable"`
}
func main() {
fmt.Println("Made with lyubofff by GrozdniyAndy of XSS.is")
if len(os.Args) != 2 {
fmt.Println("Usage: go run main.go <domain>")
os.Exit(1)
}
domain := os.Args[1]
//fmt.Println("Fetching fingerprints...")
fingerprints, err := getFingerprints()
if err != nil {
fmt.Println("Error fetching fingerprints:", err)
os.Exit(1)
}
//fmt.Println("Fingerprints fetched successfully.")
// Print the list of fetched fingerprints
//fmt.Println("List of fetched fingerprints:")
//for i, fp := range fingerprints {
//fmt.Printf("%d. Service: %s, CNAME: %v\n", i+1, fp.Service, fp.CNAME)
//}
fmt.Printf("Checking vulnerability for domain: %s\n", domain)
checkVulnerability(domain, fingerprints)
}
func getFingerprints() ([]Fingerprint, error) {
url := "https://raw.githubusercontent.com/EdOverflow/can-i-take-over-xyz/master/fingerprints.json"
// log.Printf("Fetching fingerprints from %s\n", url)
response, err := http.Get(url)
if err != nil {
return nil, err
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return nil, err
}
var fingerprints []Fingerprint
err = json.Unmarshal(body, &fingerprints)
if err != nil {
return nil, err
}
// log.Printf("Fingerprints fetched successfully\n")
return fingerprints, nil
}
func checkVulnerability(domain string, fingerprints []Fingerprint) {
cname, err := getCNAME(domain)
if err != nil {
log.Fatalf("Error fetching CNAME for %s: %v\n", domain, err)
}
fmt.Printf("CNAME for %s: %s\n", domain, cname)
for _, fp := range fingerprints {
for _, fpCname := range fp.CNAME {
if strings.Contains(cname, fpCname) {
fmt.Printf("CNAME for %s matches with a service in the list:\n", domain)
fmt.Printf("Service: %s\n", fp.Service)
fmt.Printf("Status: %s\n", fp.Status)
fmt.Printf("Discussion: %s\n", fp.Discussion)
fmt.Printf("Documentation: %s\n", fp.Documentation)
return
}
}
}
fmt.Printf("CNAME for %s is not found in the vulnerable fingerprints.\n", domain)
}
func getCNAME(domain string) (string, error) {
cname, err := net.LookupCNAME(domain)
if err != nil {
return "", err
}
return cname, nil
}
Релизы
Релизы внизу, пользуйтесь на здоровье (скачиваете и всё) , но особо советую компилировать самому. Если дефендер кричать будет, я не при чемby: grozdniyandy