90
周日早上,雨晴醒得比平时早。不是被什么吵醒的,是自己醒的。她拿手机看了一眼——七点二十。窗帘拉着,房间里还暗着,但能感觉到天已经亮了,那种亮不是从外面照进来的,是从窗帘的布料里透出来的,朦朦胧胧的。
她翻了个身,橘子皮睡在她脚边,被她这一动吵醒了,从被子里钻出来,走到她枕头旁边,用脑袋拱她的脸。
“还早。”她把猫推开,猫又拱回来,再推,再拱。最后她放弃了,坐起来,揉了揉眼睛。
橘子皮见她起来了,跳下床,跑到食盆前面蹲着,尾巴圈在脚边,仰头看着她。雨晴去给它倒了粮,它低下头就开始吃,吃得吧嗒吧嗒响。
“你今天倒是积极。”她说。
洗漱的时候她对着镜子看了看自己的脸。眼睛下面那圈青色好像淡了一点,可能是最近睡得早。她用水拍了拍脸,用毛巾擦干,涂了面霜。头发翘得厉害,她用手沾水按了按,按不下去,随它去。
早餐是昨天剩的半袋吐司和一杯热牛奶。她站在厨房里吃的,一边嚼一边想今天要做什么。苏晚下午两点来,上午还有大把时间。她打算把第二个项目的报告再改一遍,昨天写到第三个漏洞的时候卡住了,修复建议写得太笼统,今天要重新写。
吃完早饭她坐到书桌前,打开笔记本。橘子皮跳上桌,趴在鼠标垫旁边,开始舔爪子。雨晴把它往旁边推了推,它不动,又推了推,它还是不动。
“你就不能换个地方趴。”
橘子皮抬头看了她一眼,低头继续舔。
她没再管它,打开报告文档。目前写了三个漏洞:一个反射型XSS,一个信息泄露,一个逻辑漏洞。严重程度最高的是逻辑漏洞——可以修改价格参数零元下单。她把那个漏洞的描述重新读了一遍,觉得复现步骤写得太啰嗦,删了两行,合并成一段。
然后开始写第四个漏洞。昨天在后台管理系统发现的文件上传绕过,她还没来得及写。她打开昨天的测试记录,把payload复制出来,一步一步地写步骤:如何修改请求包、如何伪装文件类型、如何获取webshell。写完之后她读了一遍,觉得少了点什么——少了为什么这个漏洞严重的解释。她加了一段:“攻击者可利用该漏洞上传恶意脚本,获取服务器控制权限,进而导致数据泄露或系统瘫痪。”
加完之后她又读了一遍,觉得差不多了。
写到第五个漏洞的时候她卡住了。不是挖不到漏洞,是挖到了不知道怎么描述。昨天测试的时候发现系统的备份文件可以直接访问,里面包含了数据库的配置信息,包括数据库账号和密码。这是一个严重的信息泄露问题,但她不确定该把它归类到哪个分类里——信息泄露?配置错误?还是访问控制缺陷?
她上网搜了一下,找到一篇讲备份文件泄露的文章,作者把它归类为“敏感信息泄露”。她决定跟着这个分类写,在描述里加了一句“备份文件未做访问控制,可直接下载”。
写完之后她从头到尾读了一遍报告。五个漏洞,严重程度从高到低排好了,每个都有详细的复现步骤和修复建议。她觉得比第一个项目的报告好了不少,但还有改进空间——比如可以加一个“漏洞总结”的表格,把漏洞类型、严重程度、修复状态列在一起,方便甲方查看。
她开始做表格。做了二十分钟,调格式调了十分钟,最后出来的效果还行,整齐,看得清。
做完这些已经快十一点了。她伸了个懒腰,靠在椅背上。橘子皮从鼠标垫旁边站起来,伸了个懒腰,前爪往前伸,屁股撅得老高,然后跳下桌,走到食盆前吃了几口粮,又走回来,仰头看着她。
“你还想吃?”她蹲下来摸了摸猫的肚子,圆滚滚的。她把猫抱起来掂了掂,感觉比上周又重了一点。七斤八两的猫,不到一岁。她决定下午苏晚走了以后带橘子皮下楼走两圈——不管它愿不愿意。
午饭她煮了碗面,加了蛋和青菜。端着碗站在厨房里吃的,吃完洗了碗,把厨房收拾了一下。然后开始收拾房间——虽然昨天已经收过了,但苏晚要来,她想弄得再整齐一点。床铺了又铺,书桌上的笔放回笔筒,橘子皮的玩具捡起来塞到床底下,地扫了一遍,又拖了一遍。
拖完地她站在房间中间环顾了一圈,满意了。
一点五十的时候,手机震了。苏晚发的消息:“到了,你楼下。”
雨晴换了鞋,拿了钥匙下楼。苏晚站在单元门口,穿着一件粉色的卫衣,下身是白色的休闲裤,头发还是短的,今天戴了一个蓝色的发卡。手里提着一个袋子,看起来是奶茶。
“等很久了?”雨晴问。
“刚到你给我发的消息。”苏晚把袋子递给她,“给你带了芋泥波波。”
“谢谢。”雨晴接过来,带她上楼。
进门的时候橘子皮照例蹲在门口,竖着尾巴。苏晚一进来它就凑上去闻,闻了两下,开始蹭她的腿。苏晚蹲下来摸了摸它的头,猫呼噜呼噜地叫。
“它怎么胖了这么多?”苏晚说。
“在减肥。”
“减得下来吗。”
“不知道。”雨晴把奶茶从袋子里拿出来,插上吸管喝了一口。芋泥还是热的,底下是凉的,她搅了搅再喝。
苏晚站起来,在房间里走了一圈。“你这边收拾得真干净。”她说。
“昨天收过了。”
苏晚坐到椅子上,雨晴坐在床边。橘子皮跳上苏晚的膝盖,盘成一团,开始睡觉。
“它倒是认生。”苏晚说。
“它看人,不是谁都让抱的。”
苏晚笑了笑,低头摸了摸猫。“你第二个项目做得怎么样了?”
“在做报告,写了五个漏洞了。”
“厉害。”
雨晴没接话,喝了一口奶茶。苏晚也不觉得尴尬,她总是这样,安静的时候不觉得闷,说话的时候又不会让人觉得吵。
“你月考数学后来怎么样了?”雨晴问。
“还行,第二次小测考了七十八,比上次高了十分。”苏晚的语气还是那样,轻松的,像在说别人家的事。
“那挺好的。”
“好什么,才七十八,离及格还差两分。”她笑了笑,“我妈说你要是再考不及格,周末就别出门了。”
雨晴不知道该怎么接这话,又喝了一口奶茶。
两个人坐着聊了一会儿。苏晚说她最近在学吉他,报了个班,上了三节课了,手指按弦按得疼。“你呢,还在练吗?”她问。
雨晴愣了一下。她好久没碰吉他了。上次弹还是暑假的时候,林听夏住院前的那段时间,她每天晚上会弹一会儿。后来林听夏出院了,后来她们分开了,后来她开始做项目,吉他就被推到墙角,落了一层灰。
“没怎么弹了。”她说。
“为什么?”
“没时间。”
苏晚看了她一眼,没再问。她总是这样,问问题点到为止。
快四点的时候苏晚说要走了。雨晴送她到楼下。阳光比中午弱了一些,但还是暖的。苏晚把卫衣的帽子戴上,说“下次再来找你玩”。雨晴说“好”。
她看着苏晚走远了,才转身上楼。
到家的时候橘子皮蹲在门口等她,尾巴竖着。她换了鞋,先去厨房倒了杯水喝了一口,然后坐到书桌前。离晚饭还有一段时间,她打算再把报告改一遍。
打开文档的时候她忽然觉得有点累。不是身体的累,是那种做一件事做了很久、还没做完、不知道还要做多久的累。她靠在椅背上,看着屏幕上的文字——漏洞一、漏洞二、漏洞三——每一个都写得清清楚楚,但她就是不想再看下去了。
她合上笔记本,站起来,走到窗前。
窗外是那片灰蓝色的天,没有云,也没有太阳。远处有人在收被子,一个中年女人站在阳台上,把被子从晾衣架上取下来,叠了几下,抱进屋了。楼下有个小孩在骑自行车,骑得歪歪扭扭的,后面跟着一个大人,弯着腰扶着车座。
雨晴看了一会儿,觉得肚子饿了。
晚饭她把昨天从林听夏那边带回来的排骨热了热,又炒了一个青菜。排骨炖得很烂,但还是好吃的。她吃了一碗米饭,把剩下的排骨汤倒进碗里拌了拌,吃得干干净净。
洗碗的时候她想起林听夏今天下午没发消息来。她们的最后一条消息还停在昨天那个“好”字上。她洗完碗,擦干手,拿起手机,打了几个字:“饭吃了吗。”
过了几分钟,林听夏回了:“吃了,你呢。”
“也吃了。”
“苏晚来了?”
“来了,刚走。”
“聊什么了。”
“随便聊聊。”雨晴想了一下,又加了一句,“她说我吉他好久没弹了。”
林听夏隔了一会儿才回:“那你想弹吗。”
雨晴看着那行字,不知道该怎么回。想吗?好像也没有特别想。不想吗?那把吉他还靠在墙角,她每次路过都会看一眼,从来没想过要把它收起来。
“不知道。”她说。
林听夏没再回了。
雨晴放下手机,去洗了个澡。热水冲在身上暖洋洋的,但她今天不想在里面待太久,洗完就出来了。擦干身体的时候她在镜子前站了一会儿,还是那张脸,还是那圈淡淡的青色。
她躺到床上,拿着手机翻了翻。技术论坛有新帖子,她看了几篇,有一篇讲的是渗透测试中如何绕过WAF,作者写得很详细,从原理到绕过方法,每一步都有代码示例。她把文章存了书签,打算明天再看。
窗外有风,吹得树枝打在墙上,一下一下的。她听着那个声音,觉得今天好像什么都没做,又好像做了很多事。
苏晚来了,说了几句话,又走了。她改了一会儿报告,不想改了。她吃了一顿饭,洗了一个澡。这一天就这么过去了。
橘子皮跳上床,在她旁边盘成一团。她摸着猫的背,想着那把靠在墙角的吉他。
明天要不要弹一下?
她把这个问题带进了梦里。