1
0
mirror of https://github.com/sairson/Yasso.git synced 2026-10-29 03:33:59 +08:00

Yasso更新大改动,更新扫描方式,去除不常用功能,增加指纹和协议识别,修补bug等

This commit is contained in:
sairson
2022-05-29 09:11:07 +08:00
parent a6cd80f8e8
commit cb72f18edd
129 changed files with 16619 additions and 6278 deletions

114
core/flag/flag.go Normal file
View File

@@ -0,0 +1,114 @@
package flag
import (
"Yasso/core/logger"
"Yasso/core/plugin"
"Yasso/pkg/exploit"
"github.com/spf13/cobra"
"os"
"time"
)
type allFlags struct {
Hosts string // 全局变量 标识ip列表或文件路径
Ports string // 全局变量 标识扫描的端口
Timeout int // 全局变量 标识超时时间
NoCrack bool // 全局变量 标识all模块是否开启爆破
NoAlive bool // 全局变量 是否采用ping来判断存活主机
User string // 全局变量 标识all模块爆破使用用户名字典
Pass string // 全局变量 标识all模块爆破使用密码字典
Thread int // 全局变量 标识all模块扫描时的线程数
NoService bool // 全局变量 标识all模块是否探测服务
NoVulcan bool // 全局变量 标识all模块是否进行主机层漏扫
}
type BurpFlags struct {
Hosts string // 全局变量,标识ip列表或文件路径
Method string // 爆破的服务名称
User string // 爆破时采用的用户字典
Pass string // 爆破时采用的密码字典
Thread int // 爆破时采用的线程数
Timeout int // 爆破的超时时间
IsAlive bool // 爆破前是否检测存活
}
var burp BurpFlags
var all allFlags
var rootCmd = &cobra.Command{
Use: "Yasso",
Short: "\n_____.___. ____ ___\n\\__ | |____ ______ __________\\ \\/ /\n / | \\__ \\ / ___// ___/ _ \\\\ / \n \\____ |/ __ \\_\\___ \\ \\___ ( <_> ) \\ \n / ______(____ /____ >____ >____/___/\\ \\\n \\/ \\/ \\/ \\/ \\_/\n",
}
var allCmd = &cobra.Command{
Use: "all",
Short: "Use all scanner module (.attention) Traffic is very big",
Run: func(cmd *cobra.Command, args []string) {
if all.Hosts == "" {
_ = cmd.Help()
return
}
scanner := plugin.NewAllScanner(all.Hosts, all.Ports, all.NoAlive, all.NoCrack, all.User, all.Pass, all.Thread, time.Duration(all.Timeout)*1000*time.Millisecond, all.NoService, all.NoVulcan)
scanner.RunEnumeration()
},
}
var serviceCmd = &cobra.Command{
Use: "service",
Short: "Detection or blasting services by module",
Run: func(cmd *cobra.Command, args []string) {
if burp.Hosts == "" {
_ = cmd.Help()
return
}
plugin.BruteService(burp.User, burp.Pass, burp.Hosts, burp.Method, burp.Thread, time.Duration(burp.Timeout)*1000*time.Millisecond, burp.IsAlive)
},
}
var ExpCmd = &cobra.Command{
Use: "exploit",
Short: "Exploits to attack the service",
Run: func(cmd *cobra.Command, args []string) {
if cmd.HasSubCommands() {
_ = cmd.Help()
}
},
}
func init() {
rootCmd.PersistentFlags().StringVar(&logger.LogFile, "output", "result.txt", "set logger file")
allCmd.Flags().StringVar(&logger.LogJson, "json", "", "设置json格式输出文件")
allCmd.Flags().StringVarP(&all.Hosts, "hosts", "H", "", "设置扫描的目标参数(.eg) \n[192.168.248.1/24]\n[192.168.248.1-255]\n[example.txt]")
allCmd.Flags().StringVar(&all.Ports, "ports", "", "设置扫描的端口参数(.eg) null将采用默认端口号 top 1000")
allCmd.Flags().IntVar(&all.Timeout, "timeout", 1, "设置扫描的超时时间 默认1秒")
allCmd.Flags().BoolVar(&all.NoCrack, "no-crack", false, "设置扫描时是否爆破脆弱服务")
allCmd.Flags().BoolVar(&all.NoAlive, "no-alive", false, "设置扫描时是否先检测主机存活")
allCmd.Flags().StringVar(&all.User, "user-dic", "", "设置扫描时爆破采用的用户名字典 (.eg) null将采用默认用户名字典")
allCmd.Flags().StringVar(&all.Pass, "pass-dic", "", "设置扫描时爆破采用的密码字典 (.eg) null将采用默认密码字典")
allCmd.Flags().IntVar(&all.Thread, "thread", 500, "设置扫描时的扫描线程 (.eg) 默认500 线程")
allCmd.Flags().BoolVar(&all.NoService, "no-service", false, "设置扫描时是否探测服务")
allCmd.Flags().BoolVar(&all.NoVulcan, "no-vuln", false, "设置扫描时是否检测主机层漏洞")
rootCmd.AddCommand(allCmd)
serviceCmd.Flags().StringVarP(&burp.Hosts, "hosts", "H", "", "设置扫描的目标参数(.eg) \n[192.168.248.1/24]\n[192.168.248.1-255]\n[example.txt]")
serviceCmd.Flags().StringVar(&burp.Method, "module", "", "指定要爆破的服务名称(.eg) \n[mssql,ftp,ssh,mysql,rdp,postgres,redis,winrm,smb,mongo]\n以逗号分割,可同时爆破多个服务(--module ssh:22,mysql:3306,rdp:3389)")
serviceCmd.Flags().IntVar(&burp.Thread, "thread", 500, "设置扫描时的扫描线程 (.eg) 默认500 线程")
serviceCmd.Flags().StringVar(&burp.User, "user-dic", "", "设置扫描时爆破采用的用户名字典 (.eg) null将采用默认用户名字典")
serviceCmd.Flags().StringVar(&burp.Pass, "pass-dic", "", "设置扫描时爆破采用的密码字典 (.eg) null将采用默认密码字典")
serviceCmd.Flags().IntVar(&burp.Timeout, "timeout", 1, "设置爆破的超时时间 默认1秒")
serviceCmd.Flags().BoolVar(&burp.IsAlive, "is-alive", true, "爆破前是否进行ping检测存活")
rootCmd.AddCommand(serviceCmd)
rootCmd.AddCommand(ExpCmd)
// 利用模块命令
ExpCmd.AddCommand(exploit.MssqlCmd)
ExpCmd.AddCommand(exploit.SshCmd)
ExpCmd.AddCommand(exploit.WinRmCmd)
ExpCmd.AddCommand(exploit.RedisCmd)
ExpCmd.AddCommand(exploit.SunLoginCmd)
ExpCmd.AddCommand(exploit.LdapReaperCmd)
}
func Execute() {
if err := rootCmd.Execute(); err != nil {
os.Exit(0)
}
}