HTB-Redcross

0x01 端口扫描

开启常见端口如下:

  • 22端口:SSH服务
  • 80端口:HTTP服务
  • 443端口:HTTPS服务

访问不到80端口

发现也页面被跳转到了https服务并且域名为intra.redcross.htb

因此我们修改kali的hosts文件,重新启动一下网络服务,重新进行访问

访问到的页面内容如下:

点击contact form链接将跳转至https://intra.redcross.htb/?page=contact

0x02 XSS测试

此处设置3个并使其弹出不同的数字,这样我们即可通过弹出的数字不同准确的找到哪里存在xss

并没有弹框,但根据也页面回显的内容我们确定第三个框可能存在XSS漏洞。

更换XSS的POC,使其弹出cookie

其中10.10.16.5为kali的ip地址

获取到cookie如下

PHPSESSID=b9qhrlc0vhfsanp0ejnpsjeat3;%20LANG=EN_US;%20SINCE=1691670730;%20LIMIT=10;%20DOMAIN=admin

0x03 利用XSS获取web系统管理权限

修改cookie的值

保持调试模式刷新页面

0x04 子域名系统

根据文字提示

Please could you check the admin webpanel?

将admin.redcross.htb加入hosts文件

访问admin.redcross.htb内容如下

再次使用刚刚获得的管理员cookie进行尝试

替换cookie后刷新页面

0x05 添加系统用户

添加用户后获得我们的账户和密码

可以看到具有uid和gid等,很像Linux的账户

尝试进行ssh链接

获得了一个低权限shell

0x06 Web系统授权后RCE

点击

显然此处可以尝试RCE

Ip后拼接;和命令报错

输入正常ip则出现一个deny按钮

点击并抓包

拼接命令并将其进行url编码

成功执行了我们的命令

开启监听一个端口1101

使用如下payload:

成功获取反弹shell

获取到www-data用户

www-data权限更高些

0x07 获取标准终端

再禁用终端回显

查看actions.php

在其中看到deny功能的方法

可以看到因为未对用户输入进行过滤,因此最后执行的语句变成了

/opt/iptctl/iptctl restrict 127.0.0.1;id

造成了RCE漏洞

查看添加用户部分

生成随机密码,并使用unixusrmgr数据库用户名和密码将用户存入到passwd_table数据表中。

0x08 篡改web系统用户添加功能

此处因为添加的用户可ssh直接登录,因此我们如果篡改了数据库中的权限,如果这些修改同样被应用到/etc/passwd中是不是就能直接提权了呢?添加用户的代码中可看到链接数据库的函数为

由此得知该函数是针对PostgreSQL数据库的操作函数

使用命令

接下来输入密码

dheu%7wjx8B&

成功连接数据库,查看数据库中的数据表

查看passwd_table数据表中的所有内容

获取到tricia的密码密文及uid,gid

使用命令修改密码的密文为已知密码的密文,明文为toor

使用命令查看sudo用户组

接下来修改gid,将tricia加入到具有root权限的组中,这里root权限的组为27,因此我们修改gid为27即可获得root权限

修改完成后使用\q退出数据库

切换至tricia账户

使用命令

至此拿到root权限

0x09 总结

  • 注意观察连接的改变,添加Host获取访问页面
  • 通过XSS获取管理员的cookie进入站点
  • 仔细观察站点线索,获取其他站点系统
  • 使用管理员cookie突破系统,同域名网站可能共用cookie
  • 尝试添加的用户登录ssh
  • 尝试功能点上的RCE,并使用url编码避免出现问题
  • 通过搜集机器上的脚本信息,对其进行代码审计,发现其使用的数据库等信息。
  • 连接数据库,通过修改数据库的密码和gid获取具有sudo命令的账户
  • 使用具有sudo命令的账户切换至root用户,获取最高权限。

发表回复