2012-05-03 2 views
0

나는 더 명백한 종류의 SQL 인젝션 취약점을 "직감적으로"파악하는 방법을 알고 있습니다. 그러나 나는 많은 다른 코드베이스 (2002 년 Joomla 코드베이스 일 가능성이 있음)가있는 대규모 코드베이스를 제공 받았다면 솔직히 겪었던 모든 (소급 적으로 알려진) 익스플로잇을 탐지하는 데 그리 멀지는 않을 것이라고 생각합니다. 모든 코드가 완전히.PHP 코드베이스에서 취약점을 찾는 방법에 대한 기사, 코드 리뷰 가이드 라인, 매뉴얼 등이 있습니까?

그래서 주어진 php 나 유사한 코드베이스에서 webapp 취약성의 "대부분"을 체계적으로 발견 할 수있는 기법이 있습니까? PHP 코드베이스에서 익스플로잇을 찾는 임무가 있다면 무엇을 할 것입니까?

답변

0

대용량 코드베이스를 감사 할 때 grep kung-fu를 사용하여 보안 문제를 체크 아웃 할 수있는 라인 목록을 만드는 것이 특히 도움이된다는 것을 알았습니다. 파일명과 라인 수만큼의 malloc에 ​​

egrep "malloc\(.*\)" ~/some/source/dir/ -r 

상기리스트 모든 통화 : 감싸는 allovation의 크기에 대해 사용 된 값을 허락 사용자 제어 할당에 대한 C의 소스 코드를 감사 예를 들어, 다음을 고려 지정된 디렉토리에서 재귀 적으로. 여기에는 엄청난 양의 오 탐지 (false positive)가 포함되므로 코드 오용에 대한 지식을 사용하여 호출을 제어 할 수없는 경우를 나열하는 사례 목록을 제거하는 다른 grep 문을 작성할 수 있습니다. 내 뜻을 설명하기 위해 하나 만들어 보자.

char *buffer2 = (char *) malloc(DEVMAPPER_BUFFER_SIZE); 

위의 라인은 분명히 감쌀 수 없으므로 위양성입니다. 정규식에 다음과 같은 모든 사례를 제거하도록 추가 할 수 있습니다.

이제 목록이 작아 지지만 여전히 가비지 결과가 있습니다.

egrep "malloc\(.*\)" ~/some/source/dir/ -r | egrep "malloc\([ ]*[A-Z_]+\)" -v | egrep "malloc\([ ]*[0-9]+\)" -v | egrep "malloc\(sizeof\(.*\)\)" -v 

일반적으로 사용되는 알려진 일반적인 기능의 각각에 대해이 작업을 수행 : 결국, 당신은 정규식 문로 변환하여, 잘못된 것으로 알고 각각의 경우를 가지 치기, 당신은 같은 것을 얻을 수 있습니다 귀하의 언어에 대한 소프트웨어 취약점을 일으키고, 빠른 파이썬/bash 스크립트에 넣고, 수동으로 발생하는 각 호출을 감사하십시오.

다음 링크는 PHP를 감사하는 데 도움이됩니다.

http://pentestlab.org/simple-kung-fu-grep-for-finding-common-web-vulnerabilities-backdoor-shells/