黑客网站渗透入侵破解拿权限
10.5K subscribers
2.38K photos
108 links
Download Telegram
起因是朋友问fanwei o2o源码搭建的站后台能不能拿shell,于是我进后台进行了一番尝试,各功能点没什么进展,好多地方过滤了,上传也是白名单,编辑器的1day修了,万幸的是有个拿不到shell但是可以执行sql语句的功能点,再通过fofa提取特征,在其他站点下拿到一份残缺的源码(Git_Extract工具拖出来的源码文件名是中文会乱码,换用GitHack解决)。
这次拿到了三份不同版本的源码(v1.x,v3.x,v6.5),真实环境的站一个是朋友发的那个v3.x的站一个是fofa找的v6.9的站。

尝试Shell写到慢日志绕过priv,需要绝对路径,我是这么找的:
1.写python脚本遍历源码下的所有路径和文件后burp suite访问所有文件甚至是构造畸形参数以尝试出现报错页面。
2.在上传iconv压缩包处上传畸形压缩包制造报错找到了绝对路径
可惜sql语句执行错误,没有写入权限,高版本的话对这里则是做了过滤,替换了反斜杠。

二、审计源码

通过前期翻sql表的信息收集可以知道任务计划表的data字段是序列化后存储在数据库的表里的,所以拿到源码先看了任务计划处功能点的“立即执行计划任务”的操作,使用
“立即执行计划任务”操作会将yanhuo_schedule_list表的data字段值反序列化后再调用类自定义的exec函数,所以我就想通过updata语句修改成我们需要的payload然后流入exec函数,而残缺的源码里正好缺了这部分找不到exec()函数里面咋写的。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
通达OA v11.7 在线用户登录漏洞

访问漏洞页面获取phpsession

可以看到我们已经获取到了phpsession,这个时候我们就可以访问他的后台页面了,但是如果页面显示RELOGIN说明存在漏洞但是管理员现在不在线,所以需要等他在线。

这里需要注意:我们要添加一个路径为系统目录后面跟上webroot,但是webroot会被过滤,但是他没有检查大小写,所以我们改为Webroot就可以轻松绕过。

这里唯一需要注意的是我们需要将发布范围里添加一个系统管理员,这样子才可以,路径的话呢还是webroot那个路径。

然后我们添加一个文件,也就是我们的shell

这里需要注意的是,我们需要将我们的木马改为jpg后缀的,要不路径无法查看。

/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
修改木马后缀
回到我们之前的上传页面,然后点击编辑。

鼠标放到我们木马上面,然后点击重命名。

我们会打开一个新的tab页面,我们使用火狐进行抓包:

先随便改个名字,点击保存,然后会拦截到一个post封包。

数据格式大概是这个样子:
NEW_FILE_NAME=166&CONTENT_ID=118&FILE_SORT=2&ATTACHMENT_ID=2925%402103_1578257970&ATTACHMENT_NAME_POSTFIX=jpg&ATTACHMENT_NAME=2.jpg&FIRST_ATTACHMENT_NAME=2&FILE_NAME_OLD

这个时候我们就需要修改ATTACHMENT_NAME_POSTFIX属性为php.(注意后面有个.)
然后重放这个数据包,就可以看到修改成功。
拼接木马路径
可以看到我们修改成功。

然后找到之前的文件名,然后将我们上传的原始的文件名(2.jpg)改为(166.php),这个是根据你上传的路径以及改的名称来定的,然后路径的话呢还是file_folder/2013,我们就可以访问到我们的马子了。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
1👍1
6月初审计这套cms找了这个洞,同时还有另一个前台sqli这里不提,我看见ourphp官网前几天更新了版本
可能是迫于压力更新修复漏洞了

网站在进行安装时通过文件 /function/install/index.php 执行安装

安装过程会动态创建出 /config/ourphp_config.php 配置文件,生成代码

function getRandomString($len, $chars=null){
if (is_null($chars)){ $chars = "bcdefghijklmnpqrtuvwxyzBCDEFGHIJKLMNPQRTUVWXYZ12345679"; }
mt_srand(10000000*(double)microtime());
for ($i = 0, $str = '', $lc = strlen($chars)-1; $i < $len; $i++){
$str .= $chars[mt_rand(0, $lc)];
}
return $str;
}

配置文件中有一个全局变量 safecode,从安装文件 install.php可以看到 safecode 的生成算法,
调用 getRandomString 生成随机32位字符串,再截取这个32位字符串第6位开始的6个字符拼接在后面。
另外还有一个全局变量 validation 默认是12345,目前线上运营的网站很少有人改动这个变量,所以绝大部分都是12345。

/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
getRandomString 的随机性仅取决于种子 10000000*(double)microtime()
这个种子我先直接给出结果,后面再做分析。
在所有php版本里,10000000*(double)microtime() 的结果集如下
0、10、20、30、40、50 ...... 9999960、9999970、9999980、9999990
一共100万个,也就是函数 getRandomString 生成的结果集为100万个。

我们用这100万个种子根据getRandomString的算法生成100万个safecode。

如果网速快或者多台机器并发,使用burpsuite插件 Turbo Intruder 发起一百万个请求只需要一根烟的功夫,
很快就可以爆破出safecode。下面接着说通过哪个接口爆破safecode,以及拿到safecode如何getshell

这里贴出文件 /client/manage/ourphp_filebox.php 关键代码

接口 /client/manage/ourphp_filebox.php 通过 $_GET取出两个 get 参数
validation code,传入了函数 pw,下面是函数pw代码

可以看到get取出的参数用来和全局变量 $ourphp[‘validation’] $ourphp[‘safecode’] 进行比较,
如果不一致的话会进入else逻辑最后 include ‘ourphp_checkadmin.php’;
ourphp_checkadmin.php 这个文件作用是管理员身份校验。
那么使用正确的validation safecode 就通过了校验,
这里我直接用/config/ourphp_config.php配置文件
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
Woo,定义了这么多的常量,我们先不着急看每个常量是什么,目光到25行的require 'temmoku'.DS.'run.php';
包含了'temmoku'.DS.'run.php',其中DS在index.php中的第16行所定义,值为目录中的斜杠(\)。
那么我们跟进run.php文件看一下

常量是不会变化的量,整个程序的运行中定义一次就不能修改。我们通过这一点,结合PHP给出的常量查询函数,在程序运行中的末尾全部提取。

这里贴出代码:
foreach(get_defined_constants(true)['user'] as $k=>$v){
echo $k.'---'.$v."\r\n";
}

将它放在index.php的末尾。通过源代码查看这些常量,然后复制到我们一个记事本中,审计中需要用到时,我们再进行查询。

/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我
@MoA_Ke
👍1