作者归档:admin

身临其境 CISP-PTE

最近报名参加了公司集体组织的 CISP-PTE 学习考证。 CISP 是纯理论考试,CISP-PTE 和 CISP-PTS 则都是实操,后者的难度层次更高。这俩实操型考试的形式非常类似于 CTF 夺旗赛,侦测漏洞后利用工具渗透进测试靶机系统取得 key(对应 CTF 比赛中的 flag)为得分点。 PTE 有 20 道 1 分理论题,5 道一步拿 key 的 “小题”(10 分)和 1 道需由浅入深按步骤获取 3 个 key 的综合 “大题”(每个 key 10 分共计 30 分),70 分为及格线。今年(2023 年)考试时间由之前的 4 小时缩短为 3 小时,并且不允许去厕所,难道之前厕所 py 的现象太过于严重了?

理论问答题比较基础、简单,事先认真看一遍复习题大约能获得 85% 的正确率。但也有一些只能靠死记硬背或者因工作涉及而有着条件反射般的记忆,否则几乎无法现场推测答案——比如问你 Windows 登录密码错误会在产生何种编号的事件?……

考试时是用浑身长满眼睛的特制 “安全” 浏览器以 vnc 的形式登录到考试提供的攻击机环境——安装了扫描(如 nmap 、御剑目录爆破等)、抓包(经典 burpsuite)、注入(SQLmap)还有字典、转码等等很多工具的 Win7 操作系统,靶机和攻击机处于简单的同一 LAN 下,这就为 “反弹 shell” 、 “用 img src 储存型 xss 抓 cookie” 、 “远程文件包含” 等方法提供了网络环境支持。考试全程中攻击机和靶机都不通公网,且考生的操作机也不能以任何形式暂离考试专用浏览器。

第一道小题为 SQL 注入考察,以寻常的登录框起手,此处直接用 SQLmap 可以一步以时间延迟跑出结果,key 藏在文件系统(题目会告诉具体路径)而非数据库中,对于手工做题来说免去了从 information_schema 库中查询结构,上面提到的靶机和物理机间的网络环境简单且稳定,也为 SQLmap 以二分法+ sleep() 函数逐个去试字母提供了极大的有利条件。据其他考生说以 admin’ or ‘1’=’1 万能账密登入后在搜索框也有注入点,将会利用到课上讲过的 union select 联合查询注入的方法,以查询文章列表为例,假设注入点为 www.example.com/article.php?id=1

  • 先用 order by 试出注入点所查询的数据表列数:1' order by 5#(从 1 慢慢往上加,直到页面无任何显示即后台查询出错为止,出错前最后一个数字就是列数)
  • 再判断这些列中有哪些是展示在页面上的 -1' union select 1,2,3,4,5# 如果页面上显示 2 、 4 、 5 那么则只有这些对应的列在查询后被使用(显示出来),-1 则是故意传递的非法值以便查询不到数据 “腾空” 页面。
  • 确定了哪些列会被展示在页面上后,就可以使用 -1' union select 1,2,3,group_concat(select database()),5# 这样的语句来显示出数据库的信息,MySQL 的表和列信息都可以从元数据库 information_schemaselect 取得,就算是文件也可以用 select load_file() 读出。

第二道小题(可能非考试顺序)为命令注入,此题非常像 dvwa 练习场中的 Command Execution,给出目标主机 IP 地址填写框,执行后会调用系统 ping 命令来探测目标主机。那么加入 && || ; 等分隔符都有可能造成 ping 以外的命令被执行。做练习题时发现此类题狗的地方在于底层会屏蔽一些读取 key 文件的关键命令如 cat ls 甚至可能包括空格,要知道一些绕过的 trick 如 tac 、 ca''t 、 ${IFS}代替空格等。

第三小题是文件上传考察,利用 php 遇到合法扩展名文件中 <?php …… ?> 就会执行其中代码的特性,在本该上传图片的靶机上传点中传入内含 php 代码的 “假图片” 。考点在于绕过各种上传限制,可能的限制有:扩展名、 MIME 、文件头等等中的一个或多个,由于是考试所以一定至少有一种可用的方法。找到绕过方法后往 POST body 图片源码中写入早已要求熟记的一句话木马 <?php eval($_REQUEST['cmd']); ?> 后可以直接传入 php 的 system() 方法执行系统命令或使用 webshell 管理工具拿到靶机站点权限。这里如果遇到过滤(如精确匹配 eval),和上述命令执行题一样用一些方法去变形绕过,如 $a = 'ass'.'ert'; ,想来也是 webshell 免杀的一些套路吧。接着直接去找 key 就成了。

