Tomcat의 취약점에 대해서 조사해봅시다


Tomcat 취약점

Tomcat은 대부분의 사람이 아는것처럼 웹서버를 돌릴 때 사용된다.

아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너만 있는 웹 애플리케이션 서버라고 한다.

[ 고양이 디자인 무엇;;;]



일단 대표적인 Tomcat 취약점에 대해서 설명해보겠다.


먼저 tomcat에는 서블릿 클래스를 등록하는 web.xml이 존재한다. 해당 문서에는 다음과 같이 PUT과 DELETE 메소드에 대해서의 거절유무를 설정하는


'readonly' 속성이 존재한다. 해당부분이 'false'로 되어있다면 취약점이 발생한다. (거절하시겠습니까 ? 아니요 = put,delete메소드 찬성!)



default는 true인데 개발자가 false로 변경하고 건들지 않았을수도 있음.


아무튼 간에 이후에 공격자는 위조된 요청을 보내서 PUT방식으로 업로드가 가능해짐


여기서 jsp파일을 업로드를 했을 때 확장자 필터링이 없을 시에는 당연히 PUT 요청이가서 취약점이 발생할 것.


하지만 대부분 확장자 필터링을 거치게되는데 어떠한 필터링 검증로직이냐에 따라서 다양한 우회 기법이 있을 수 있음.


기본적으로 공백이나 '\'같은 문자들은 치환되어 있는데 여기서 jsp파일 확장자 필터링을 우회하는 취약점이


CVE-2017-12615 이다.


이렇게 취약점이 세분화가 되는거 같은 느낌적인 느낌

12615 같은 경우에는 NTFS file stream개념을 이용하여 업로드하는 취약점이다 (띠용;;)

NTFS 볼륨 파일의 구조
-> <파일이름> : <스트림 이름> : <스트림 유형>
ex) "test.jsp"는 "test.jsp :: $DATA
이런식으로 서버에 원격 코드를 실행할 수 있는 RCE 취약점이 존재했었다.

CVE-2017-12616은 가상 디렉토리를 이용해 CVE-2017-12615와 같이 이용하는 취약점 공격이다
tomcat의 context.xml에 다음과 같이 추가한다.

<Resources className="org.apache.naming.resouces.VirtualDirContext" extraResourcePaths="/temp=C:\tomcat\webapps\ROOT" />

이렇게 추가하면 <URL>/temp로 접속하게되면 index.jsp에 접속한 것과 똑같은 효과를 가지게 된다.
여기에 12615를 이용하여 다음과 같이 이용한다.

ex) <URL>/temp/index.jsp::$DATA

이렇게된다면 소스코드 열람이 가능해지게 되는것이다. [출처]

CVE-12617은 12515와 같이 readonly=false환경에서 jsp확장자 검증의 취약한 로직을 이용한다.
확장자 검사를 우회할 수 있는 패턴인 '/'를 붙여 요청하면 정상적으로 파일이 업로드 되는 취약점이다.

=> PUT 방식 요청에 정상적인 업로드 파일을 변조하면 가능


'보안' 카테고리의 다른 글

Tomcat,JCE 취약점 ppt  (0) 2019.03.29
[보안] CPU 범용 레지스터  (0) 2019.03.27
[보안] 티스토리 블로그 취약점 문의  (0) 2019.03.25
[보안] 리버싱 입문기  (0) 2019.03.25
이번 주 해야할 것  (0) 2019.03.25

리버싱 입문 1


리버싱 입문자로써 가장 많이 추천하는 책인 '리버싱 핵심 원리'를 통해서 학습을 진행할 것이다!



리버싱계의 성경(?)이라고 하는데 넘 기대댄다

우선 이 책은 출판된지 굉장히 오래되었다. 그래서 ollydbg로 시작을 하는데 나는 x32dbg로 실습을 진행하겠다. (64비트가 대세니까 x64쓸거임 ㅎ)


우선 다음의 hello world!로 리버싱을 입문하였다.


HelloWorld.exe


다음과 같이 간단한 소스이다.


