app Scan 에서 흔히 볼 수 있 는 고위 험 구멍, 지나 가 는 구덩이 입 니 다.

7392 단어 구멍 복구
app Scan 에서 흔히 볼 수 있 는 고위 험 구멍, 지나 가 는 구덩이 입 니 다.
1. SQL 블라인드 (SQL 주입) 1. 특수 문자 2 를 걸 러 내 고 사전 컴 파일 을 사용 합 니 다. sql 3 을 연결 하지 말고 sql 실행 부분 이상 을 캡 처 하지 마 십시오. 서로 다른 이상 을 던 지지 마 십시오. 구멍 이 있 을 것 으로 추 정 됩 니 다. 4. appscan 오보 가 발생 할 수 있 습 니 다. (1) 잘못된 페이지 를 단독으로 반복 테스트 (2) 하고 AppScan 스 캔 의 스 레 드 수 를 1 (기본 10) 2 로 바 꿉 니 다.저 장 된 크로스 사이트 스 크 립 트 작성 (xss 구멍)
1. 저 장 된 내용 을 xss 여과 합 니 다.2. 저 장 된 스 크 립 트 를 삭제 합 니 다.3. 크로스 스 크 립 트 작성 (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\
ewsi\\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 getParameterMap(){ Map 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 “ ” , """   , String str = StringEscapeUtils.unescapeHtml4(cr.getCleanHTML()); str = str.replaceAll(antiSamy.scan(" ",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), 웹. xml 설정
      
        xssFilter
        com.ustcinfo.ishare.eip.basic.system.filter.XssFilter
    
     
      xssFilter
       /*
    

appscan xss 주입 사례: (1),οnmοuseοver = 'alert (119)' (2), (5), + alert (19) + (6), 'style = fontfamily: expression (eval (/ ale /. source + / rt /. source + / (288) /. source)!ο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’]+"4. 해 제 된 로그 인 요청 은 여러 가지 방법 을 시 도 했 습 니 다. 예 를 들 어 암호 화 처리, 암호 화 파 라 메 터 를 바 꾸 고 password 가 나타 나 지 않 으 며 post 요청 을 강제 적 으로 사용 합 니 다. 마지막 으로 nginx 에서 https 5 를 설정 하고 조회 중의 암호 화 파 라 메 터 는 매개 변수 이름 을 일반 으로 바 꾸 었 습 니 다. 암호 와 같은 글자 가 없 으 면 https 도 이 구멍 을 피 할 수 없습니다."6. 다른 링크 형 구멍 은 링크 알림 에 따라 응답 링크 를 차단 하고 걸 러 내 면 됩 니 다.
주: 일부 sql 주입, nosql 주입 은 파 라 메 터 를 보 내 는 것 일 수 있 습 니 다. 배경 에서 오류 가 발생 했 습 니 다. 배경 에서 이상 을 포착 하고 던 지지 않 으 면 appscan 은 구멍 이 라 고 추리 하지 않 을 수 있 습 니 다.

좋은 웹페이지 즐겨찾기