mirror of
https://github.com/BishopFox/sliver
synced 2026-06-08 10:29:05 +00:00
fixed jobid display error and added sql tables for dns domains and mtls
This commit is contained in:
@@ -41,6 +41,6 @@ func WGListenerCmd(ctx *grumble.Context, con *console.SliverConsoleClient) {
|
||||
if err != nil {
|
||||
con.PrintErrorf("%s\n", err)
|
||||
} else {
|
||||
con.PrintInfof("Successfully started job #%d\n", wg.ID)
|
||||
con.PrintInfof("Successfully started job #%d\n", wg.JobID)
|
||||
}
|
||||
}
|
||||
|
||||
+10
-10
@@ -33,7 +33,7 @@ type ListenerJob struct {
|
||||
JobID uint32
|
||||
Type string
|
||||
HttpListener HTTPListener
|
||||
MtlsListener MTLSListener
|
||||
MtlsListener MtlsListener
|
||||
DnsListener DNSListener
|
||||
WgListener WGListener
|
||||
MultiplayerListener MultiplayerListener
|
||||
@@ -61,7 +61,7 @@ type DNSListener struct {
|
||||
ID uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
|
||||
ListenerJobID uuid.UUID `gorm:"type:uuid;"`
|
||||
|
||||
Domains []Domain
|
||||
Domains []DnsDomain
|
||||
Canaries bool
|
||||
Host string
|
||||
Port uint32
|
||||
@@ -78,7 +78,7 @@ type WGListener struct {
|
||||
TunIP string
|
||||
}
|
||||
|
||||
type MTLSListener struct {
|
||||
type MtlsListener struct {
|
||||
ID uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
|
||||
ListenerJobID uuid.UUID `gorm:"type:uuid;"`
|
||||
Host string
|
||||
@@ -92,7 +92,7 @@ type MultiplayerListener struct {
|
||||
Port uint32
|
||||
}
|
||||
|
||||
type Domain struct {
|
||||
type DnsDomain struct {
|
||||
ID uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
|
||||
DNSListenerID uuid.UUID `gorm:"type:uuid;"`
|
||||
Domain string
|
||||
@@ -132,7 +132,7 @@ func (j *WGListener) BeforeCreate(tx *gorm.DB) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (j *MTLSListener) BeforeCreate(tx *gorm.DB) (err error) {
|
||||
func (j *MtlsListener) BeforeCreate(tx *gorm.DB) (err error) {
|
||||
j.ID, err = uuid.NewV4()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -196,7 +196,7 @@ func (j *WGListener) ToProtobuf() *clientpb.WGListenerReq {
|
||||
}
|
||||
}
|
||||
|
||||
func (j *MTLSListener) ToProtobuf() *clientpb.MTLSListenerReq {
|
||||
func (j *MtlsListener) ToProtobuf() *clientpb.MTLSListenerReq {
|
||||
return &clientpb.MTLSListenerReq{
|
||||
Host: j.Host,
|
||||
Port: j.Port,
|
||||
@@ -249,14 +249,14 @@ func ListenerJobFromProtobuf(pbListenerJob *clientpb.ListenerJob) *ListenerJob {
|
||||
RandomizeJarm: pbListenerJob.HTTPConf.RandomizeJARM,
|
||||
}
|
||||
case "mtls":
|
||||
cfg.MtlsListener = MTLSListener{
|
||||
cfg.MtlsListener = MtlsListener{
|
||||
Host: pbListenerJob.MTLSConf.Host,
|
||||
Port: pbListenerJob.MTLSConf.Port,
|
||||
}
|
||||
case "dns":
|
||||
var domains []Domain
|
||||
var domains []DnsDomain
|
||||
for _, domain := range pbListenerJob.DNSConf.Domains {
|
||||
domains = append(domains, Domain{Domain: domain})
|
||||
domains = append(domains, DnsDomain{Domain: domain})
|
||||
}
|
||||
cfg.DnsListener = DNSListener{
|
||||
Domains: domains,
|
||||
@@ -265,7 +265,7 @@ func ListenerJobFromProtobuf(pbListenerJob *clientpb.ListenerJob) *ListenerJob {
|
||||
Port: pbListenerJob.DNSConf.Port,
|
||||
EnforceOtp: pbListenerJob.DNSConf.EnforceOTP,
|
||||
}
|
||||
case "WG":
|
||||
case "wg":
|
||||
cfg.WgListener = WGListener{
|
||||
Host: pbListenerJob.WGConf.Host,
|
||||
Port: pbListenerJob.WGConf.Port,
|
||||
|
||||
@@ -90,6 +90,8 @@ func newDBClient() *gorm.DB {
|
||||
&models.DNSListener{},
|
||||
&models.WGListener{},
|
||||
&models.MultiplayerListener{},
|
||||
&models.MtlsListener{},
|
||||
&models.DnsDomain{},
|
||||
)
|
||||
if err != nil {
|
||||
clientLog.Error(err)
|
||||
|
||||
+30
-10
@@ -89,12 +89,11 @@ func (rpc *Server) StartMTLSListener(ctx context.Context, req *clientpb.MTLSList
|
||||
if 65535 <= req.Port {
|
||||
return nil, ErrInvalidPort
|
||||
}
|
||||
listenPort := uint16(defaultMTLSPort)
|
||||
if req.Port != 0 {
|
||||
listenPort = uint16(req.Port)
|
||||
if req.Port == 0 {
|
||||
req.Port = defaultMTLSPort
|
||||
}
|
||||
|
||||
job, err := c2.StartMTLSListenerJob(req.Host, listenPort)
|
||||
job, err := c2.StartMTLSListenerJob(req.Host, uint16(req.Port))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -105,7 +104,10 @@ func (rpc *Server) StartMTLSListener(ctx context.Context, req *clientpb.MTLSList
|
||||
MTLSConf: req,
|
||||
}
|
||||
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
|
||||
db.HTTPC2ListenerSave(listenerModel)
|
||||
err = db.HTTPC2ListenerSave(listenerModel)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
|
||||
}
|
||||
@@ -142,7 +144,10 @@ func (rpc *Server) StartWGListener(ctx context.Context, req *clientpb.WGListener
|
||||
WGConf: req,
|
||||
}
|
||||
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
|
||||
db.HTTPC2ListenerSave(listenerModel)
|
||||
err = db.HTTPC2ListenerSave(listenerModel)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
|
||||
}
|
||||
@@ -162,7 +167,16 @@ func (rpc *Server) StartDNSListener(ctx context.Context, req *clientpb.DNSListen
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO save listener to db
|
||||
listenerJob := &clientpb.ListenerJob{
|
||||
JobID: uint32(job.ID),
|
||||
Type: "dns",
|
||||
DNSConf: req,
|
||||
}
|
||||
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
|
||||
err = db.HTTPC2ListenerSave(listenerModel)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
|
||||
}
|
||||
@@ -183,11 +197,14 @@ func (rpc *Server) StartHTTPSListener(ctx context.Context, req *clientpb.HTTPLis
|
||||
|
||||
listenerJob := &clientpb.ListenerJob{
|
||||
JobID: uint32(job.ID),
|
||||
Type: "http",
|
||||
Type: "https",
|
||||
HTTPConf: req,
|
||||
}
|
||||
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
|
||||
db.HTTPC2ListenerSave(listenerModel)
|
||||
err = db.HTTPC2ListenerSave(listenerModel)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
|
||||
}
|
||||
@@ -212,7 +229,10 @@ func (rpc *Server) StartHTTPListener(ctx context.Context, req *clientpb.HTTPList
|
||||
HTTPConf: req,
|
||||
}
|
||||
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
|
||||
db.HTTPC2ListenerSave(listenerModel)
|
||||
err = db.HTTPC2ListenerSave(listenerModel)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user