안녕하세요! 제가 이태까지 pentest 실습을 ignite으로 했는데 지금 무슨 이유인지 몰라도 오류가 계속 나네요.
다른 사람 분들은 되시는지 모르겠지만.. 확실한 건 저는 안되네요! start machine 버튼이 있어야만 하는데 없어서
이런 문제점이 발생하는 것 같습니다.
그럼 다른 문제 풀면 되겠죠!
join room 하고 밑에 start machine을 합니다.
어쨌든 다시 정보 수집이랑 서비스 분석을 하고 Exploit 까지 해보겠습니다.
POST-Exploit은 다음 포스트에 올릴게요
start Machine 누르고 조금 기다리면 IP가 나올겁니다.
1) 정보 수집
nmap -sV [IP주소]
22번 포트에 우분투의 OpenSSH 서비스를 이용하고 있네요.
그리고 80번 포트에 Apache httpd 2.4.18 버전을 이용하고 있네요! (이 아파치 버전은 오래된 거예요)
80번 포트는 웹 서버 포트 번호이니 한 번 들어가 보겠습니다.
그럼 그냥 넘어가진 말고요. 이 사이트에 어느 디렉터리가 있고 어느 파일이 있는지 찾아보겠습니다.
명령어 gobuster을 이용하겠습니다. 만약 없으시면 apt-get install gouster 하시면 돼요
gobuster dir -u http://10.10.231.48/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
이 명령어는 특정 사이트에 txt 파일에 있는 단어들을 넣어봐서 디렉터리 또는 파일이 있나 없나 확인을 해줍니다.
-u 는 url을 뜻합니다. -u [찾을 IP또는 사이트명] 이렇게 쓰시면 되고요
-w 는 디렉터리와 파일 목록 찾을 때 단어들 혹은 참고할 파일입니다. -w [파일 위치] 이렇게 쓰시면 돼요
보통 파일 위치는 저기 적혀 있는 대로 /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt 이거 쓰시면 돼요.
등등 gobuster에는 많은 옵션들이 있어요. 따로 제가 정리하고 일단 여기까지만 알고 넘어갈게요.
찾다 보니 밑에 content라는 디렉터리가 있어요라고 알려 줬네요.
한 번 들어가 볼게요
SweetRice라는 서비스가 있네요. 한 번 자세하게 코드를 봐보겠습니다.
그저 글씨만 있지 버전 정보라던가 서비스의 버전이 없네요.
그럼 그냥 넘어가야 되겠죠..
이렇게 정보 수집으로 content에 SweetRice라는 서비스가 있다는 것을 알 수 있었습니다.
2. 서비스 분석
이제 취약점을 찾을 겁니다.
웹 사이트나 exploit db 들어가서 해도 되지만 저는 그냥 searchsploit을 이용하겠습니다.
searchsploit sweetrice
이래서 버전 정보를 알면 좋은 점이 0.5.3 이면 맨 처음의 코드을 이용하면 되는데
버젼 정보를 모르니 최악인 경우 될 때까지 전부 사용을 해야 합니다.
각 취약점 이름이 있는데 정리해드리겠습니다.
Remote File Inclusion : 클라이언트가 악성 파일을 포함해 애플리케이션을 실행할 수 있습니다. 이를 이용해 다른 서버의 악성 코드를 서버에 넣어서 실행시켜 서버를 마비 혹은 정보를 빼올 수 있습니다.
Multiple Vulnerabilities : 취약점이 하나가 아닌 여러 취약점들이 있는 경우입니다. XSS부터 시작해 SQLi, RCE, 등이 있는 경우입니다.
Arbitrary File Download : 다운로드를 아무거나 가능한 경우입니다. 경로를 통해 다운로드가 가능해서 ../../ 처럼 상위 폴더의 파일들을 가져올 수 있습니다.
Arbitrary File Upload : 악의적인 php코드 혹은 코드를 서버에 올릴 수 있는 취약점입니다. 이를 통해 웹 쉘을 이용해 해킹이 가능합니다
Backup Disclosure : 서버의 백업 파일을 볼 수 있는 취약점입니다. 이 백업 파일을 이용해 쉽게 코드을 가져와 볼 수 있습니다.
Cross-site Request Forge : CSRF 공격으로 사용자의 의도와는 상관없이 공격자의 의도대로 특정 동작이 실행되는 취약점입니다.
'FCKeditor' Arbitrary : 웹 기반 텍스트 편집기로 임의의 파일 업로드 취약점을 말합니다. FCKeditor이 파일 업로드 하는 과정에서 발생하는 취약점입니다.
일단 저는 1.5.1 버전이라 믿고 Backup Disclosure 취약점을 실행하겠습니다.
우선 Path에 있는 경로에 txt 파일이 뭘 말하는지 봐보겠습니다.
Path 경로는 거의 정해져 있습니다.
/usr/share/exploitdb/exploits/[방금 본 path] 이러합니다.
한 번 봐볼게요
cat /usr/share/exploitdb/exploits/php/webapps/40718.txt
저기 보시면 You can access to all ~~ 에 inc 라는 디렉터리가 있다고 알려주네요.
이렇게 모든 파일을 볼 수 있네요. php 파일은 웹 상에서 보기 힘들다는 건 아실 거예요.
php 코드가 바깥으로 안 보이게 했으니깐요.
근데 저기 아래에 lastest.txt을 눌러볼게요
1.5.1 버전이라는 것을 알려주네요.
sweetrice 1.5.1이라는 것을 알 수 있네요.
그리고 방금 보신 Arbitrary File Upload 취약점을 이용해 보겠습니다. 파일 업로드 공격만 하면 바로 끝나지는 겁니다.
파이썬 코드 실행하면 파일 업로드 공격이 가능한 코드가 실행되겠죠.
python /usr/share/exploitdb/exploits/php/webapps/40716.py
url 작성하라니 작성하고.. 보니..
계정이 필요하네요..! 저희는 계정을 모르고 가입도 안되니깐 공격이 안 통하겠네요.
다시 말하면 계정을 알면 이 공격이 통하겠죠?
일단 이 코드 실행 중지 (ctrl + c) 하고 다시 inc 파일에 뭐가 있나 찾아보겠습니다
mysql은 db인데 backup 파일이 있네요? 안에 계정 정보가 있을 확률이 크겠죠!
들어가 보겠습니다.
sql 파일을 다운하고 봐보겠습니다.
ctrl+f 눌러서 pass 입력해 찾아보겠습니다.
옆에 42f74... 이게 비밀번호겠네요 그리고 오른쪽을 보면
admin의 ID가 manager 이라는 것을 알 수 있습니다.
일단 정리하겠습니다.
ID : manager
PW : 42f749ade7f9e195bf475f37a44cafcb
따로 파일에 저장을 하겠습니다. vi info 해서 작성 후 저장 그리고 언제든지 cat 문으로 확인 가능하게
하겠습니다.
정말로 비밀번호가 저거 일 수도 있으니 한 번 실행해보겠습니다.
리버스 쉘은 서버에 코드를 넣어서 공격자가 원격으로 조종 가능하게 해주는 쉘입니다.
일단 대충 hello 적어서 넣어 볼게요.
fileName에 친절하게 어느 파일 형식을 써야만 하는지 알려줘요 그러니 그중 하나 골라서 하시면 됩니다.
php5을 추천드려요!
패스워드가 틀리다고 안된다네요...
하긴.. 누가 저렇게 패스워드를 적겠어요. 아마 해시된 패스원드 일 겁니다.
hash된 패스워드를 원래 데이터로 복구시키는 명령어가 있습니다.
존더리퍼을 이용하겠습니다.
일단 어느 해쉬 알고리즘을 이용했는지 알아내겠습니다.
hashid [해쉬된 비밀번호]
가능성이 많은 비밀번호가 많네요. 근데 시중에 가장 많이 이용되는 해쉬id는 MD5입니다.
MD5을 이용해 한 번 해쉬 된 비밀번호를 찾아보겠습니다.
일단 제가 저장한 ID와 PW을 이렇게 수정하겠습니다.
왜냐하면 존더리퍼가 파악할 수 있는 ID와 PW 형식이 저렇게 ID:PW 작성해야만 인식을 합니다.
그리고 실행하겠습니다.
john --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-MD5 [방금 저장한 ID랑 PW 파일 위치]
Password123 이라고 알려주네요.
한 번 되나 해보겠습니다.
이렇게 서비스 분석을 해 취약점 통하게 했습니다.
3. Exploit (공격)
이제 본격적으로 공격을 하겠습니다. 파일업로드가 아무거나 된다고 하니 리버스 쉘을 올리면 시스템을 장악할 수 있겠죠?
구글에 리버스 쉘 검색해서 유명한걸 가져오겠습니다.
https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php
이게 그 raw 눌러서 생긴 링크에요. 행여나 말씀드리자면 Raw 누르시고 위에 URL 링크가 다운로드 링크입니다.
이제 wget 이용해 다운로드 하겠습니다.
그리고 이 파일 이름 좀 길어서 바꾸겠습니다.
그리고 안에 코드를 약간 수정을 해야합니다. IP가 공격자의 IP로 바꿔야 되니깐요
vi revers.php5
ip에 제 vpn IP인 10.18.18.145 넣고 포트 번호는 7777로 하겠습니다.
그럼 이 파일을 가지고 있는 컴퓨터가 실행하면 제 ip로 포트번호 7777번으로 가만히 있기만 하면 연결이 되겠네요!
그리고 다시 파일을 업로드 해보겠습니다.
그리고 웹 사이트로 확인해보곘습니다. 저 링크을 복사해서 봐보겠습니다.
이제 포트 번호 7777을 열고 기다려 보겠습니다.
nc -nlvp 7777 작성하고 기다리면 됩니다.
그리고 웹 사이트에 있는 revers.php5을 클릭해 실행해 보겠습니다.
그럼?
저희는 쉘을 받아올 수 있다는 것을 알 수 있습니다.
이렇게 해서 exploit을 성공했습니다!
끝은 아니죠. 아직 저희는 관리자 권한을 탈취하지 못했습니다.
.
.
.
.
.
너무 포스트가 길어서 다음 포스팅에 Post-Exploit을 하겠습니다.
'보안지식 > pentest' 카테고리의 다른 글
pentest 실습 (Rootme) (0) | 2023.06.22 |
---|---|
pentest 실습 (LazyAdmin) - Post Exploit (0) | 2023.06.21 |
pentest - 서비스 분석하기 (0) | 2023.06.19 |
pentest - 정보 수집하기(nmap 사용) (1) | 2023.06.18 |
pentest 정의, tryhackme 실습 준비 (2) | 2023.06.17 |