Compare commits

...
1 Commits
Author SHA1 Message Date
rkervella 702c2371a4 Fix #1003 2022-11-16 15:12:07 -08:00
2 changed files with 30 additions and 2 deletions

No files matched your search

+20 -1
View File
@@ -530,7 +530,16 @@ func executeHandler(data []byte, resp RPCResponse) {
}
execResp := &sliverpb.Execute{}
cmd := exec.Command(execReq.Path, execReq.Args...)
exePath, err := expandPath(execReq.Path)
if err != nil {
execResp.Response = &commonpb.Response{
Err: fmt.Sprintf("%s", err),
}
proto.Marshal(execResp)
resp(data, err)
return
}
cmd := exec.Command(exePath, execReq.Args...)
if execReq.Output {
stdOutBuff := new(bytes.Buffer)
@@ -929,3 +938,13 @@ func compressDir(path string, filter string, recurse bool, buf io.Writer) (int,
}
return readFiles, unreadableFiles, nil
}
func expandPath(exePath string) (string, error) {
if !strings.ContainsRune(exePath, os.PathSeparator) {
_, err := exec.LookPath(exePath)
if err != nil {
return filepath.Abs(exePath)
}
}
return exePath, nil
}
+10 -1
View File
@@ -303,7 +303,16 @@ func executeWindowsHandler(data []byte, resp RPCResponse) {
}
execResp := &sliverpb.Execute{}
cmd := exec.Command(execReq.Path, execReq.Args...)
exePath, err := expandPath(execReq.Path)
if err != nil {
execResp.Response = &commonpb.Response{
Err: fmt.Sprintf("%s", err),
}
proto.Marshal(execResp)
resp(data, err)
return
}
cmd := exec.Command(exePath, execReq.Args...)
// Execute with current token
cmd.SysProcAttr = &syscall.SysProcAttr{}