appScan常见高危漏洞,走过的坑啊_把appscan扫描的线程数改成1-程序员宅基地

技术标签: 漏洞修复  漏洞  appscan  xss漏洞  sql注入  

appScan常见高危漏洞,走过的坑啊

一、SQL 盲注(SQL注入)
1、 过滤特殊字符
2、使用预编译,不要拼接sql
3、对sql执行部分异常进行捕获,不要抛出不同的异常,以免被推测有漏洞
4、可能appscan误报
误报解决:
(1)、把错误的页面单独反复测试
(2)、把AppScan扫描的线程数改成1(默认10)
二、存储的跨站点脚本编制(xss漏洞)

1、对存储的内容进行xss过滤。
2、删除存储的脚本。
三、跨站脚本编制(xss漏洞)
1、通过fliter对参数进行过滤,过滤一般

package com.system.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class XssFilter implements Filter{

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest)request);
        chain.doFilter(xssRequest, response);
    }

    @Override
    public void destroy() {
        
    }

}

package com.system.filter;


import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

import org.apache.commons.lang3.StringEscapeUtils;
import org.owasp.validator.html.AntiSamy;
import org.owasp.validator.html.CleanResults;
import org.owasp.validator.html.Policy;
import org.owasp.validator.html.PolicyException;
import org.owasp.validator.html.ScanException;

import com.system.utils.StringUtils;

public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
    //AntiSamy使用的策略文件
    private static Policy policy = null;
    static {
        //指定策略文件,策略文件记得放在classpath下,文件在jar包里面可以复制,也可在网上下载
        String antiSamyPath = XssHttpServletRequestWrapper.class.getClassLoader().getResource("antisamy-ebay.xml").getFile();
        //String antiSamyPath = "E:\\ecpliseSpace\\newsi\\eip-si\\eip-si-aop\\src\\main\\resources\\antisamy-ebay.xml";
        if(antiSamyPath.startsWith("file")){
            antiSamyPath = antiSamyPath.substring(6);
        }
        try {
            policy = Policy.getInstance(antiSamyPath);
        } catch (PolicyException e) {
            e.printStackTrace();
        }
    }
    public XssHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
    }
    /**
     * @desc Header为空直接返回,不然进行XSS清洗
     *
     */
    @Override
    public String getHeader(String name) {
        String value = super.getHeader(name);
        if(StringUtils.isEmpty(value)){
            return value;
        }
        else{
            String newValue = cleanXSS(value);
            return newValue;
        }
    }
    /**
     * @desc Parameter为空直接返回,不然进行XSS清洗
     */
    @Override
    public String getParameter(String name) {
        String value = super.getParameter(name);
        if(StringUtils.isEmpty(value)){
            return value;
        }
        else{
            value = cleanXSS(value);
            return value;
        }
    }
    /**
     * @desc 对用户输入的参数值进行XSS清洗
     *
     */
    @Override
    public String[] getParameterValues(String name) {
        String[] values = super.getParameterValues(name);
        if (values != null) {
            int length = values.length;
            String[] escapseValues = new String[length];
            for (int i = 0; i < length; i++) {
                escapseValues[i] = cleanXSS(values[i]);
            }
            return escapseValues;
        }
        return super.getParameterValues(name);
    }
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public Map<String,String[]> getParameterMap(){
        Map<String,String[]> request_map = super.getParameterMap();
        Iterator iterator = request_map.entrySet().iterator();
        System.out.println("request_map"+request_map.size());
        while(iterator.hasNext()){
            Map.Entry me = (Map.Entry)iterator.next();
            //System.out.println(me.getKey()+":");
            String[] values = (String[])me.getValue();
            for(int i = 0 ; i < values.length ; i++){
                System.out.println(values[i]);
                values[i] = cleanXSS(values[i]);
            }
        }
        return request_map;
    }
    /**
     * @desc AntiSamy清洗数据
     *
     */
    private String cleanXSS(String taintedHTML) {
        try{
            AntiSamy antiSamy = new AntiSamy();
            final CleanResults cr = antiSamy.scan(taintedHTML,policy);
            //AntiSamy会把“&nbsp;”转换成乱码,把双引号转换成"&quot;" 先将&nbsp;的乱码替换为空,双引号的乱码替换为双引号
            String str = StringEscapeUtils.unescapeHtml4(cr.getCleanHTML());
            str = str.replaceAll(antiSamy.scan("&nbsp;",policy).getCleanHTML(),"");
            str = str.replaceAll(antiSamy.scan("\"",policy).getCleanHTML(),"\"");
            /**下面是我根据appScan测试出来的特俗字符串,来进行单独过滤的*/
            str = str.replaceAll("alert", "xsszh");
            str = str.replaceAll("onmouseover", "xsszh");
            str = str.replaceAll("onmouseover", "xsszh");
            str = str.replaceAll("eval", "xsszh");
            str = str.replaceAll(".source", "xsszh");
            str = str.replaceAll("window", "xsszh");
            str = str.replaceAll("font-family", "xsszh");
            str = str.replaceAll("expression", "xsszh");
            str = str.replaceAll("location", "xsszh");
            str = str.replaceAll("style", "xsszh");
            return str;
        }catch( ScanException e) {
            e.printStackTrace();
        }catch( PolicyException e) {
            e.printStackTrace();
        }
        return taintedHTML;
    }

}

