thinkphp5 rce漏洞被动扫描插件[mitm]

本文介绍了如何通过ThinkPHP的特定特征(header中的X-Powered-By、favicon.ico和特定Controller)进行指纹识别,以及利用这些特征进行漏洞检测,包括命令执行和持久化,同时提到了Yak工具在mitm插件编写中的应用。

环境搭建

环境使用http://vulfocus.io/,启动一个thinkphp实例

指纹检测

因为可能同时开启多个被动扫描插件,如果所有网站都做一遍扫描,会造成很大程度上的资源浪费,可能会导致代理变慢

所以在开始扫描前需要对网站进行指纹识别

header特征

使用fofa搜索app="thinkphp"

发现大多数thinkphp的站点header都有X-Powered-By: ThinkPHP

还有X-Powered-By: thinkphp-bjyadmin(可能是经thinkphp二开的框架)

所以可以通过正则,对header进行匹配:

thinkphpFingers = ["X-Powered-By: .*((?i)thinkphp).*"] 
// headers是返回包的header 
checkHeader = fn(headers){ 
    for _,thinkphpFinger = range thinkphpFingers{ 
        if re.Match(thinkphpFinger,headers) { 
            return true 
        } 
    } 
    return false 
} 
 

favicon hash特征

通过thinkphp框架的默认favicon.ico识别

在yak里可以直接获取到站点favicon.ico的hash

hash, err = http.RequestFaviconHash(<favicon.ico地址>) 
 

得到thinkphp的favicon.ico的hash为1165838194,所以做如下判断

// rootUrl是网站根路径 
chechIcon2 = fn(rootUrl){ 
    hash, err = http.RequestFaviconHash(rootUrl+"favicon.ico") 
    return hash == "1165838194" 
} 
 

thinkphp的特殊Controller

在p牛的博客中看到thinkphp有个控制器4e5e5d7364f443e28fbf0d3ae744a59a,会返回站点的图标

所以当http://xxx.xx/index.php?c=4e5e5d7364f443e28fbf0d3ae744a59a返回一个图片时,就可以判定这是thinkphp站点

rsp,_ = http.Get("http://xxx.xx/?c=4e5e5d7364f443e28fbf0d3ae744a59a") 
rspB,_ = http.dump(rsp) 
header,body = str.SplitHTTPHeadersAndBodyFromPacket(rspB) 
println(string(body)) 
 

输出如图

从这里提取出两个指纹"IHDR"和"PNG",如下

// rootUrl是网站根路径
chechIcon1 = fn(rootUrl){

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值