Skip to content

Commit

Permalink
Properly handle upload encoder, improved error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
moloch-- committed Apr 22, 2021
1 parent 7361e50 commit 308c695
Showing 1 changed file with 24 additions and 4 deletions.
28 changes: 24 additions & 4 deletions implant/sliver/handlers/handlers.go
Expand Up @@ -309,17 +309,34 @@ func uploadHandler(data []byte, resp RPCResponse) {
return
}

uploadPath, _ := filepath.Abs(uploadReq.Path)
uploadPath, err := filepath.Abs(uploadReq.Path)
if err != nil {
// {{if .Config.Debug}}
log.Printf("upload path error: %v", err)
// {{end}}
resp([]byte{}, err)
}

// Process Upload
upload := &sliverpb.Upload{Path: uploadPath}

f, err := os.Create(uploadPath)
if err != nil {
upload.Response = &commonpb.Response{
Err: fmt.Sprintf("%v", err),
}

} else {
// Create file, write data to file system
defer f.Close()
data, err := gzipRead(uploadReq.Data)
var data []byte
var err error
if uploadReq.Encoder == "gzip" {
data, err = gzipRead(uploadReq.Data)
} else {
data = uploadReq.Data
}
// Check for decode errors
if err != nil {
upload.Response = &commonpb.Response{
Err: fmt.Sprintf("%v", err),
Expand Down Expand Up @@ -580,9 +597,12 @@ func gzipWrite(w io.Writer, data []byte) error {

func gzipRead(data []byte) ([]byte, error) {
bytes.NewReader(data)
reader, _ := gzip.NewReader(bytes.NewReader(data))
reader, err := gzip.NewReader(bytes.NewReader(data))
if err != nil {
return nil, err
}
var buf bytes.Buffer
_, err := buf.ReadFrom(reader)
_, err = buf.ReadFrom(reader)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 308c695

Please sign in to comment.