OGNL表达注入:Struts 2

时间:2018-08-01 12:52:37

标签: struts2 fortify

我如何解决此漏洞?

王国:输入验证和表示

摘要:在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)

谢谢

1 个答案:

答案 0 :(得分:0)

您更新S2版本,就像通过简单的网络搜索说的那样。

或者,您遵循S2 vulnerability page中给出的建议:

<constant name="struts.allowed.action.names" value="[a-zA-Z]*" />

请注意,此漏洞现在已有十年历史了,很久以前就已修复。