漏洞代码:\src\main\java\com\pointlion\mvc\mobile\login\MobileLoginController.java
\src\main\java\com\pointlion\mvc\admin\sys\login\LoginController.java
这两处代码都是有注入的,一个手机端的登录,一个是pc端的登录。手机端登录可能是没有写完,没有前台页面,没有验证码,可以直接丢进sqlmap。
1、手机端
首先先看手机端的代码,MobileLoginController.java
传入两个参数,跟进这个方法
直接拼接sql,造成sql注入。
2、PC端
LoginController.java
可以看出这里是使用的shiro,看看shiro的数据操作。
根据shiro配置文件,可以看到是这个Java文件
跟进这个getByUsername()方法
直接拼接sql语句,造成SQL注入。但这里有验证码。所以不能使用sqlmap了。
只能手工测试。或者使用直接构造sql语句登录
从源码中可以看到,使用的是加密字符写入数据库,写一个测试的类,类获取一个加密的密码。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
\src\main\java\com\pointlion\mvc\admin\sys\login\LoginController.java
这两处代码都是有注入的,一个手机端的登录,一个是pc端的登录。手机端登录可能是没有写完,没有前台页面,没有验证码,可以直接丢进sqlmap。
1、手机端
首先先看手机端的代码,MobileLoginController.java
传入两个参数,跟进这个方法
直接拼接sql,造成sql注入。
2、PC端
LoginController.java
可以看出这里是使用的shiro,看看shiro的数据操作。
根据shiro配置文件,可以看到是这个Java文件
跟进这个getByUsername()方法
直接拼接sql语句,造成SQL注入。但这里有验证码。所以不能使用sqlmap了。
只能手工测试。或者使用直接构造sql语句登录
从源码中可以看到,使用的是加密字符写入数据库,写一个测试的类,类获取一个加密的密码。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
起因是朋友问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
这次拿到了三份不同版本的源码(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
访问漏洞页面获取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
回到我们之前的上传页面,然后点击编辑。
鼠标放到我们木马上面,然后点击重命名。
我们会打开一个新的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
可能是迫于压力更新修复漏洞了
网站在进行安装时通过文件 /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