从SQL注入到系统提权:一次BC站点的渗透测试全记录

1. 目标发现与信息搜集:从茫茫网海中定位目标

说实话,这类站点的发现过程,很多时候带点偶然性。我那天其实是在做常规的资产测绘,用FOFA这类网络空间搜索引擎,尝试寻找一些特定CMS的站点。这类站点通常有非常明显的特征,比如特定的标题、特定的JS文件路径,或者一些独特的响应头信息。我用的搜索语法其实不复杂,主要是围绕一些棋牌类系统的关键词,比如 title="棋牌"body="真人娱乐",再结合一些特定的后台路径特征,比如 body="/admin/login.php" 或者 header="Server: Microsoft-IIS/8.5" 这类组合。

很快,结果列表里就出现了几十个看起来“同宗同源”的站点。点开几个看看,界面布局、功能模块,甚至一些前端代码的注释都一模一样,基本可以断定是同一套源码部署的多个分站。这种“批量生产”的站点,往往有一个共同点:安全配置高度一致。一个站有漏洞,其他站大概率也跑不掉。这为我们后续的批量测试提供了极大的便利。

我随便选了一个作为切入点。第一步永远是信息搜集,这活儿就像侦探查案,细节决定成败。我习惯先用浏览器插件看看它的技术栈:前端框架、引用的第三方库、有没有暴露的API接口。然后用 nmap 或者 masscan 快速扫一下端口,看看除了80/443的Web服务,还开了哪些端口,比如数据库的1433(MSSQL)、3306(MySQL),或者远程桌面的3389。这一步能帮我们快速勾勒出目标的网络轮廓。

2. 漏洞探测与确认:SQL注入的发现与利用

信息搜集完,就该找入口了。这类站点最常见的入口点就是登录框、搜索框、订单查询这些和数据库有交互的地方。我习惯先用 Burp Suite 抓个登录请求包,保存成 login.txt,然后丢给 sqlmap 去跑。

这里有个小技巧,直接用 -r 参数指定请求文件,sqlmap 会自动解析里面的参数进行测试。命令很简单:

python sqlmap.py -r login.txt --batch --level 3 --risk 2

--batch 是让它自动选择默认选项,别老问我;--level--risk 调高一点,测试会更全面,当然也可能触发更多的WAF规则。

跑了一会儿,结果出来了,提示存在堆叠注入(Stacked Injection)。这可是个“好东西”。普通的注入可能只能查询数据,但堆叠注入允许我们在一次查询中执行多条SQL语句,这意味着我们能做的就多了,比如直接调用数据库的存储过程来执行系统命令。

为了确认漏洞的可用性,我手动构造了一个Payload测试延时:

admin'; WAITFOR DELAY '0:0:5' --

在密码框里输入这个(或者通过Burp改包),提交后页面响应明显延迟了5秒,这说明我们的延时语句被执行了,漏洞真实存在。而且,因为是堆叠注入,我们可以尝试更“危险”的操作,比如开启 xp_cmdshell。这是MSSQL里一个非常强大的扩展存储过程,能直接执行操作系统命令。很多管理员会禁用它,但我们可以试试:

admin'; EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; --

如果执行成功,我们基本上就拿到了一个通往系统命令行的“后门”。

3. 初步权限获取:从数据库到系统命令执行

确认 xp_cmdshell 能开启后,事情就简单了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值