(3)、配置web.xml

      <filter>
        <filter-name>xssFilter</filter-name>
        <filter-class>com.ustcinfo.ishare.eip.basic.system.filter.XssFilter</filter-class>
    </filter>
     <filter-mapping>
      <filter-name>xssFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>

appscan xss注入样例:
(1)、οnmοuseοver=“alert(119)”
(2)、
(5)、+alert(19)+
(6)、“style=fontfamily:expression(eval(/ale/.source+/rt/.source+/(288)/.source))!(最变态的一种)
(7)、还有会把alert放在alert中间,如alalertert这种。
(8)、οnfοcus=x=’\x61\x6c\x65\x72\x74\x28\x31\x29’;new Function(x)()//
(9)、”+[window[‘location’]=’\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3a\x61\x6c\x65\x72\x74\x2815\x29’]+"
四、已解密的登录请求
这个尝试了很多办法,如对密码参数进行加密处理、改变密码参数,不出现password,强制使用post请求,最后是在nginx配置https
五、查询中的密码参数
将参数名称改成普通的,不要有密码之类的字样,https也没有能规避这个漏洞。
六、其他链接型漏洞
可以根据链接提示,对响应链接进行拦截过滤即可

注:部分sql注入,nosql注入可能是在发送参数,后台报错引起的,只要在后台捕获异常,不让它抛出,appscan可能就不会推理这是个漏洞。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43881309/article/details/84862452

智能推荐

python 查tensorflow版本_python – 在tensorflow中查找gen_nn_ops的源代码-程序员宅基地

文章浏览阅读263次。您找不到此源,因为源是由bazel自动生成的.如果你从source构建,你会在bazel-genfiles中看到这个文件.它也出现在您当地的发行版中,您可以使用检查模块找到它.该文件包含自动生成的Python包装器到底层C实现,因此它基本上由一堆1行函数组成.查找此类生成的Python操作的基础C实现的快捷方式是将snake case转换为camel case,即conv2d_backprop_i..._tensorflow.python.ops.gen_nn_ops

php 判断空数组-程序员宅基地

