任意文件绕过上传漏洞验证、SQL注入攻击漏洞验证、XSS跨站脚本攻击漏洞验证

 
  • 漏洞:任意文件绕过上传漏洞验证。
  • 漏洞危害: 黑客可以上传脚本木马控制网站。解决方案:白名单过滤文件后缀,并去除上传目录的脚本和执行权限。
  • 漏洞: SQL注入攻击漏洞验证。
  •          漏洞危害: 黑客利用精心组织的SQL语句,通过Web表单注入的Web应用中,从而获取后台DB的访问与存取权限。获取相应的权限之后,可以对网页和数据库进行进一步的篡改、挂马和跳板攻击行为。解决方案:关闭数据库查询报错信息,全局对搜索框参数keyword进行参数过滤:    1.每个提交信息的客户端页面,通过服务器端脚本(JSP、ASP、ASPX、PHP等脚本)生成的客户端页面,提交的表单(FORM)或发出的连接请求中包含的所有变量,必须对变量的值进行检查。过滤其中包含的特殊字符,或对字符进行转义处理。特殊字符包括:SQL语句关键词:如 and 、or 、select、xp_cmdshell;
    SQL语句特殊符号:’、”、;等;
      2.Web应用使用的数据库用户最好不是数据库管理员用户,应当采取最小权限原则,以免在被攻破后造成更大的损失;
      3.Web服务器与SQL数据库服务器不应放置在相同的服务器上。应将SQL数据库服务器放置在内网;对于有条件的公司,可以将Web应用中的所有动态SQL改为静态SQL,将参数采用绑定的方式使用,不要拼SQL串。    解决方法: string pattern1 = @"(%27)|(')|(--)";                //防止执行 ' or                    string pattern2 = @"((%27)|('))s*((%6F)|o|(%4F))((%72)|r|(%52))";                //防止执行sql server 内部存储过程或扩展存储过程                    string pattern3 = @"s+exec(s|+)+(s|x)pw+";            if (!string.IsNullOrEmpty(model.Keyword))            {                 model.Keyword = Regex.Replace(model.Keyword, pattern1, string.Empty, RegexOptions.IgnoreCase);                 model.Keyword = Regex.Replace(model.Keyword, pattern2, string.Empty, RegexOptions.IgnoreCase);                     model.Keyword = Regex.Replace(model.Keyword, pattern3, string.Empty, RegexOptions.IgnoreCase);               }
  • XSS跨站脚本攻击漏洞验证
  • 漏洞危害: XSS可能造成的危害包括:将使用者浏览器导向恶意网站、偷取使用者的cookie、将使用者浏览器导向钓鱼网站,以骗取账号密码等个人资料、安装恶意后门木马、安置web浏览器炸弹等;
      XSS攻击介于攻击者与使用者之间的攻防战,并不会对server主机有任何威胁,所以才被称为跨站脚本攻击,意思即是:攻击者使用某些脚本语言跨过主机对使用者进行攻击。解决方案:1、控制脚本注入的语法要素。比如:JavaScript离不开:“<”、“>”、“(”、“)”、“;”...等等,我们只需要在输入或输出时对其进行字符过滤或转义处理就即可。一般我们会采用转义的方式来处理,转义字符是会使用到HTML的原始码,因为原始码是可以被浏览器直接识别的,所以使用起来非常方便。允许可输入的字符串长度限制也可以一定程度上控制脚本注入。2、所有的过滤、检测、限制等策略,建议在Web Server那一端去完成,而不是使用客户端的JavaScript或者VBScript去做简单的检查。因为真正的攻击者可以绕过你精心设计制作的客户端进行过滤、检测或限制手段。解决方法:在前后台逻辑把特殊符号”<”,”/”等替换。例如:前台var LocationData = $('#Location').val().replace(/[<>]/g, " ");  

    相关内容推荐