2013-10-21 1 views
0

경로 횡단 취약점을 악용하려는 Tomcat에서 Java Web App를 실행하고 있습니다. 서버의 /tmp 디렉토리에 추출되는 .zip 파일을 업로드 할 수있는 섹션 (앱에 있음)이 있습니다. .zip 파일의 내용이 확인되지 않았으므로 기본적으로 아무것도 넣을 수 없습니다. 나는 그것에 .jsp 파일을 넣으려고했는데 완벽하게 추출합니다. 내 문제는 브라우저에서 "일반"사용자로이 파일에 도달하는 방법을 모른다는 것입니다. 주소창에 ../../../tmp/somepage.jsp을 입력하려고 시도했지만 Tomcat은 ../을 제거하고 http://localhost:8080/tmp/ 리소스를 사용할 수 없습니다. somepage.jsp의 경로에 어떻게 든 인코딩 할 수 있으면 이상적입니다. 따라서 웹 응용 프로그램의 웹 riot 디렉토리에서 추출됩니다. 이것이 가능한가? 추출한 후 ../으로 변환 할 수있는 이스케이프 시퀀스가 ​​있습니까?경로 통과 취약점 악용 및 수정

모든 아이디어는 높이 평가 될 것입니다.
참고 : 이것은 보안 코스의 학교 프로젝트로, 여기에서 취약점을 찾고 수정해야합니다. 아무도 해를 끼치 지 않으려 고합니다 ...

+1

우리가 실제로 해킹을 가르치는 것처럼. – developerwjk

+0

예, @developerwjk, 있습니다. –

답변

2

죄송합니다 downvotes. 보안은 매우 중요하며 반드시 가르쳐야합니다.

사용할 파일 이름을 전달합니까?

서버가 확인하는 것은 아마도 If location starts with "/tmp" then allow it과 같은 것일 것입니다. 그래서 당신이하고 싶은 것은`/tmp/../home/webapp/ "를 전달하는 것입니다.

또 다른 아이디어는 내용이 위로 올라가도록하는 zip 파일을 만들 수 있는지를 보는 것입니다. if zip 도구가 허용하지 않는 경우 수동으로 수정해야 할 수도 있습니다.

+0

업로드 할 zip 파일을 선택하는 업로드 양식이 있습니다. 그런 다음 서버는'/ tmp' 디렉토리로 파일을 추출합니다. 그래서 zip 파일에'somepage.jsp'를 넣으면 나중에/tmp에 도착할 것입니다. 이제 나는 zip 파일에 무엇이든 넣을 수 있고'/ tmp'에서 압축을 풀 수 있다는 사실을 단지 추측하고 있습니다. 취약점입니다. zip 파일을 수동으로 수정하여 웹 루트 폴더에'somepage.jsp' 파일을 추출하는 방법은 무엇입니까? 가능한가? 당신의 도움을 주셔서 감사합니다. – Maputo

+1

옳은 대답을 말하기는 정말 어렵습니다. 너무 많은 것들에 달려 있습니다. /에 대한 심볼릭 링크를 압축하여보십시오./tmp/root가 /를 가리킨 다음 root/home/webapp/malicious.jsp라는 파일이있는 두 번째 zip 파일을 추출해보십시오. : D – Murph

+0

흠 .. 좋은 생각입니다. 그러나 실제로는 항상'/ tmp' 내의 다른 폴더로 압축이 풀렸다 고 언급하지 않았습니다. 내가 symlink와 파일을 함께 압축 할 수 있다고 생각합니까? 그래서 그들은 같은 디렉토리에서 추출됩니다. 그리고 또 다른 문제. "/"가 포함 된 파일의 이름을 지정하는 방법은 무엇입니까? 리눅스는 그것을 허용하지 않는다 ... – Maputo

0

찾고있는 이런 종류의 취약점으로부터 보호하려면 이 같은 : 방금 확인하지 않고 당신의 loadfile 함수에 변수 "파일을"통과한다면

String somedirectory = "c:/fixed_directory/"; 
String file = request.getParameter("file"); 
if(file.indexOf(".")>-1) 
{ 
    //if it contains a ., disallow 
    out.print("stop trying to hack"); 
    return; 
} 
else 
{ 
    //load specified file and print to screen 
    loadfile(somedirectory+file+".txt"); 
    ///..... 
} 

후 누군가가 그들이 원하는 파일을로드 할 수있는 링크를 만들 수 있습니다 . https://www.owasp.org/index.php/Path_Traversal

+0

사실은 아직 실제 취약점을 발견하지 못했다는 것입니다. 나는'/ tmp' 폴더에있는 파일을 추출 할 수 있다면 어떻게 든 악용 될 수 있다고 추측합니다. 우선 방법을 알아 내고 수정해야합니다. – Maputo

+0

대부분의 zip 프로그램에는 zip에 언급 된 정확한 폴더 구조를 사용하거나 사용하지 않기위한 플래그가 있습니다. 이런 종류의 말도 안되는 것을 막기 위해 zip 프로그램은 기본적으로 해제되어 있습니다. – developerwjk

+0

예,하지만 웹 앱은 자체 작성된 Unzip 클래스 유틸리티를 사용하고 있습니다. 오. 내가 방금 대답했다고. 파일을 웹 루트 디렉토리와 같은 폴더 구조에 넣으면 Unzip 유틸리티가 파일을 압축 해제합니다 (물론 잘못 작성된 경우). 권리? – Maputo