文章浏览阅读196次。可以使用 empty() 函数来判断一个数组是否为空,如下所示:if(empty($array)){ // $array 为空}else{ // $array 不为空}也可以使用count()函数if(count($array)==0){ // $array 为空}else{ // $array 不为空}还可以使用 == 比较运算符来判断数组是否..._php判断数组是否为空

基于Smith预估器补偿系统控制延迟和传感器延迟(附Matlab实现)_smith补偿-程序员宅基地

文章浏览阅读1.4w次,点赞21次,收藏132次。目录前言Smith 预估补偿原理Matlab实现总结参考文献前言实际设计控制器时,不可避免会有延迟,包括控制延迟和传感器延迟,当延迟比较大时,可能会造成控制器失稳。因此在控制器设计时,需要考虑延迟的影响。这个问题在网络控制系统(Networked Control system)尤为普遍,相应的解决方法也有很多。文章采用一个简单经典的解决办法——Smith预估补偿,先介绍原理,再在Simulink中实现Smith 预估补偿原理一个典型的控制环节如图1所示,图1: 典型控制系统系统延迟包括控制延迟_smith补偿

关于php缓存技术一些见解-程序员宅基地

文章浏览阅读54次。参考的网站【很重要】①、模拟高并发:https://blog.csdn.net/yxwb1253587469/article/details/50572927https://blog.csdn.net/lcrxxoo/article/details/76070264②、数据库与缓存双写不一致问题分析与解决方案设计https://blog.csdn.net/sun_qian..._php 部分人走缓存 部分人不走缓存是什么鬼

用rapid库进行xml文件的 读写_rapidxml 大文件-程序员宅基地

文章浏览阅读277次。 rapid库一共提供四个文件 分别为:rapidxml.hpp rapidxml_iterators.hpp rapidxml_print.hpp rapidxml_utils.hpp四个文件。我们先进行简单测试 :#include "stdlib.h"#include &lt;iostream&gt;//下面三个文件是本段代码需要的库文件#include "rapidx..._rapidxml 大文件

3D模型文件(STL格式)Python读取并解析体积、长、宽、高信息_python读取stp3d文件体积-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏24次。使用Python对stl文件的处理依赖Python的 numpy 和 numpy-stl 模块。下面是一段代码,用于计算stl文件中模型的体积、长、宽、高等信息。import osimport numpy as npfrom stl import meshyour_mesh = mesh.Mesh.from_file('dog.stl')volume, cog, inertia = your_mesh.get_mass_properties()xyz = (your_mesh.max_ - _python读取stp3d文件体积

随便推点

ev4转换为mp4转换工具 ev4加密视频破解工具_ev4a怎么转mp4-程序员宅基地

文章浏览阅读9.8k次,点赞7次,收藏27次。前几天买了一套视频教程,被无良商家欺骗下载了一套ev4加密的视频 。苦于没有授权密码无法播放。今天教大家一个简单的办法可以把ev4格式的视频转换为mp4格式的。这样就可以用任意播放器都可以播放了,重要的是不需要知道授权密码也可以转换!教程:1.在文件夹中打开cmd。如下图:2.在cmd中输入main再加上一个空格 ,然后拖动ev4格式的视频到cmd中。如下图:3.然后按键盘的回车(Enter)即可转换。如下图:这样就可以转换为mp4格式了。就可以用任意播放器播放..._ev4a怎么转mp4

如何得到一个进程的句柄_得到指定进程的句柄-程序员宅基地

文章浏览阅读2k次。1. 获取进程句柄。通过窗口可以获得GetWindowThreadProcessID通过窗口句柄来获得进程的ID,然后通过进程的ID调用OpenProcess函数来获取进程句柄。OpenProcess中必须制定操作权限,如不制定没有权限就会失败。从快照函数中获取,CreateToolhelp32Snapshot取得快照句柄,Process32First和Process32Nest循环获取消息的ID,用一个PROCESSENTRY32来保存进程和线程的信息。_得到指定进程的句柄

html生成pdf文件 wkhtmltopdf使用记录(放弃使用了,现在使用puppeteer)_wkhtmltopdf(html, options).pipe(fs.createwritestre-程序员宅基地

文章浏览阅读2k次。html生成pdf文件说明如何使用遇到但问题 - - 很蠢说明后台功能需要打印一些审批表单,找来找去找到了强大的wkhtmltopdf,wkhtmltopdf在npm中介绍但很详细,如果没有特殊要求使用起来也没什么难度。但在使用过程中犯了一个很蠢但问题,所以记录下来。如何使用wkhtmltopdf-npm安装wkhtmltopdf命令行工具。下载地址安装模块npm install ..._wkhtmltopdf(html, options).pipe(fs.createwritestream('tmp/out.pdf'));

GO语言学习笔记(一) - Go安装配置_go语言提示 create directory indexserver at c:/users/ad-程序员宅基地

文章浏览阅读128次。GO语言学习笔记(一) - Go安装配置下载安装官方网址:https://golang.org/dl/注:国内是被墙的,需要翻墙下载Windows安装Windows下直接运行安装包默认安装在 C:Go 目录下安装完成后执行下面的命令,能正常执行,则安装完成。go version配置GOPATH(Windows)Windows下设置环境变量添加环境变量GOPAT..._go语言提示 create directory indexserver at c:/users/administrator/sdk/go1.20

基于springboot车辆充电桩设计与实现的源码+文档_充电桩预警分析系统 源代码-程序员宅基地

文章浏览阅读1.4k次。随着信息化时代的到来,管理系统都趋向于智能化、系统化,车辆充电桩管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而车辆充电桩管理系统能很好地解决这一问题,轻松应对车辆充电桩平时的工作,既能提高人力物力财力,又能加快工作的效率,取代人工管理是必然趋势。本系统主要包括首页、个人中心、维修员管理、用户管理、电桩类别管理、充电桩管理、充电桩报修管理、维修回复管理、系统管理等功能,通过这些功能的实现基本能够满足日常车辆充电桩管理的操作。_充电桩预警分析系统 源代码

初中级前端面试题—完整版_前端中级面试题-程序员宅基地

文章浏览阅读6.7k次,点赞20次,收藏86次。前言从前端学习到找一份合适的工作,大大小小的面试必不可少,所以我对初级前端面试题进行了初步整理,也方便自己查阅,也希望对小伙伴们有所帮助!HTMLHTML语义化HTML语义化就是让页面内容结构化,它有如下优点1、易于用户阅读,样式丢失的时候能让页面呈现清晰的结构。2、有利于SEO,搜索引擎根据标签来确定上下文和各个关键字的权重。3、方便其他设备解析,如盲人阅读器根据语义渲染网页4..._前端中级面试题