!!!모의 침투에서 쓰이는 tool들은 비윤리적인 목적을 위해서도 쓸 수 있기 때문에 여러분이 저의 블로그 읽으시고 그 tool들로 뭐 하실지 그 책임은 저에게 없음을 알려드립니다. 여러분이 책임을 지셔야 되고, tool이나 exploit를 사용하기 전에 항상 코드를 잘 확인하고 아이피 주소가 맞는지 확인 잘 하셔야 됩니다.!!!!
안녕하세요~ 오늘도 TryHackMe 모의 침투를 하나 해봅시다!! 오늘은 공격만 말고 먼저 방어팀 (Blue Team) 역할을 하면서 다른 해커가 overpass라는 서버를 어떻게 해킹했는지를 분석한 다음에 우리가 침입할 차례일 것입니다!
위에 있는 사진의 Task1을 보니 우리가 가장 먼저 해야 될 것은 PCAP 파일을 분석하는 것이네요! PCAP이라는 파일은 Wireshark로 분석할 수 있습니다. Wireshark는 네트워크 패키지 분석 tool입니다.
Wireshark를 열어 pcap 파일을 한번 분석해 봅시다!
보시다시피 Wireshark는 다양한 패키지를 분석할 줄 압니다. TCP, HTTP, ARP 등! 우리에게 가장 중요한 정보는 맨 오른쪽에 있을 것입니다.
POSTf를 보니까 해커는 먼저 /development에 들어가서 upload.php이라는 페이지에서 무엇을 업로드했나 보네요? 이 패키지를 오른쪽 마우스 눌러 --> Follow --> TCP Stream를 누르면 더 정확한 정보를 얻을 수 있습니다. 한번 봅시다!
payload.php이라는 파일을 업로드했고, 이 파일은 reverse shell이네요! 공격자 아이피 주소와 포트가 다 나와 있습니다.
여기서는 이 홈페이지를 만든 개발자들이 무슨 잘못을 했을까요? 유저가 무슨 파일을 올리는지를 확인하지 않았다는 것입니다. 유저들이 input 하는 것과 올리는 것을 절대 믿으면 안 되며 올바르게 sanitize를 해야 됩니다.
예를 들어 사진을 올리는 예시를 같이 봅시다. 사진 파일은 원래 png, jpg인데. php를 허용할 필요가 전혀 없겠죠? .php, phtml, php5 등~ 같은 파일을 허용하면 내용 상관없이 모든 php 코드를 올리는 것이 가능하기 때문에 위 사진처럼 악성코드 올리는 것도 가능합니다. 그것을 막기 위해서는 유저들이 무슨 파일을 올리는지를 항상 잘 확인해야 합니다. 아울러 “;”, “:”, “>”, “<”, “/” ,”\”, “.”, “*”, “%”, “$” 같은 special character를 sanitize 하는 것이 중요합니다 (특히 xss 같은 취약점!!).
하지만 이 홈페이지는 모든 파일을 sanitize 없이 다 허용하기 때문에 해커는 쉽게 reverse shell를 얻을 수 있습니다.
권한상승도 wireshark로 확인할 수 있습니다! id 명령어를 보니 권한이 별로 없는 유저 www-data이고, su라는 명령어로 james이라는 유저로 switch 할 수 있습니다! (su --> switch user). 그리고 james이라는 유저의 비밀번호도 나오네요. (whenevernoteartinstant)
우리가 같이 했던 첫 번째 모의 침투처럼 여기서도 sudo -l 확인하는 것이 좋습니다! 이 명령어로 일반 유저에게 root 권한으로 실행시킬 수 있는 것이 있는지를 확인할 수 있습니다. james 유저는 ALL이네요. 만약에 james는 admin 같은 역할을 하지 않고 단지 일반 유저라면 root 권한을 주는 것도 아주 심각한 실수입니다.
그다음에는 /etc/shadow를 확인합니다. 이 파일은 모든 유저들의 암호화된 비밀번호의 hash가 있는 파일입니다. 이 파일은 원래 root이나 파일 관리자만 읽을 수 있는 파일이지만 james에게는 모든 권한이 있으므로 읽을 수 있습니다. 그 후에는 백도어를 남겨 지속적으로 접근할 수 있는 통로를 만들었습니다. 이 백도어의 링크가 나오기 때문에 코드를 확인이 가능할 것 같습니다. 아울러 2222번 포트 열려 있네요. 해커가 만약에 이 백도어를 아직 제거하지 않았다면 우리도 쓸 수 있을 것 같아요.
github 링크에 들어가서 코드를 확인해 보니 hash와 salt (1c362db832f3f864c8c2fe05f2002a05) 사용합니다. -a는 백도어를 위한 hash입니다. $hash:$salt 이런 식으로 둘이 합쳐 hash analyzer라는 홈페이지에서 무슨 hash 인지 확인해 봅시다! 결과는 sha512이고, hashcat 도움으로 비밀번호를 얻어봅시다
비밀번호 november16이네요! ssh로 2222포트 연결해 봅시다
성공! 해커가 남겨둔 백도어 연결 완료! 권한상승도 생각보다 쉽네요. suid_bash라는 suid binary 있습니다. ./.suid_bash -p라는 명령어로 root가 됩니다!
오늘은 배운 중요한 점들을 다시 요약하자면:
1) 유저들이 input하는 것을 절대 믿으면 안 돼요!!! 그러다가는 해킹 당합니다. Xss, Command Injection, File Upload 등을 항상 조심합시다!!
2) 일반 유저에게 root 권한을 주는 것이 아닙니다!!
3) 길고 강한 비밀번호들을 씁시다
오늘도 읽어 주셔서 감사합니다! 오늘은 리눅스를 했으니 다음은 windows 합시다!
0xmh
Try Hack Me 해킹 모의 침투 #2 (0) | 2022.05.19 |
---|---|
해킹/정보 보안을 배우려면 가장 빠른 방법! (4) | 2022.05.19 |