RedTeam – WordPress 命令执行

前言:

战队里的石头师傅给了一个靶机让我们玩玩,反正我也菜,试试靶机正好可以自我学习一下,所以话不多说我们直接开始吧。

靶机地址:http://redteam.0xc2.cn/

正文:

打开靶机之后,看起来好像没什么东西可以操作,简单的先进行目录和端口扫描一波。使用nmap -sS 简单的扫描了一下,发现好像没什么可以用的。但是在目录扫描里发现了一些有用的东西。把4xx和5xx的过滤掉之后,如下

一看这目录,这不是wordpress嘛,感觉进入wp-login.php页面看看有没有弱口令,但是尝试了一些弱口令(失败 ,感觉这条弱口令这条路走不通,再看看别的目录,还有一个/wp-includes/的目录里面感觉有不少东西,但是仔细点进去发现都是空白的,所以暂时放一边。还是再去看看那个登陆框那边有什么东西吧(毕竟只有那个地方感觉有东西了。

wordpress在印象中有很多历史漏洞,所以如果我们可以知道这个wordpress的系统版本的话,应该就可以去网上找对应的文章了。

之前看文章有见过在network里面泄露框架版本信息的所以一看好像的确泄露了什么,这个4.6 应该是wordpress的版本吧...

wordpress 版本 4.6 + 登陆框

找到了这篇文章:https://xz.aliyun.com/t/2301

这下终于有思路了,本以为照着文章复现就可以了没想到后面出现了一些非预期的问题. .(还是我太菜了

复现过程:

根据文章所说,漏洞页面出现在http://redteam.0xc2.cn/wp-login.php?action=lostpassword 这个页面。

这个漏洞的原理主要是这样的,由于这个页面是一个找回密码的页面,漏洞出现的组件是class.phpmailer.php 由于linux系统命令sendmail进行邮件发送,命令格式为:sendmail -t -i -fusername@hostname,sendmail -t -i似曾相识,之前写过putenv绕过disabled_function 也是利用了sendmail -t -i

这里由于 sendmail文件可以发现它是一个链向exim4的软链接文件,所以我们可以利用sendmail -be 这样来读取一些变量的数据,然后截取。

空格 转化成 ${substr{10}{1}{$tod_log}}

/ 转化成 ${substr{0}{1}{$spool_directory}}

然后后面我就按照文章的payload来了,但是试了之后怎么弄都不对,因为文中是返回状态码301,而我这里返回的则是200。当时的我就觉得非常的古怪...

还去docker弄了环境试了试admin发现docker可以,为啥这个网页不行...

现在回想当初真的是够蠢的...返回的信息都没怎么看,主要还是没有admin的账号,试了试 root Admin admin123 这种之后发现都不行, 后面机缘巧合输入了test,成了!接下来的就是按着来了

也就是我遇到的第二个坑...

按照文中的payload,我这里就是不行,就非常的古怪...卡了我一个上午...至今还是没想通,后面会结合poc分析一下到底是哪里的问题..

想了一下,明白了我们这里不能远程发送到服务器下,我在看了poc之后发现poc里面也是localhost,所以我们需要在攻击机上执行payload,而不是第三方机子来使得数据发送到攻击机上..

实在没办法,所以只能先用一手poc

进行反弹shell命令执行

获取了flag和入群的题目..

爆破

由于之前那题ctf题目的影响觉得只要符合就可以了...所以就开始瞎爆破..(自己蠢

但是问了群主,群主说让我从一开始爆破,于是写了个小脚本..

import hashlib from numba import jit # @jit(nopython=True) for i in range(100000000): res = hashlib.md5(str(i)).hexdigest() if res[:6] == "1024cc": print(i) break
Code language: PHP (php)

但是好慢...我这里很久都没有出结果,所以还是用之前的那个脚本,人工改了一下

import itertools import string import hashlib import time def burp(x): code = ' ' strlist = itertools.product(string.digits,repeat=7) for i in strlist: code = i[0] + i[1] + i[2] + i[3] + i[4] + i[5] + i[6] encinfo = hashlib.md5(code.encode('utf-8')).hexdigest() if encinfo[:6] == x: print(code) if __name__ == '__main__': start = time.time() code = "1024cc" burp(code) end = time.time() print(end-start)
Code language: JavaScript (javascript)

这样速度快,我一位位的添加就可以了 最终获得了入群密码..

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