游客发表
凌晨两点十七分,渗透网页我盯着屏幕上的渗透网页登录框,光标在密码栏里闪烁。渗透网页
这不是渗透网页我的网站。准确说,渗透网页这是渗透网页我接手渗透测试任务的第三个目标。客户说内部系统被入侵过,渗透网页数据被拖走了几万条,渗透网页但安全日志干净得像刚擦过的渗透网页黑板。他们想让我找出攻击者留的渗透网页后门。
我习惯先看前端代码。渗透网页F12一按,渗透网页控制台里跳出一行注释:“if you're reading this,渗透网页 you're already too late.” 挺嚣张的。往下翻,渗透网页发现一个被注释掉的渗透网页AJAX请求,指向一个叫“/api/sync”的路径。正常业务里根本没有这个接口。
直接访问,返回404。但服务器响应头里有个奇怪的字段:X-Debug-Mode: false。我改成true再试,页面变了——一个简陋的上传页面,没有任何验证。上传一个PHP文件,服务器直接给了一句话提示:“Upload successful.”
就这么简单?不,这太顺了。攻击者不会留这么明显的口子给后来人,除非这是个陷阱。
我停下手,把请求包翻出来细看。发现上传的文件名被服务器自动加了时间戳前缀,而且存储路径是“/uploads/”。但真正让我后背发凉的是,响应里多出一个cookie,叫“session_fragment”,值是一长串十六进制字符。
我把它丢进解码工具,发现是一个序列化对象。里面有个字段指向“/var/www/html/backdoor.php”。这招够阴——上传入口是诱饵,真正后门藏在服务器文件系统里,靠cookie触发。
我试着构造一个恶意cookie,把序列化对象里的路径改成“/etc/passwd”。没想到服务器直接返回了文件内容。root:x:0:0:root:/root:/bin/bash,一行行往下滚。那一刻我明白了,攻击者不是新手,他故意留下前端注释,诱导后来人走他设计好的路线,真正的后门反而藏得更深。
但有个问题让我纳闷:既然他能拿到/etc/passwd,为什么不直接拿数据库?我继续翻cookie的序列化结构,发现有个参数叫“import_filter”,默认值是“none”。我改成“database”,然后重新请求。
这回响应里多了一段JSON,是数据库连接信息。用户名是“root”,密码是“toor”。我笑了,这密码太敷衍了。但等我连上数据库,发现里面只有一个表,叫“visitors”,里面存着所有访问过这个网站的人的IP、浏览器指纹、甚至鼠标轨迹。
原来如此。这个网站本身就是一个收集器,所谓“被入侵”只是幌子。客户可能自己都不知道,他们雇我来找后门,其实后门就是他们自己装的——为了监控访客。
我关掉终端,把发现写进报告。但最后一段我留了个私人的判断:这个后门的设计者,大概率是内部员工,而且对安全审计流程很熟悉。他故意留一个低级的漏洞当诱饵,真正的陷阱是那个cookie序列化。
窗外天快亮了。我点了根烟,想着那个“toor”密码——也许他根本不在乎被发现,也许他早就知道我会来,甚至希望我来。毕竟,最完美的渗透,是让目标自己雇佣你来检查他的秘密。
随机阅读
热门排行
友情链接