拿到一个IP,通过你能挖出什么?渗透去年秋天我盯上了一个境外IP,203.0.113.47。通过它每天凌晨三点准时向国内某高校的渗透邮件服务器发送心跳包,持续了整整两周。通过这个规律太像自动化脚本了——正常人谁会在那个点爬起来发邮件?渗透我决定从它下手。
先跑一遍nmap。通过端口扫描结果出来,渗透22、通过80、渗透443、通过3306全开着。渗透22端口跑的通过是OpenSSH 7.4,这个版本有个CVE-2018-15473的渗透用户枚举漏洞。我试了几个常见用户名,通过root、admin、test,返回的响应时间有微妙差异——root的延迟多了12毫秒。这说明root账户存在,而且系统在验证时做了额外检查。
80端口是个WordPress站点,标题写着“TechBlog”。wp-login.php可以直接访问,但admin账户被锁定了。我翻了翻站点的robots.txt,里面有一行
Disallow: /wp-content/uploads/backup/。这个路径不该出现在robots里,明显是有人手动加的。直接访问,目录列表开着,里面躺着一个db_backup_20230915.sql.gz。下载解压,wp_users表里admin的密码哈希是$P$B...,phpass加密。用hashcat跑rockyou字典,四十分钟后出来明文:P@ssw0rd_2023!。但wp-admin后台登进去,发现只是个普通编辑账户,没权限装插件。真正的管理员是另一个用户
techlead。我回到数据库里找,wp_usermeta表里有条记录:session_tokens字段序列化了一个过期时间到2024年的token。把这个token直接塞进Cookie,刷新页面——成了,现在我是techlead。后台的插件列表里有个“Simple File List”,版本2.2。这个版本有任意文件下载漏洞,构造URL
/wp-admin/admin-ajax.php?action=eeSFL&file=../../../../etc/passwd,返回了系统的用户列表。其中有个用户叫deploy,家目录是/home/deploy。我下载了/home/deploy/.ssh/id_rsa,私钥没加密。用这个私钥直接ssh登录22端口,ssh -i id_rsa deploy@203.0.113.47,进去了。进去之后发现这台机器是跳板。
~/.bash_history里留着上一个人的操作记录:ssh -i /home/deploy/.ssh/internal_key.pem 10.0.1.15。内网IP。我扫了一下10.0.1.0/24,15那台开着6379端口,Redis未授权访问。写个crontab反弹shell,两分钟后拿到10.0.1.15的www-data权限。这台机器上跑着公司的CI/CD,/var/lib/jenkins/credentials.xml里存着AWS的access key。整个过程没有用任何0day。全是配置疏忽:robots.txt泄露路径、数据库备份没删、SSH私钥没密码、Redis没设密码、Jenkins凭据明文存储。最讽刺的是,那个每天凌晨三点的心跳包,其实是运维写的监控脚本,用的默认密码
admin:admin。我后来联系了那家公司的安全团队,他们花了三天才把整个链条切断——从外网IP到内网Jenkins,一共七台机器。所以别总想着找漏洞。先看看你暴露了什么。一个IP背后可能连着一整张网,而入口往往就是某个偷懒的配置、某个忘了删的备份、某个觉得“内网没人看”的服务。渗透测试里最锋利的工具不是exp,是耐心和观察力。
顶: 898踩: 89437






评论专区