웹 취약점에 대한 분석 시 주요 태그로 알려진 것들은 대다수 필터링 되어 있지만 간혹 빠지는 태그들이 있습니다. 그 중 오늘은 applet 태그에 대한 이야기를 하려합니다.
applet 태그는 웹에서 Java Applet을 이용하기 위해 object 태그와 함께 많이 사용되는 태그이죠. 이 applet 을 이용하여 다양한 형태의 공격을 수행할 수 있습니다. 신뢰하는 사이트 리스트에 포함된 곳에 악성 jar 파일이 업로드 되고, 외부에서 applet 태그를 이용하여 jar 호출 시 공격에 노출될 수도 있습니다.
공격자가 jar 파일 내 공격 구문을 사용하여 사용자에게 XSS를 하거나 개인정보를 탈취하는 등 여러가지 행위가 가능합니다.
Java Applet Attack :: File Upload 구간 찾기
일단 테스트를 수행하는 Target Page 중 File Upload가 가능한 구간을 찾습니다. Jar 파일을 업로드하여 공격에 사용할 수 있도록 하는것이 좋습니다. (동일 도메인 or 신뢰하는 도메인일 경우 좋습니다.)
대체로 확장자나 헤더, 파일 정상 로드 여부 등을 확인하나 필터링이 부족한 경우 jar 파일을 업로드 할 수 있습니다.
Java Applet Attack :: XSS 가능 구간(,) 찾기
이제 Target Page에서 XSS가 가능한 구간을 찾습니다. 우리는 applet, object 태그를 이용하여 Java Applet(jar) 을 불러와야 합니다. 물론 object 태그가 들어간 상태에서 이벤트 핸들러만 딱 들어가도 Stored XSS를 성공하지만, 더 재미있는 분석을 위해 원격지의 Applet 을 로드합니다.
Applet : 주요 속성(Attribute)
- archive : jar 파일 위치 XSS(Cross-site Script) + code : jar 에서 시작할 class명
- width : 너비
- height : 높이
Object : 주요 속성(Attribute)
- archive : jar 파일 위치
- classid : jar 에서 시작할 class 명
- codetype : 코드의 Type / ex) application/java
- width : 너비
- height : 높이
공격코드:
Java Applet Attack 을 이용한 악성파일 다운로드
Applet의 기능을 이용하면 쉽게 파일을 다운로드 받을 수 있습니다.
아래와 같이 다운로드를 수행하는 Code를 작성 후 jar 형태로 만들어 업로드합니다.
|
|
대응방안
-
File Upload 기능 시 비허용 확장자, 헤더에 대한 검사로직 추가 외부링크를 타는 경우도 많지만, 신뢰된 서비스에서 호출되는 Applet 을 위험성이 더 높습니다. 이를 해결하기 위해선 File Upload 구간에 확장자와 파일 헤더 등 비정상적인 파일의 업로드를 막아야하고 이를 쉽게 호출할 수 없도록 해야합니다. (Web Shell , File upload 취약점 해결 방법과 비슷합니다.)
-
XSS 대응 내부 서비스에서 일어나는 Applet Attack 은 XSS로부터 시작됩니다. 또한 XSS를 막기위해 여러가지 태그, 속성에 대해 필터링 하지만 등 주요 공격에 사용되지 않는 태그들은 놓치는 경우가 많습니다. 이러한 태그를 사용할 수 없도록 필터링 하는것이 중요합니다.
-
사용자 입장에서의 대응 Applet을 통한 XSS 코드나 악성 페이지로 접근했을 시 즉각 행위가 일어나는 경우가 많지만, 사용자의 입력을 유도하거나 추가적인 악성코드 다운로드를 유도하는 경우도 있습니다.
일단 경고 팝업(신뢰하지 않는 사이트로부터 호출)이 떴을때 유심히 살펴보며 개인정보, 다운로드 등에 신중해야합니다.
%% Applet Attack 관련 내용과 추가로 SET을 이용하여 Applet을 사회공학 기법에 사용하는 내용도 있네요. %% 참고하시면 좋을 것 같습니다. [ https://pentestlab.wordpress.com/tag/java-applet-attack/ ]
Reference
https://pentestlab.wordpress.com/tag/java-applet-attack/ http://www.hahwul.com/2016/01/java-java-applet-simle-code-for-java.html