감자 텃밭

[모의해킹] Kioptrix Level1.2 침투 테스트 본문

Pentest/Pentest

[모의해킹] Kioptrix Level1.2 침투 테스트

g2h 2023. 10. 9. 23:39

vulnhub에서 제공하는 취약한 시스템인 kioptrix level1을 사용하여, 침투테스트를 실습해 보았다.


● 정보 수집 : Nmap, netdiscover
● 취약 스캐닝 : SQL Injection
수집정보
1. OpenPort : 22, 80
2. OpenSSH 4.7p1, Apache  2.2.8, PHP 5.2.4
3. mysql 서비스 사용 (스캔결과 x 외부노출 x 내부적으로 사용설정)

동일 네트워크 대역대에 타깃 시스템이 존재하므로, 타깃 ip부터 확보했다.

172.30.1.8 ip로 확인했으며,

추가 정보수집을 이어나갔다.

오픈되어 있는 서비스로는 22(SSH), 80(http)가 오픈되어 있었다

그 외의 정보로는 Linux Kernel 2.6.x 버전 openssh 4.7p1, apache 2.2.8, 그리고 php 5.2.4를 사용하고 있다.

이를 토대로 ExploitCode가 존재하는지 찾아봤다.

ssh 취약점으로는 username 열거 코드밖에 없었으며, apache php를 토대로 가능성이 존재하는 익스플로잇 코드를 찾아봤다.

두 코드의 공통점으로는 해당 시스템에서 cgi가 동작중이어 한다는 전제조건이 존재했다.

우선 좀 더 정보를 수집하기 위해 80 웹 서비스에 대해 조사했다.

nikto를 통해 확인했을 때 해당 시스템에서 cgi는 찾을 수 없다는 문구가 출력된 걸 봐서 앞전에 확인했던

익스코드는 사용할 수 없는 것으로 판단된다. 다른 정보를 좀 더 확인해 봤을 때 phpmyadmin 페이지가 노출되었다.

그 외에 내부침투에 관련된 특이 정보는 추가적으로 발견되지 않았다.

우선 웹서비스 관점에서 둘러보기 위해 웹 접속을 시도해 보았다.

여러 페이지가 존재했으며 로그인 페이지도 존재했다.

위 로그인페이지와 phpmyadmin 페이지도 로그인기능이 있어 SQLI를 시도해 보았지만 SQLI는 되지 않는 거 같았다.

그러면서 다른 공격벡터를 찾기 위해 여러 페이지를 돌아다니던 중 특정 페이지에서 또 다른 SQLI가 될 거 같은 페이지를 발견했다.

왼쪽의 목록을 기준으로 URL 파라미터를 보면 오름차순으로 정렬을 하여 웹 페이지에 렌더링 된다.

이를 통해 SQL 문의 order by 문을 사용하여 정렬을 하는 걸로 추정된다.

id 파라미터와 sort 파라미터에 sqli가 되는지 테스트해 보았다.

id 부분에서 sql systax 오류가 출력되는 걸 확인했다. 이를 통해 SQL Injection에 취약하다는 걸 파악했다.

id 파라미터는 정수형으로 받는 거 같다. 해당 sql의 결괏값을 웹 페이에 출력되므로

Union based sql injection 공격이 가능하므로, 칼럼 수를 파악하여 공격을 이어나갔다.

칼럼의 개수는 6개로 파악했다. 이후 출력되는 칼럼의 위치를 파악해 보았다.

2,3 이 브라우저 내에 렌더링 되고 있다. 이제

테이블명과 칼럼명 그리고 데이터를 추출해 보았다.

http://kioptrix3.com/gallery/gallery.php?id=1%20and%201=2%20union%20select%201,table_name,3,4,5,6 from information_schema.tables where table_schema=database()%23%20%20%20%20%20&sort=filename#photos
http://kioptrix3.com/gallery/gallery.php?id=1%20and%201=2%20union%20select%201,column_name,3,4,5,6%20from%20information_schema.columns%20where%20table_name=%27dev_accounts%27%23%20%20%20%20%20&sort=filename#photos
http://kioptrix3.com/gallery/gallery.php?id=1%20and%201=2%20union%20select%201,concat(username,0x3a,password),3,4,5,6%20from%20dev_accounts%23%20%20%20%20%20&sort=filename#photos

두 계정과 계정에 대한 패스워드를 추출할 수 있었다.

하지만 패스워드는 해시암호화 되어 있는 것으로 보이며, 해당 적용된 해시 알고리즘이 무엇인지 확인해 보았다.

해당 해시 알고리즘은 md5로 되어있으며, md5는 취약한 해시 알고리즘으로 md5의 경우 복호화가 가능하다.

두 계정에 대해 복호화를 하여 패스워드를 알아냈다.

dreg : Mast3 r

loneferret: starwars

두 계정을 획득하였으며, 이를 토대로

기본 index.php 에서 확인되던 로그인 페이지와 phpmyadmin 페이지에서의 로그인 시도를 해보았지만,

로그인되지가 않았다..

그래서 다시 둘러보던 중 ssh 서비스가 실행 중이었으니 ssh 접속을 시도했다.

dreg 계정으로는 sudo 권한도 없으면 몇몇 명령어 또한 제한되어 있다.

다음 계정으로 접근해 보았다.

su 명령어와 ht명령어가 root 권한으로 일시적 사용이 가능하다.

su 명령어는 뭔진 몰라도 사용이 안된다고 출력된다...

ht 명령어를 실행시키니 특정 에디터가 실행됐다.

해당 디렉터리에 존재하는 readme 파일을 읽었더니 ht 명령어를 쓰라고 되어있다 이것이 힌트인 거 같다

해당 명령어를 통해 파일을 생성하거나 보고 쓰고 가능하다는 거 같다.

그렇다면 ht 명령어를 통해 파일에 접근이 가능하고 root 권한으로 실행된다는 뜻이다.

그럼 여러 방법으로 root 권한이 획득가능하다.

나는 sudoers 파일에서 sudo 명령어를 통해 bash 명령어가 가능하도록 설정했다.

(alt+f 를 통해 메뉴를 선택할 수 있다.)

성공적으로 root로의 권한 상승을 한 걸 볼 수 있다.

이 방법 말고도

권한을 ALL로 주어도 된다.

 

 

※ 내용이 이상하거나 문제가 있을 경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.