凌晨两点十七分,渗透我盯着终端上跳动的服务光标,手心全是渗透汗。对面那台服务器已经第四次拒绝了我的服务SSH握手——不是密码错,是渗透它压根不打算跟我说话。防火墙规则严得像铁桶,服务端口扫描只回了个寂寞。渗透
渗透测试这活儿,服务干久了会养成一种怪癖:看什么都像漏洞。渗透咖啡机连着公司WiFi,服务我觉得它迟早被薅成肉鸡;楼下便利店的渗透自助收银机跑着老掉牙的Windows XP,我差点想给它递张纸条提醒升级。服务
但今晚这台目标不一样。渗透它太干净了,服务干净得反常。渗透常规路径全堵死,Web应用层连SQL注入的余地都没留,参数过滤得比处女座还洁癖。我甚至怀疑运维是不是天天拿扫描器当梳子用。
转机出现在凌晨三点。我无聊翻着HTTP响应头,瞥见一个不起眼的字段——X-Custom-Header: debug=off。手贱改成debug=on,服务器居然回了份完整的堆栈跟踪。那行Java异常信息里,藏着个绝对路径:/opt/backup/old_config.jar。
备份文件。老规矩,先下载再拆包。jar里躺着一份application.properties,数据库密码是明文——root:toor123。我差点笑出声,这公司安全预算估计全花在防火墙上了,后端密码还留在2008年。
用这密码连上MySQL,权限大得吓人。但我不急着拖数据,先看一眼mysql.user表——嘿,root账号竟然允许从任意主机登录。再配合SELECT ... INTO OUTFILE写个webshell,那台服务器就成了我的后花园。
整个过程没触发任何告警。不是因为我技术多高超,纯粹是他们的监控只盯对外攻击特征,内部横向移动压根没人管。我甚至抽空看了眼他们的邮件服务器,有个HR的收件箱里躺着三十几封未读简历,其中一封标题写着“应聘高级安全工程师”。
渗透测试结束,我写了份六十页的报告。甲方老大看完脸色铁青,问我“能不能删掉这部分”。我指着那个debug参数说,您该庆幸发现它的是我,不是别人。三天后他们请了个安全团队来做整改,听说第一件事就是把所有默认密码改了。
这事过去半年了,我偶尔还会想起那台服务器。它教会我一件事:最坚固的堡垒往往从内部被攻破,而人类最脆弱的环节永远是懒惰和习惯。那个debug=off的字段,大概就是运维某次调试完忘了关的——跟大多数人家里装完报警器却从来不设防一个道理。