안녕하세요.
해킹과 방어 시리즈를 연재하고 있는 Ziqon입니다.
벌써 9번째 이야기라니.. 많이 왔습니다.
날씨도 시원해지고~ 다 같이 열공열공!
이번에는 웹시스템의 다운로드 취약점을 공격하고 방어해보겠습니다.
다운로드 파라미터에 웹루트의 디렉토리 명령을 집어넣어 시스템 파일 등에 접근하는 기법입니다.
자 그럼~ 돌격 앞으로!!!
webgoat 실행 및 왼쪽 메뉴의 Bypass a Path Based AccessControl Schem 에 접속합니다.
브라우저에서 프록시 설정을 아래와 같이 5000번 포트를 지정해줍니다.
프록시 툴 설정
[Proxy]에서 [Options] -> [Add]를 클릭하여 Bind to port는 5000 및 Specific address는 127.0.0.1을 선택하고 설정 값을 저장합니다.
https://portswigger.net/burp/communitydownload 에서 burp suite를 다운로드받습니다.
-5000번 포트만 체크합니다.
-127.0.0.1은 웹브라우저와 프록시 툴간에 인식이 되지 않기 때문에 hosts 파일에 임시로 가상도메인을 추가합니다.
-이제 접속주소는 www.mypage.com:8080/WebGoat-5.4.1/attack이되며 Bypass a Path Based AccessControl Schem에서 맨 위의 html파일에 접근합니다.
-아래 burp에서 해당 파일을 ../../main.jsp로 변조하여 main.jsp에 접근해 봅니다.
-아래와 같이 main.jsp파일의 소스코드가 현시됩니다.
[방어 코드 작성]
-Findbug에서 아래 취약점을 클릭하여 확인합니다.
-외부에서 들어오는 파라미터가 file 클래스에 그대로 사용되며, 이러면 악의적인 파일 요청(../../../../etc/passwd)이 가능해집니다.
-그 위에 있는 코드를 확인하면 아래와 같이 외부값을 입력값으로 받게됩니다.
String file = s.getParser().getRawParameter(FILE, "");
-이제 위 코드에 필터를 만들어 입력된 파라미터의 악의적인 코드를 제거해보도록 하겠습니다.
SecurityFilter클래스에 아래 다운로드 취약점 제거 메소드를 추가합니다.
public static String PathTraversalFilter(String inputData) {
inputData = inputData.replaceAll("./", "");
inputData = inputData.replaceAll("../", "");
inputData = inputData.replaceAll("..\", "");
inputData = inputData.replaceAll("\\", "");
return inputData;
}
-그리고 취약 코드 아래 다음과 같이 input값(file)을 필터링합니다.
String file = s.getParser().getRawParameter(FILE, "");
file = SecurityFilter.PathTraversalFilter(file);
-자 이제 방어코드를 짰으니 테스트해봐야겠죠?
다들 한번씩 해보세요~~^^
이번에는 파라미터에 디렉토리명을 넣어서 공격하는 다운로드 취약점을 방어했네요~😁
네 기초적이지만 많이 나오는 취약점입니다.
다운로드 취약점에서 시작되는 공격은 시스템 conf를 다운로드받아 DB접속정보들을 탈취하는 경우가 크리티컬하면서도 많이 발생합니다.
말만 들어도 무섭네요. DB정보 탈취라니... 조심해야겠어요.
Posted using Partiko Android
Congratulations @ziqon! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
<p dir="auto"><a href="http://steemitboard.com/@ziqon" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link"><img src="https://images.hive.blog/768x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/posts.png" srcset="https://images.hive.blog/768x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/posts.png 1x, https://images.hive.blog/1536x0/https://steemitimages.com/70x80/http://steemitboard.com/notifications/posts.png 2x" /> Award for the number of posts published <p dir="auto"><sub><em>Click on the badge to view your Board of Honor.<br /> <sub><em>If you no longer want to receive notifications, reply to this comment with the word <code>STOP <p dir="auto"><strong><span>Do not miss the last post from <a href="/@steemitboard">@steemitboard: <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/steemitboard-witness-update-2018-09-07" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link"><img src="https://images.hive.blog/768x0/https://steemitimages.com/64x128/http://i.cubeupload.com/7CiQEO.png" srcset="https://images.hive.blog/768x0/https://steemitimages.com/64x128/http://i.cubeupload.com/7CiQEO.png 1x, https://images.hive.blog/1536x0/https://steemitimages.com/64x128/http://i.cubeupload.com/7CiQEO.png 2x" /><td><a href="https://steemit.com/steemitboard/@steemitboard/steemitboard-witness-update-2018-09-07" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">SteemitBoard - Witness Update <blockquote> <p dir="auto">Support <a href="https://steemit.com/@steemitboard" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">SteemitBoard's project! <strong><a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Vote for its witness and <strong>get one more award!