作为一名web🐶,一直蹦现于客户现场,天天写着敏感信息未加密、反射型XSS这些漏洞来凑报告,根本没时间也不知道怎么去提升自己,复现漏洞也是照葫芦画瓢根本不知道原理是啥,一看到代码觉得肯定存在问题,又不出来问题,明明每个字母都认识,为啥合一起就不认识了。
好了,萌新鼓足勇气开始了第一次审计,打开从别人那里嫖过来的开源php审计工具:Seay源代码审计系统。相信大佬们很久以前肯定用过:
这里看到标准的php语言里标准的require的文件包含,只需要看看$temp_file参数咋处理的: 看到 tmp_file 参数是通过"/templates" 加上from_mobie 和tpl参数构造的 :如果存在就包含,不存在就报错,模版页面不存在 再看tpl参数定义:get参数获取的可控输入。那就可以构造文件包含了 payload:
index.php?tpl=xxxxx
这个包含漏洞鸡肋就鸡肋只能查看php文件:这里对文件名后四位做了判断, 在templates/default文件夹下创建phpinfo文件,用于验证:(也可以读取defalut下的php文件)
两处标准的PHP GET输出,未经过滤,先看第一处:/templates/m/search.php 直接q参数接xss的payload 第二处:/templates/m/inc_head.php 同样的q参数直接接xss的payload
查看content_list.php,有意思的一个文件,看着就像塔王之前的官方后门一样: 当session参数的md5值为9c224bc6b59179729b15e1dddcbb5c82时,configs就变成了copy, 真正执行的命令是:
9c224bc6b59179729b15e1dddcbb5c82
copy($url,$cms)
9c224bc6b59179729b15e1dddcbb5c82 md5 解码为:kejishidai 这里参数url设置为php://input,参数cms设置为shell的文件名,然后POST传入webshell代码,即可在当前目录写入恶意文件 (Tips: php://input 是个可以访问请求的原始数据的只读流。当请求方式是post,并且Content-Type不等于”multipart/form-data”时,可以使用php://input来获取原始请求的数据。) 访问恶意文件: 我的冰蝎就一直乱🐎,也不知道咋回事。
kejishidai
php://input