HTB-Shocker

0x01 端口扫描

常见开放端口如下:

  • 80端口:HTTP服务
  • 2222端口:SSH服务

访问80

未发现有价值信息

0x02 目录扫描

其中重点查看cgi-bin目录,其中会存放一些.pl、.sh以及.cgi等格式的可执行脚本,对其进行文件遍历。

获取到敏感文件user.sh

通过查看该文件发现此脚本是实时运行的。

访问该脚本时会通过调用一个bash shell终端来实时执行uptime命令,并通过下载文件的方式返回执行结果。

0x03 ShellShock漏洞

使用BP抓包,并修改UA

存在shellshock漏洞并列出了/bin目录下的所有文件

修改exp

获取低权限shell

获取一个标准终端

此处小坑:

报错没有Python,实际上是有的,查看发现装的python3,因此修改命令

0x04 提权

查看到当前用户有免密码使用root权限的perl的权限。

因此思路如下:

  • 可构造perl代码获取一个新的root权限的反弹shell
  • 构建perl代码执行系统命令,在shelly用户权限的反弹shell中开启一个root权限终端

perl代码获取新的root权限反弹shell

perl代码执行系统命令在低权限shell中开启root终端

0x05 总结

  • 注意/cgi-bin/等目录下的脚本文件
  • bash使用的环境通过函数名称调用的,导致漏洞出问题是以”(){“开头定义的环境变量在命令ENV中解析成函数后,Bash执行并退出,而是继续解析并执行shell命令。核心原因在于没有严格过滤输入的参数
  • 执行CGI时会调用Bash将refere、host、UserAgent、header等作为环境变量进行处理
  • Perl获取反弹shell
  • Perl在shell中开启root终端
  • 无回显情况可参照sql盲注的延时方法,使用sleep函数判断是否存在漏洞

HTB-Sense

0x01 端口扫描

常见开放端口如下:

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

同时获得系统信息FreeBSD8.1

访问80

搜索该logo发现这是一个开源防火墙

0x02 pfSense授权后的命令执行

搜索漏洞能够发现两个命令执行漏洞,但都需要登录后

先做一遍目录扫描搜集信息,获得的两个txt文件有价值。一个说该系统有一个漏洞,另一个给了我们一个用户名和密码。

使用该密码尝试登录

该账号密码无法登录,根据密码这两个单词的翻译是默认密码的意思,于是去搜索pfSense的默认密码,最终

的用户名密码为:

成功登录防火墙。

下载exp并按指示使用

0x03 总结

  • 端口扫描获取web站点
  • 目录扫描获取站点登录凭证
  • 搜索默认口令登录防火墙
  • 利用防火墙任意命令执行获取root权限

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用户,获取最高权限。