第四小题是 php 代码审计,一般不会太过于复杂,但对于 php 的常见函数方法等还是得有所了解。这里遇到了一句代码关键点是: eval("\$o=strtolower(\"$a\");"); ,那么传入参数 a 的时候把前后语句闭合掉,让中间的代码传到 eval 那里执行即可, 如 ");system('pwd');(" ,果然填空游戏啊。

第五题是访问控制题,考察一些 http 头的使用方法,如 X-Forwarded-For 绕过 IP 限制,cookie 中的布尔值绕过权限检查等,很简单,再难也不过涉及一些 base64 编码。但一定程度上有助于初学者理解服务器是怎么 “消化” 客户端所提交的东西的吧。

综合大题,从以往的一些考题来看基本上就和综合渗透比较相似了,但也不会过于挖坑。一般考试题会提供一个独立 IP 地址的仿真站点,用 nmap 可以扫出一些如 ftp 、 http 、 mysql 端口等,从哪里入手就要看扫描结果和个人经验了。考试中 web 服务的登录框比较无解,用目录扫描扫出 phpMyAdmin,使用默认密码直接进去了数据库管理端,在数据库角落获取了 key1;之后进入 user 表修改管理员密码(利用攻击机内工具计算 hash 值填入),再从 web 登入,此后既可以用上传图片马的方法,也可以用 MySQL 执行 into outfile () 方法向 Web 目录写入木马,因为担心后续步骤较多,这里使用攻击机提供的蚁剑连上 webshell,在 web 目录下发现 key2 。做到这一步时我应该是在写图片马时手抖写错,使 php 报错时爆出了 Windows 下 Web 服务的绝对路径(也是获得绝对路径的技巧之一),这才为 SQL 写马提供了可能(SQL 写马需配置支持和知道绝对路径)。使用攻击机工具集已有的 3389 强制打开工具(看了下,实质是写注册表),再用 net user 命令修改 Administrator 的密码,mstsc 登录后在回收站中发现 key3 。

综上所述题目难度都不算大,多刷一些过往考试题,多了解一些 bypass 方法都对通过考试很有裨益。但我觉得最大的收货还是在于明白了一些原理层面的东西,而这些东西,可能平时往往因为手头 “差生文具多” 般眼花缭乱的工具而最容易使人忽略的——漏洞和问题的本质。这些本质性的东西可不会管你是什么最好的语言还是冒着热气的语言的。懂得了原理,是脚本小子还是手搓 poc 其实又有什么关系呢。

我的那些微软外设

今年(2023 年)上半年看到一则新闻—— Microsoft’s mice, keyboards, and webcams are being discontinued in favor of Surface accessories ,微软竟然就这么要放弃外设市场了,心里暗暗地觉得有些可惜。下半年在某东商城中发现二手 9.9 新 IE3.0 蓝影复刻版,连邮费都只要 RMB70 不到,顿时那些年看的《电脑爱好者》中对 IntelliMouse Explorer 系列鼠标尤其是 IE4.0 的吹捧又浮上心头。翻了翻网上的文章,不料到大家对 IE3.0 这第二次也就是蓝光引擎复刻版意见极大,丢帧、不适合游戏云云,但我本就是以 “情怀” 为主,办公为辅,对游戏表现毫不在意。到手之后发现设备几乎可算作全新,性价比——哦不,情价比真是爆棚了。

我中学的时候课业繁重,只被允许接触家中不能联网的电脑,以《电脑爱好者》为主的电脑杂志成了我的重要娱乐活动。我至今清楚地记得,那段时间在心里一直有一份 “梦想装机配置表”(如此 YY 的好处之一是可以随时更新 “硬件” 而不用花钱:D)其中微软 IE4.0 曾常年霸榜,成为我的终极梦想外设,甚至到了如果有幸能去虾头微软总部要去纪念品店买一座的夸张想法。没曾想,IE4.0 虽然在初代 IE3.0 之后被微软寄予厚望,但就像红巨星一样昙花一现,倒是初代 IE3.0 歪打正着,成为职业 CS 选手 “非官方指定外设” 后又出了两次复刻版,系列寿命接近 20 年,成为微软外设史上的传奇。

