saya adalah seorang limiteduser (1000) bukan root, dan ada sebuah servis yang berjalan pada server (root akses), dengan source code sbb :
func main() {
if len(os.Args) != 3 {
fmt.Println(“Usage: backupmachine <path file sumber> <path file tujuan>”)
} else {
if _, err := os.Stat(os.Args[2]); err == nil {
fmt.Println(“Cannot replace existing file…”)
} else if errors.Is(err, os.ErrNotExist) {
copy(os.Args[1], os.Args[2])
fmt.Println(“Copying…”)
time.Sleep(3 * time.Second)
err = os.Chmod(os.Args[2], 0000)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(“Success!”)
}
} else {
fmt.Println(“Wut??”)
}
}
}
dari source code tersebut terdapat celah race condition selama 3 detik sebelum permission file hasil copyan dengan menggunakan binary servis tersebut berubah menjadi 0000
krn limiteduser kita tidak bisa menggunakan cp atau mv dan hanya bisa menggunakan servis binary backupmachine sbgmn source code diatas
pertanyaan : langkah/syntax apa yang harus sy pakai untuk mendapatkan file target pada folder root tanpa perlu privesc?
thanks 4 the answer coach 🙂