我如何解决此漏洞?
王国:输入验证和表示
摘要:在Struts 2动作名称中使用通配符(*)可以将动作名称评估为OGNL表达式,从而有效地使攻击者能够修改系统变量(例如Session)或在服务器上执行任意命令。
from rest_framework import status
from rest_framework.decorators import api_view, authentication_classes,
permission_classes
from rest_framework.response import Response
from allauth.account.forms import ResetPasswordForm
@api_view(['POST'])
@authentication_classes([])
@permission_classes([])
def recover_password(request):
if request.data.get('email'):
form = ResetPasswordForm({'email': request.data.get('email')})
if form.is_valid():
form.save(request)
return Response('Email with instructions was sent to provided account',
status=status.HTTP_200_OK)
return Response('Missing email', status=status.HTTP_400_BAD_REQUEST)
谢谢
答案 0 :(得分:0)
您更新S2版本,就像通过简单的网络搜索说的那样。
或者,您遵循S2 vulnerability page中给出的建议:
<constant name="struts.allowed.action.names" value="[a-zA-Z]*" />
请注意,此漏洞现在已有十年历史了,很久以前就已修复。