高中时,曾经参加《电脑爱好者》举办的活动而中奖,奖品是微软的 SideWinder 手柄一部,到现在都记得在计算机课上查看中奖名单时的兴奋之情,当然还有邻桌同学 “你的名字为什么会出现网页上” 的疑问。这部手柄左侧有一个方向键盘,右侧功能键区不同于现在的 XBOX 手柄,有 6 个操作键,中间的 2 个功能键被我用作红白机模拟器的 SELECT 和 START 。这个手柄的握持感非常好,但有个致命问题是:玩红白机模拟器时 “下” 经常误触发为 “左下” 或 “右下”,后来自己维修——也就是用铅笔涂导电橡胶增加导电性时发现:方向键的导电橡胶的分布不是按照 “上、下、左、右”,而是在 “左上、右上、左下、右下” 四个位置,这意味着按 “下” 键时 “左下、右下” 两个触点须同时导通才能正确传递 “下” 信号,导致方向键极易误触发。因为上述原因,这个手柄上座率较低,几乎成为了可远观而不可亵玩的供品。

大学时,我对微软外设的喜爱仍然未减,在电脑城购置了微软舒适鲨 3000 。除了微软这块招牌,我已经不太记得到底是什么驱使我出手,从舒适鲨上也不太能看出 IE4.0 的影子(滚轮除外 XD)。磨砂材质不惧手汗,独特的红色侧键可以通过驱动自定义,我设为了在 CS 游戏中按住临时降低 DPI 以便狙击瞄准使用,自鸣得意。特殊的松下微动(甚至连外形都和常见微动不同)按压手感松垮不清脆,但还算长寿,恼人的是不时会有卡键问题;滚轮完全无段落感,但我记得阻尼感觉很舒服,且滚轮支持左右点击以横向滚动,也使我在后来在鼠标上一直追求类似的功能,因使用场景实在有限后来也不再强求(现在印象最深的就是英雄无敌 3 地图编辑器中横向滚动地图使用 XD)。这个鼠标最搞笑的就是具有来电显示功能,不知道为什么一款鼠标居然在 GSM 网络来电信号干扰下会短暂罢工,和音响中沉闷的 “嘟嘟,嘟,嘟嘟——” 干扰声一样成为放下鼠标拿起手机的信号,当时网上也可找到不少受害者的帖子,实在是又好气又好笑。

工作后不久,微软的一揽子鼠标外设开始转向蓝光引擎,诸如 “甚至能在大腿表面使用” 之类的广告宣传深深打动了我,我又鬼使神差地在没有刚需的情况下购入蓝影 4500,谁料这次我竟然落入深坑。鼠标侧裙是讨喜的橡胶材质,但竟然正在拇指处有两片橡胶的接缝,我可不想没事就去盘缝玩儿;滚轮依然延续了无段落设计,但阻尼太小体验很差,一个字就是 “滑”——我能和滚动条打起来。最终蓝影 4500 几乎未投入正式使用而直接束之高阁。其他诸如底部光溜溜的像山寨,据称是因为怕磨损而把产品信息印在纸上栓于鼠标绳之类,那都是止增笑耳了。

那段时间,也曾在同学那里体验过 Basic Optical Mouse 基础光学鲨,其轻盈压倒了一切,其他方面都中规中矩不犯错,也如其名一样成为装机的基本标配一般。我给家人买过,多年以后不是死于微动,而是芯片故障变成无法识别的 USB 设备,也算是独树一帜了,既然是微软,那就算他独树四帜吧。在前公司,还体验过集中采购的黑色版 IO1.1 红光鲨,从打油程度来看属于饱经风霜,但质量却依然坚挺,手感也是人体工学没得说,在多少个值班的独孤夜手握经典,也算是我对前司的深刻记忆之一了。

回忆到此,竟然发觉微软外设给我挖的坑着实不算少了,可我对他的喜爱还是能在填满坑后堆出个小山丘来。除了沉稳的外形外,看得见握得着的人体工学也一如其宣传。归根结底,Microsoft 那几个字母(曾经?)在我心里的分量还是不一般那。