方维O2O,demo站点地址:http://o2odemo.fanwe.net/
/cpapi/qxtapi.php
如上代码。IP验证是可以用XFF绕过的,后面直接调用simplexml_load_string解析POST字符串,造成XXE实体注入。
因为后面没有输出,所以这里是一个“盲注”,Blind XXE。测试了官方demo,但数据包没有发出来,可能是很多原因吧(是否支持外网、是否底层限制XML实体等),反正我本地是成功了的。
这边读到文件通过base64传给我的web日志:
这不是重点。
继续看后面的代码,SQL注入是重点:
可见从xml里读取的内容,传入了log_coupon函数,跟进看看:
可见query_id(也就是XML里的RecvTime)直接带入SQL语句。
这个demo站可以演示了,延时注入。POST如下数据包:
即可看见延迟了5秒才出结果。
写了个脚本跑一下数据库用户名。见测试代码。