x32dbg에 넣은 후에 [F9]키를 한번 누르면 EntryPoint(를 찾아준다



Entry Point는 PE파일의 실행 시작 주소를 가르킨다 ASLR이라고 프로그램이 시작될때마다 주소가 바뀌게하는 안티 디버깅 기법도 알아두면 좋을거 같다.


아무튼 내가 오늘 해볼일은 디버거의 여러가지 단축키를 손에 익을(?)떄까지 사용해볼것이다.


F7, F8, F9, Ctrl+F2 등을 이용해서 OPcode를 실행시켜보면서 main함수를 찾아볼 예정이다. (단축키설명 생략)


call인자는 함수의 호출을 뜻한다. call 부분에서 F7을 누르면 해당 함수로 진입한다.


Ctrl+F9는 함수에 진입한 후 빠져나올 때 사용하는데 return값으로 커서가 이동하니 F7을 한번만 더눌르면 함수 탈출에 성공하고 다음 opcode로 넘어간다.

(모르면 단축키막 눌러보자!)


어쨌든 우리는 MessageBox API를 호출하는 부분이 main함수의 안쪽이기 때문에 MessageBox관련 내용이 나올때까지 디버깅을 실시한다.

(F7쓰지말고 F8만... 함수한번들어가면 나오기힘듬...)



그러다보면 <&GetCommandLineA>이런거도 보게되고 좀더 디버깅을 하다보면



다음과 같이 내가찾던 MessageBox API를 호출하는 코드를 확인할 수 있다.

그래서 해당함수 안으로 F7로 진입해보면

짜잔! main함수 안으로 진입하였다!! 밑의 push 두개는 각각 Title과 data를 스택에 주소를 할당하는 과정인것 같다.





그 이후로 여러가지 디버거의 명령어들과 단축키들에 대해서 실습해본다.

대부분 올리디버거랑 단축키는 비슷했다.


[Ctrl+G]


[F2 - BreakPoint]


[; - 주석] (주석이랑 레이블 동시에 안되더라; 올리랑 약간다른듯)

[: - 레이블]



주석과 레이블 확인 (Ctrl+Alt+C,L)


레이블은 basecamp를 차릴때 많이 사용하는 듯하다 저자 이승원님은 이렇게 basecamp를 차린다고 합니다.



다음으로 위와같이 한줄씩 디버깅하는게 아니라 함수가 호출된 부분을 검색할 수있는 쉬운 방법도 있다고 한다.

xdb같은경우에는 올리랑 조금 다르더라.

'우클릭 - 다음을 찾기 - 모든 모듈 - 모듈간 호출' 에서 message를 검색하고 떠블클릭하면 해당 opcode로 이동!

- 이렇게하면 좀더 빨리 main안으로 진입할 수 있었을텐데...



나머지 memory map이나 name같은 것들은 책을보면서 실습해보면 되겠다.


이제는 프로그램을 패치 시켜보겠다. Hello world를 Hello reversing으로... ㅋㅋ


첫번째 방법으로 문자열 자체를 패치시키면 된다.

(hello world가 들어간 12692A4를 헥사덤프에서 이동후에 데이터값을 변조)




오오오오!! ㅋㅋㅋㅋ (문자열 수정의 제약조건 - 기존 문자열 버퍼 크기 이상의 문자열을 입력하긴 어렵다)



두번째방법! 메모리 영역에 새로운 문자열을 생성하여 전달해본다.

- 현재는 Hello world를 F292A4주소에 전달하고, 메세지박스가 그걸 출력해준다.

그러면 이문자열의 주소를 변경해서 출력해주면 될것 같다. (전혀 다른 문자열주소를 함수에 넘겨줌)



헥사의 빈 Null padding공간에 데이터를 작성한 후




push에 수정된 메모리 주소를 넘겨준다




그랬더니...아니 이건






[헤헤]



오늘은 여기까지 ㅅㅅ


정리.

- xdbg로 실습.

- hex값 변조로 데이터 변조

- push 메모리 주소값 변조를 통해 내용변조

- 계속 디버깅해봐야 눈에 stub code가 보인다고함

- 리버싱 재밌다. 뒤에가면 어렵다는데 무섭당 -끝-








'Reversing' 카테고리의 다른 글

PE File(1)  (0) 2019.04.02
리버싱 5  (0) 2019.04.02
리버싱 4  (0) 2019.03.29
리버싱 3 Stackframe  (0) 2019.03.28
리버싱 2  (0) 2019.03.27

오늘부터 리버싱이다!!!!


리버싱은 하는 방법에 따라서 2가지로 나뉘게 된다. 정적분석과 동적분석이다.


정적분석

정적분석은 파일의 겉모습을 분석하여 관찰하는 방법이다. 동적적인분석과는 다르게 파일을 실행시키지 않고 분석한다.

파일의 종류, 크기, 헤더정보, API 등 여러가지 정보를 얻어서 동적분석할 때 유용하게 사용될 수 있다.

정적분석 툴로는 IDA, Ghidra가 있고, 올해 3월에 기드라가 무료로 풀렸는데 ida랑 ghidra딱 두가지만 사용해 볼 예정이다.



[사진. Ghidra 짱짱]


동적분석

동적분석은 말그대로 동적으로 PE를 분석한다. 프로그램을 실행시켜보면서 분석하는 행위.

레지스트리, 메모리 상태 등을 확인하며 프로그램의 동작원리를 파악할 수 있다.

대표적인 동적분석 도구로는 x64dbg, ollydbg가 있으며 대세가 지난 올리디버거 보다는 x64dbg를 사용해볼 예정입니다



[그림2. 무려 한글버전의 xdbg] - 영어로 바꿔서 쓰는게 호환좋다고함;;


입문으로 블랙펄 콘치님의 리버싱 튜토리얼부터 시작하였다. (https://bpsecblog.wordpress.com/2016/06/10/re_tutorial_3/)


먼저 PE파일을 준비했다. 소스는 다음과 같이 준비했다. (환경 : 코드블록)



이 PE파일을 리버싱할 것이다. 

hellow!!.exe



먼저 무작정 x32dbg에 해당 파일을 넣고 돌려보았다. 그 후에 F7,F8,F9를 눌러가며 무슨 동작을 하는 키인지 구글링하면서 눌렀다.


F7 : 안으로 단계진행 (함수만나면 진입)

F8 : 건너서 단계진행 (함수만나도 그냥넘어감)

F9 : 실행 (첨부터 끝까지 실행됨)


짜잔! call을 지나서 hellow!!가 출력됨. 끝! (visual studio로 안해서 그런건진 모르겠는데 내용이 약간 달랐다)






'보안' 카테고리의 다른 글

[보안] Tomcat 취약점  (0) 2019.03.26
[보안] 티스토리 블로그 취약점 문의  (0) 2019.03.25
이번 주 해야할 것  (0) 2019.03.25
[보안] 취약점 ppt  (0) 2019.03.22
[보안] 블로그 취약점 분석중(2)  (0) 2019.03.21

1 page proposal

file-upload 취약점

apache tomcat 취약점

리버싱 입문 - 리버싱 핵심 원리 및 구글링을 통한 검색

'보안' 카테고리의 다른 글

[보안] 티스토리 블로그 취약점 문의  (0) 2019.03.25
[보안] 리버싱 입문기  (0) 2019.03.25
[보안] 취약점 ppt  (0) 2019.03.22
[보안] 블로그 취약점 분석중(2)  (0) 2019.03.21
[보안] FCKeditor 취약점 조사  (0) 2019.03.21

이번에 13회 정보보안기사 필기에 응시하게 되었다...


보안업종에 재직하면 보안기사 하나쯤 있으면 좋을것 같다고 생각해서 준비하게 되었다.


시험장소는 동대문역사문화공원역의 한양공업고등학교에서 보게되었다.


아침 9시까지 입실이라서 오산에서 수원역에 간다음 수원역에서 기차타고 서울역가고 서울역에서 지하철타고 동대문역으로 갔다.


은근 토요일인데도 사람이 많아서 의외였다.


그렇게 9시 반에 시험이 시작하고 1과목부터 5과목 총 100문제를 풀고서 나오게되었다.


1과목 시험지볼때부터 미라이봇넷, /etc/hosts 맞추고 3번부터 갑자기 모르는거나와서 당황했다;;


사실 준비를 그렇게 많이하고 가지 않아서 그런것 같았다. 아무튼 성공적으로(?) 시험을 마친후 학교 정문에서 IT 학원 라이xx에서 피크닉과 함께 회사 홍보


물(?) 같은걸 나눠주길래 받아서 피크닉먹었다.


동대문역 화장실에 라이xx 홍보물이(?) 엄청나게 버려져있었다는 소문이 있다.


발표는 4월 13일 다다다음주에 난다고 한다. 결과는 나와봐야 알것같다.


기사딴후에도 가끔 공부하는 차원으로 시험을 보면 좋을것도 같다고 생각했다. 끝






'보안기사' 카테고리의 다른 글

[보안기사] 보안기사 필기공부 8회  (1) 2019.03.19

FCKeditor

FCKeditor는 게시판 에디터 입니다. 버전이 업그레이드 되면서 CKeditor(?)로 바뀐거 같은데 확실하진 않아요


게시판이라는게 xss공격에 취약한 부분이 있기마련! 조심스럽게 구글에 'FCKeditor 취약점'을 검색했습니다. [검색!]

그랬더니 제가 생각한 xss보다는 fileupload취약점이 더 많이 검색되었습니다...

가장 대표적인 취약점 페이지로는 test.html이 되겠다.



해당 파일의 경로에 test.html를 서버로 돌려보면 업로드를 할 수 있는 부분이 있다.

이 부분에 웹셸을 업로드할 수있는 취약점이 있다고 한다. (ver. 2.6.11)

웹셸은 알아서 다운로드 받아서 실습하고, config과정 들은 [여기]를 참고하면 될 것같다.


이러한 취약점이 있는 페이지들은 다음과 같다.


- /FCKeditor/editor/filemanager/browser/default/connectors/test.html

- /FCKeditor/editor/filemanager/browser/default/browser.html

- /FCKeditor/editor/filemanager/upload/test.html


이거말고도 더있다능...


대처방법

일단 snort룰셋을 적용 시키는 방법


1. drop tcp any any -> $내부_네트워크 any (content:"test"; sid=10000001;)

2. alert tcp $내부_네트워크 any -> any any (msg:"wp-login access"; content:"test"; sid=10000003;)


1. 외부에서 내부의 test페이지로의 접근을 차단하고,

2. 내부에서 test페이지로의 접근을 탐지한다.


그 다음으로는 아얘 test파일 자체를 삭제하는 방안이 있고, 서버단에서 해당 파일의 실행권한을 제한하는 방법이 있겠다.


'보안' 카테고리의 다른 글

[보안] 취약점 ppt  (0) 2019.03.22
[보안] 블로그 취약점 분석중(2)  (0) 2019.03.21
[보안] Joomla 취약점  (2) 2019.03.21
[보안] 블로그 취약점 분석중  (0) 2019.03.20
[보안] Wordpress 취약점 조사  (1) 2019.03.20

ㅋ이번엔 joomla 취약점 조사이다


Joomla


편하게 줌라(?)로 말하겠다. 줌라역시 wordpress와 더불어 세계 3대 CMS로 꼽힌다. (비교는 되지 않지만...)



줌라 역시 wordpress와 마찬가지로 수많은 취약점들이 존재합니다.

줌라의 공식 홈페이지에서 현재 올라오는 취약점들과 해결된 취약점들의 목록을 확인할 수 있습니다. [바로가기]



Joomla역시 Wordpress와 마찬가지로 joomla 자체 이슈, 플러그인 이슈, 테마 이슈등 홈페이지를 제작하는 프로그램이 갖는 이슈들에 대해서 다양한 취약점이 발견되고 있고, 그중에서도 sql injection 취약점 및 다른 취약점들이 업로드 되고 있습니다. (exploit-db)




joomla도 wordpress의 wp-login.php와 마찬가지로 고유의 페이지('administration')(를 가지고 있습니다. (administrator 입니다. administration 아님 ㅎ)

비슷하게 공격자는 joomla로 작성된 페이지임을 확인해보기 위해서 다음과 같이 URL을 요청해볼 수 있습니다.



물론 페이지가 뜨면 joomla로 작성되었을 수도 있겠다. 라고 생각할 수도 있을것 같습니다. /administration을 워낙 많이 쓰는지라 자세하게 모르겠습니다...

snort도 wordpress랑 마찬가지로


1. drop tcp any any -> $내부_네트워크 any (content:"administartor"; sid=10000001;)

2. alert tcp $내부_네트워크 any -> any any (msg:"wp-login access"; content:"administartor"; sid=10000002;)


이렇게 외부에서 내부로의 액세스는 차단하고 내부에서 해당페이지에 접근하는 것만 열어두면 되지 않을까 싶다.


다른 joomla 취약점

joomla도 내가알지 못하는 resolved된 취약점들이 많이 있다.

joomla의 권한 상승 취약점과 계정 생성 취약점에 대해서 잘 정리해 놓은 블로그가 있어서 소개한다. [바로가기] [원격 코드 실행 취약점]

wordpress와 joomla 취약점을 보면서 php를 배워보고 싶다고 느껴졌다!






'보안' 카테고리의 다른 글

[보안] 취약점 ppt  (0) 2019.03.22
[보안] 블로그 취약점 분석중(2)  (0) 2019.03.21
[보안] FCKeditor 취약점 조사  (0) 2019.03.21
[보안] 블로그 취약점 분석중  (0) 2019.03.20
[보안] Wordpress 취약점 조사  (1) 2019.03.20

+ Recent posts