CISP-PTS满分考题全解
作者:zngeek(蓝极战队bluegeek)
from:www.zngeek.com
mail:zngeek@pm.me
0X00 前言:请认真阅读
本篇文章为国测中心认证的渗透专家考题全解,以真实的考试环境及操作机为例,并且详细讲解各种答题技巧及注意事项,如果你详细阅读理解了该文章,考PTS将手到擒来!!![手动狗头.jpg]
靶机数量:6(基础题4,综合题2)
总分:100(基础题40,综合题60)
KEY数:10(基础题4,综合题6)
每个KEY为10分,基础题每个靶机1个KEY,综合题每个靶机3个KEY
考试整体难度:★★★☆☆ 3星
靶机地址:192.168.31.211:3600-3604
PTS考试考场会提供两台操作机,分别是WIN7和kali,
操作机不能进行任何上传下载操作,所以并不能使用操作机以外的任何文件。
本文使用的任何工具、字典及文件等等均是考试操作机上自带。
0X01 基础题目之信息泄露
用御剑目录扫描工具,探测出存在www.rar的压缩文件
下载解压后发现一个info的文本文件,里面内容如下:
vi编辑非正常退出会有swp临时缓存文件,所以直接访问http://靶机/config.inc.swp下载该缓存文件,打开后成功找到了KEY
KEY为:PLwDPzFp
0X02 基础题目之命令执行
该题目我以前写过一篇文章详细分析过,
这里使用考试时的操作机再详解一遍
访问vul.php,直接返回了以下页面,
是需要我们来审计这段代码从而找出可以利用的地方
代码如下:
为了方便大家理解,首先给每行代码每一行写上注释
如下图:
从注释的代码,我们可以逐步分析该代码块的业务逻辑
1、定义一个文件夹路径的变量
2、创建该文件夹
3、切换到该文件夹工作
4、判断GET方式接收的参数cmd不为空且长度不大于30,就执行该cmd命令
5、判断GET方式接收的参数reset不等于空,则删除创建的文件夹以及里面所有的内容
6、高亮显示当前php文件的所有代码
7、打印输出访问者的ip
这里显而易见,我们只要get提交cmd参数到vul.php页面,且参数长度不大于30,就会执行我们提交的命令。
首先我们需要计算出我们文件夹的路径
知道了文件夹的路径为“/usr/local/apache2/htdocs/sandbox/加上MD5加密的cisp-pts+本机IP地址”
后面的MD5值加密的文件夹名可以直接计算出来,
但是考试环境是不通外网的,所以,不能通过在线MD5等等web计算,可以通过操作机上编码工具MD5编码
最终我们得到要创建文件夹的路径为/usr/local/apache2/htdocs/sandbox/a9e8722136b72c6508d9cdb7df352ddc
直接写一个一句话木马
http://靶机/vul.php?cmd=echo+'<?php+eval($_POST['1'])?>'>1.php
但是我们的cmd参数长度明显超过了30,所以代码并不会执行我们的命令
这里可以通过追加文件的方式,分两次写入
第一次:
第二次:
注意:第二次追加数据应该是>>两个符号
这样我们就在1.php文件里面写入了我们完整的一句话木马“<?php eval($_POST['1'])?>”
用菜刀连接http://靶机/sandbox/a9e8722136b72c6508d9cdb7df352ddc/1.php
密码为1
成功连接上webshell
并且在web的根目录下找到了KEY
KEY为:DWAOdLQk
0X03 基础题目之文件上传突破
不能上传php文件
经过测试,得出结论,该上传过滤仅仅只是判断后缀名,
不会判断文件类型等等,只要包含'.p','.ph','.php'的后缀名,均无法上传
这里常规的绕过方法肯定是不行的,经测试,其他很多后缀名靶机是不过滤的,比如说htaccess[手工狗头.jpg]
这里可以通过上传.htaccess文件让php解析我们指定后缀名的文件
.htaccess文件内容如下,意思是将文件zngeek.zn当作php5来进行解析
上传.htaccess文件以及我们的一句话木马zngeek.zn
连接http://靶机/up/zngeek.zn ,密码1
在web根目录下找到了key
KEY为:uAMeHui4
0X04 基础题目之流量分析
通过提示下载流量包,导入到wireshark开始分析
首先过滤一下,仅看http的包,在这里发现了一个很可疑的包
继续往下看,发现是一个压缩文件
将字节流全部导出成压缩文件,发现需要解压密码
继续往上分析,追踪一下字节流,成功的找到了密码
密码为Adm1n%21,URL解码%21是!,所以解压密码为Adm1n!
在web目录下成功找到了KEY
KEY为:4tEm21x5
0X05 综合大题(一)
这道题有3个KEY,分别要使用到XSS攻击,SQL联合注入,以及文件包含漏洞
经过测试,发现页面post.php存在存储型xss,
这里可以直接写一个反弹cookie的xss将管理员的cookie反弹回来
在本地开启nc,监听端口9115,成功的返回了cookie
修改cookie为返回的cookie,成功进入管理后台,并且找到了KEY1=GzyD4X2J
在edit.php中发现了联合注入漏洞,直接get提交payload
id=123123/**/UniOn/**/SelEct/**/1,2,load_file(%22/var/key2%22),4#
将/var/key2文件中的key读出来,KEY2=wE58i4Z8
在setting.php中发现了文件包含漏洞
直接get提交payload
page=/tmp/key3
将/tmp/key3文件中的key读出来,KEY3=HSIC3uM7
至此,该综合题三个KEY全部找到,分别为KEY1=GzyD4X2J,KEY2=wE58i4Z8,KEY3=HSIC3uM7
0X06 综合大题(二)
本题有3个KEY,分别使用了SSRF攻击以及redis的利用
如果直接使用http://127.0.0.1/会发现被waf拦截
改成localhost后,成功绕过waf,并且在robots.txt文件中发现了一个backup.zip的文件
直接下载这个zip文件后,发现里面有一个note.txt,内容如下:
在提示中,直接SSRF 5562端口,可以得到第一个KEY=F5Qyixeq
根据第二个提示直接访问靶机IP加6738端口是无法连接上redis的
这里需要继续使用SSRF来操作redis
可以有很多种方式,这里演示两种方式,第一种写webshell,第二种写公钥连接ssh
通过SSRF逐条执行以下命令通过redis写webshell
写入成功后,直接连接webshell
http://靶机/a.php 密码为1
在web根目录下找到KEY2=01aLzgmZ
在计划任务中,可以找到KEY3=a2V5MzpWTDJvVllYMg==
base64解码得到KEY3=VL2oVYX2
下面再说一下redis写公钥连接ssh的方法
首先生成公钥和私钥
同样使用SSRF逐行写入如下命令,公钥是我们刚刚生成的公钥
然后直接ssh带上我们的私钥访问,成功连接上ssh
KEY的位置同上
当然通过写计划任务反弹shell这些方式都可以,本题主要是通过SSRF对redis的利用
至此,该综合题的三个KEY全部找到,分别为KEY1=F5Qyixeq,KEY2=01aLzgmZ,KEY3=VL2oVYX2
恭喜你,到这一步,你已经得到了10个KEY,也就是获得了满分100分。
0X07 注意事项(不定期更新)
0x061 认真核对key
操作机是通过网页远程访问的,并且操作机是不能连接广域网的,所以不能传输任何文件,
所以我们在操作机上拿到的key要在真机上填写的话,需要手动输入,务必要认真核对key是否输入正确!
0x062 Ask me
有任何问题,可以邮件联系作者 zngeek@pm.me ,或者可以在zngeek_blog留言http://www.zngeek.com
本文链接:http://zngeek.cn/znblog/post/3.html 转载请注明出处~~~~~~
1 条评论
发表评论