前语 接之前的剖析文章,本篇文章将2019 神盾杯线下赛后续两道web题也解析一下。 web3 预置后门扫描 翻开源码发现是干流cms typecho,先上东西扫一波:
一起注意到版别号:
依据github的开源项目回滚到当时版别:
并进行diff:
用户名RCE
简单发现/admin/login.php处,$rememberName被反引号包裹,能够进行RCE。 SSRF缝隙 /var/Widget/XmlRpc.php:
该缝隙应该为typecho对应版别的原生缝隙,能够搜到相关信息:
那么要害点就在于过滤时,未把file协议过滤掉: /var/Typecho/Http/Client/Adapter.php:
导致咱们能够使用其进行SSRF恣意文件读取: curl "https://skysec.top/action/xmlrpc" -d 'pingback.ping file:///flag joychou' web4 预置后门扫描 翻开源码发现是干流结构 thinkphp,先上东西扫一波:
比较惋惜,这儿后门由于躲藏十分荫蔽,所以干流静态剖析东西并没有很好的识别出webshell。下面仍是得靠咱们自己diff。 该项目是开源项目: https://gitee.com/liaow/JuBiWang/tree/master thinkphp缓存机制
关于thinkphp的缓存机制,是一个陈词滥调的问题,在本年强网杯final中也有相应的问题: https://skysec.top/2019/06/16/2019-%E5%BC%BA%E7%BD%91%E6%9D%AFfinal-Web-Writeup/ 这儿就不再赘述了。 大局过滤器后门 经过diff发现在文件/ThinkPHP/Common/functions.php:
其间命题人自己编写了一个大局函数: function MY_I($name,$default='',$filter=null,$datas=null) 咱们和结构自带的I函数做个比较:
发现命题人使用了自己的: MY_DEFAULT_FILTER 咱们跟进一下:
发现内置内门assert,那么咱们寻觅调用MY_I函数的方位: /Application/Home/Controller/ChartController.class.php:
发现办法getMarketOrdinaryJson()使用了该函数,那么能够结构如下路由进行RCE: https://skysec.top/?s=/home/chart/getMarketOrdinaryJson&sky=phpinfo(); ssrf 经过diff,发现在文件/Application/Admin/Controller/AdminController.class.php中多了如下办法: [1][2]黑客接单网