googleAdsense_widever


paros custom - 사설 ip 검색기능 분석 Computer & Tools

소스 컴파일 방법은 별도의 포스트 참고 : Cliver.egloos.com/2015790

crawl 단계에서 수집한 HTTP Response Body의 모든 문자열을 사설 IP 패턴과 비교하여 취약점 여부를 확인
별도의 패턴을 전송하지 않음.

logic order : Crawl > receive data > storage > compare pattern > reporting


사설 IP 범위 

A class : 10.0.0.0 - 10.255.255.255
정규표현식 = (10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})

B class : 172.16.0.0 - 172.31.255.255
정규표현식 = (172\\.\\d{2,2}\\.\\d{1,3}\\.\\d{1,3})

C class : 192.168.0.0 - 192.168.255.255
정규표현식 = (192\\.\\168\\.\\d{1,3}\\.\\d{1,3})



SOURCE : src\org\parosproxy\paros\core\scanner\plugin\TestInfoPrivateAddressDisclosure.java

코드 해석은 간단하므로 아래 소스에서 주석으로 대체

----- source start -----
package org.parosproxy.paros.core.scanner.plugin;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.parosproxy.paros.core.scanner.AbstractAppPlugin;
import org.parosproxy.paros.core.scanner.Alert;
import org.parosproxy.paros.core.scanner.Category;
import org.parosproxy.paros.network.HttpMessage;

public class TestInfoPrivateAddressDisclosure extends AbstractAppPlugin {


// check for private IP list
public static final Pattern patternPrivateIP = Pattern.compile("(10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|172\\.\\d{2,2}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3})", PATTERN_PARAM);

// 사설 ip 검색의 취약점 유형번호를 "00003"으로 지정하고 있다.
public int getId() {
return 00003;
}

// 마찬가지, 취약점 이름.
public String getName() {
return "Private IP disclosure";
}


// 다른 취약점과 연관시켜 분석할 때 필요한 부분.
public String[] getDependency() {
return null;
}

// 취약점 설명
public String getDescription() {
return "Private IP such as 10.x.x.x, 172.x.x.x, 192.168.x.x is found in the HTTP response body. This can be used in exploits on internal system.";
}

// 취약점 별 그룹 지정.
public int getCategory() {
return Category.INFO_GATHER;
}

// 솔루션 내용.
public String getSolution() {
return "Remove the private IP address from the HTTP response body. For comments, use jsp/asp comment instead of HTML/javascript comment which can be seen by client browsers.";

}

// 레퍼런스 (해당기능에선 없음)
public String getReference() {
return null;
}

// 취약점 분석을 위한, 초기화 작업.
public void init() {

}

// 스캔 작업
public void scan() {

HttpMessage msg = getBaseMsg();
String txtBody = msg.getResponseBody().toString(); // HTTP Response Body data만 추출, 저장.
String txtFound = null;
Matcher matcher = patternPrivateIP.matcher(txtBody);

// 패턴을 검색하여, 있다면 저장.
while (matcher.find()) {
txtFound = matcher.group();
if (txtFound != null) {

// 탐지된 IP 주소를 리포트로 출력. (bingo 함수 호출)
bingo(Alert.RISK_LOW, Alert.WARNING, null, null, txtFound, msg);
}
}
}

}
----- source end -----
위 소스 내용을 변경하여 한글버전을 만들어도 된다.


덧글

댓글 입력 영역


공지

어서오십시오.
트위터 : @FCliver
기저심리학 : 네이버카페
카카오톡 : FCliver
페이스북 : Fredric Cliver

통계 위젯 (화이트)

08
111
285969

접속자 위치