靶机下载/安装
DC-5: http://www.five86.com/dc-5.html
环境
DC-5 192.168.236.144
kali 192.168.236.133
老规矩,nmap -A -p - 192.168.236.144
l@192:~$ nmap -A -p- 192.168.236.144
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-13 14:14 CST
Nmap scan report for 192.168.236.144 (192.168.236.144)
Host is up (0.00019s latency).
Not shown: 65532 closed ports
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.6.2
|_http-server-header: nginx/1.6.2
|_http-title: Welcome
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 36531/udp status
| 100024 1 45548/udp6 status
| 100024 1 51773/tcp6 status
|_ 100024 1 51996/tcp status
51996/tcp open status 1 (RPC #100024)
看看80端口吧。
没什么可以利用的。爆破下目录吧。
也没啥。但是我发现了一个有趣的现象。
在contact在点击submit之后发现。版权的时间变。从2017-2020。
如果没猜错的话,应该存在文件包含漏洞。
服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。
ok。我们看看使用 file:来读取一下/bin/sh吧。
常见的敏感信息路径:
Windows系统
c:\boot.ini // 查看系统版本
c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件
c:\windows\repair\sam // 存储Windows系统初次安装的密码
c:\ProgramFiles\mysql\my.ini // MySQL配置
c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密码
c:\windows\php.ini // php 配置信息
Linux/Unix系统
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置
/usr/local/app/php5/lib/php.ini // PHP相关配置
/etc/httpd/conf/httpd.conf // Apache配置文件
/etc/my.conf // mysql 配置文件
成功读取出来。从nmap中我们知道这是apache的,我们看看读日志文件。/var/log/nginx/access.log
写入一句话木马:`` ,通过写入日志文件拿到shell。
我们使用curl命令构造一句话写入服务日志文件在cmd输入 curl -A http://192.168.50.129/thankyou.php
我重装了。所有IP变成 dc-5 192.168.50.129 kali linux 192.168.50.128
中国蚁剑连接一下。
使用nc反弹一个shell到kali
切换到交互模式shell
python -c “import pty;pty.spawn(‘/bin/bash’)”
信息收集一波。
sudo -l
没权限,看看suid
吧。
尝试查找具有root权限的SUID的文件。
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 {} \;
没什么用,找来找去,我们看到了screen-4.5.0
Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
ok 打开msf。
msf搜索下screen-4.5.0
看来是它了。
上传准备执行exp。但是执行的时候./41154.sh: /bin/bash^M: bad interpreter: No such file or directory报错上网查了发现是因为文件格式问题。解决办法:vim a.sh进入a.sh后, 在底部模式下, 执行:set fileformat=unix后执行:x或者:wq保存修改。然后就可以执行./a.sh运行脚本了。
打开41154.txt,根据提示做出2个文件
传到/tmp/下准备执行,因为/tmp/默认权限是777,其他文件夹权限都不够。
打开apache,准备wget传输文件,wget 文件名
/etc/init.d/apache2 start
利用文件。
./rootshell
拿到flag!!!