본문 바로가기
Hacking/Hacking Beginner Class (normaltic)

[해킹 비기너 클래스] Drill Course 3주차 정리 (WordPress exploit)

by st-og 2023. 10. 5.

상대방의 피시에서 wordpress로 만들어진 웹 사이트가 서비스 중일 때 취약점을 찾는 방법에 대해 알아보았다

 

1. 기본적으로 /wp-admin 경로로 접속을 하면 admin으로 접속할 수 있는 로그인창을 확인할 수 있음

2. wpscan을 사용하면 wordpress로 만들어진 페이지에 대해 자세히 스캔할 수 있다

3. wordpress 관리자 페이지에 접속을 했다면 appearance의 editor탭에서 리버스 쉘을 실행시킬 수 있다

 


Task 1

먼저 정보 수집을 위해 nmap 스캔을 해보았다

 

80번 포트가 열려 있음을 확인할 수 있다

접속을 해보면

 

 

홈페이지에 wordpress로 만들어짐을 알려준다

wordpress 페이지임을 알았으니 wpscan을 사용하여 좀 더 자세히 스캔해 보자

 

wpscan의 옵션은 많은 것이 있지만 간단한 스캔과 사용자 리스트 정도만 확인을 해보기 위해 --enumerate 옵션을 사용해 보았다

 

wpscan --url [url주소] --enumerate u

 

 

위의 명령어를 입력하면 많은 정보를 확인할 수 있다

--enumerate 옵션을 사용한 덕분에 hugo, c0ldd, philip이라는 유저가 있음을 알게 됐다

 

해당 유저의 이름으로 로그인을 시도해 보자

wordpress로 만들어진 페이지에서 admin으로 로그인을 하는 페이지는 기본으로는 /wp-admin 경로에 있다

해당 페이지에서 아까 얻은 유저 이름을 넣고 비밀번호를 하나하나 다 넣어보면 된다

하지만 직접 하기에는 많은 시간이 필요하므로 wpscan에 있는 브루트포싱 기능을 사용하면 된다

 

wpscan --url [url주소] -U [유저이름] -P [패스워드 단어 리스트]

 

--usernames [유저 이름 리스트] 옵션을 사용하여 브루트포싱을 해도 되지만 찾은 유저의 이름이 3개밖에 안되므로

동시에 돌리기 위해 각각의 터미널에서 동시에 해당 공격을 해주었다

 

공격을 진행하다 보면 c0ldd의 비밀번호가 9876543210 임을 알려준다

해당 계정으로 로그인을 해보자

 

 

 

관리자 페이지에 들어온 것을 확인할 수 있다

 

만약 관리자 페이지에 들어왔다면 리버스 쉘을 올려 해당 사이트의 쉘을 획득할 수 있다

appearance의 editor 탭에 들어가 보자

 

 

해당 페이지에서 header.php에 리버스쉘을 추가해 준다면 해당 페이지에 접속을 하면 바로 리버스 쉘이 실행이 될 것이다

php로 작성된 리버스쉘을 header.php파일에 추가해 보자

 

 

github에 있는 리버스쉘을 다운로드한 후 해당 코드를 추가해 주었다

 

 

그 후 쉘을 받기 위해 nc -nlvp 명령어를 사용하고 페이지 새로 고침을 하게 되면

 

www-data의 계정으로 쉘을 획득하게 된다

 

쉘을 획득하고 나서 해당 쉘을 제대로 활용하기 위해 쉘의 모양을 바꿔줘야 한다

python3 -c "import pty;pty.spawn('bin/bash')"

그 후 해다 웹 사이트의 유저 정보를 확인하기 위해 /etc/passwd를 확인해 보자

c0ldd라는 실사용자 유저가 있음을 확인할 수 있다

 

그 후 www-data일 때 얻어야 하는 가장 중요한 정보인 database 정보를 알아보기 위해 /var/www/html 파일로 접속을 해보자

 

wp-config.php를 확인해 보자

데이터베이스의 유저이름이 c0ldd이고 비밀번호는 cybersecurity임을 확인할 수 있다

 

실사용자 c0ldd 계정이 있음을 확인했고 db의 비밀번호가 cybersecurity임을 확인했다

어쩌면 c0ldd의 계정 비밀번호도 동일할 수 도 있다

 

db에서 얻은 정보를 가지고 유저의 정보에 대입해 보자

c0ldd의 계정에 접속하는 데 성공했다

이렇게 미리 얻은 정보를 가지고 다른 서비스에 대입해 보는 것을 크리덴셜 스터핑이라 한다

 

 

먼저 해당 계정으로 사용가능한 sudo 명령어를 확인해 보자

vim과 chmod ftp를 관리자 권한으로 사용할 수 있다고 한다

해당 명령어를 사용하여 공격에 사용이 가능한지 알기 쉽게 정리해 둔 사이트가 있다

 

https://gtfobins.github.io/

 

GTFOBins

pg Shell File read SUID Sudo

gtfobins.github.io

 

해당 사이트에 접속해 사용가능한 명령어를 입력하면

 

해당 명령어를 어떻게 사용해야 하는지에 대해 알려준다

여기서는 sudo ftp를 사용한 다음 !/bin/sh 을 실행해 주면 root의 쉘을 획득할 수 있다고 한다

 

성공적으로 루트 쉘을 획득하였다