「原创」萌新也能看懂的ThinkPHP3.2.3漏洞分析
ThinkPHP是一个有效,兼容且简单的PHP开发框架,支持Windows/Unix/Linux服务器环境。官方版本需要PHP5 .0或更多,并且与MySQL数据库合作。
Sqlite教授和PDO扩展。
Jia Ge在Ichengqiu论坛上分享了有关她了解Thinkpp3 .2 .3 漏洞分析的完整个人资料。
适合初学者。
未经许可就严格禁止打印。
本文将分析ThinkP3 .2 .2 .3 详细信息中的一些常见孔:如果注射,注射,链路注入,搜索/选择/删除,注入和缓冲漏洞。
当使用链模式作为控制器中的参数时,有一个差距,其中注射差距。
通过将停止在用户转动并使用phpstromf7 输入,您可以看到我获得了传输参数的方法。
焦点是滤波器功能,首先使用HTMLSpecialChars过滤参数,然后使用Think_filter过滤常规的SQL函数。
在该方法所在的位置,请放置$ $ [where']的$的值。
继续监视和查看搜索方法,并最终创建一个完整的SQL语句。
关键在于实施语法分析方法,然后分析特定的注入载荷。
在EXP注入孔中,可以使用全局阵列传输参数来激活漏洞。
在$ user上设置一个直接停止,使用F7 跟踪,忽略其中的方法,然后继续跟踪搜索,选择,构建buildectsql,parsesql和Parse Where的方法。
在跟踪ParswereItem方法时,$ suit的参数为数组的形式,{'exp','sql Injext exp'}。
目前,当$ exp满足EXP时,参数和值将被移植,最后将EXP权重到SQL。
粘结孔用于通过保存方法证明。
在更新方法中创建SQL命令,在Paruseeset方法中,将参数传输为:0。
在BindParam方法中,将参数值包装在colon(:)中。
继续监视语法和语法分析的分析方法。
当EXP绑定时,参数值将首先由结肠(:)。
由于SQL语句中有两个点,因此在刺激方法中:0被第二个参数的值替换,最后负载是。
当ID [where] = 1 p传输时,无法执行_PareType方法转换数据。
继续监视选择方法,buildelectsql,parsesql和parseewe,以$的键 - 在该$中传输,如果直接执行了命令。
当ID = 1 P传递时,由于找到的方法,不可能执行注射,_ParseOptions和_PareType将传递到塑料的参数绑定。
选择和注入的原理类似于搜索方法,但是去除方法还有一个额外的步骤来确定其是否为空。
在Orderby的孔中,首先编写代码以执行控制器中的差距。
根据搜索,选择,构建buildectsql和parsesql的方法在用户变量和F7 处进行集合。
当参数$['order']选项不是数组,而是直接返回OrderBy+的负载,最后负载是。
在缓冲孔中,ThinkPP3 .2 提供了缓冲活动的F方法和方法s。
方法s通过设置方法记录在缓冲区中,然后使用文件名方法获取通往文件的路径并将其保存在文件夹中../application/runtime/temp。
最后,将S tos to MD5 中传输的名称作为文件名,然后通过file_put_contents函数将写入文件中。
简而言之,本文分析了Thinkpp3 .2 .3 中的一些重要漏洞,并提供了特定的步骤和负载示例。
为了确保安全性,开发人员应仔细考虑编码,确保安全过滤参数并遵循开发过程中的最佳实践。
在实践活动中,试图在可以更好地理解ThinkPhp框架及其安全性的安全环境中重新生成这些漏洞并验证它们。
漏洞考古:thiknphp5 代码执行漏洞
利用POC的thinkphp5 .0.5 版本中是否存在代码执行漏洞? s = index/think \ app/InvokeFunction&function = call_user_func_array&vars&vars [0] = phpinfo&vars [1 ] [] [] = 1 访问index.php后,系统过程将通过APP类运行的方式初始化,并且要处理模块方法的路由信息,直到输入路由信息。在路由过程中,此过程遇到了约3 5 4 行的关键位置。
这里评论的代码是脆弱性修复的正式实施。
在加载程序类中,恶意类是通过反射执行的。
反射后,调用类方法,检索参数,并最终执行CALL_USSER_FUNC_ARRAY方法,从而实现了Phpinfo的执行。
漏洞的基本原因是,当Think框架处理路由时,它会完全考虑到\ char,而不是完全考虑到诸如Think \ app之类的恶意路由,并使用反思机制执行任何功能。
官方修复主要是要过滤根部的特殊字符串。
对于ThinkPhpv5 .0.x版本,修复程序是在$ scontroller = sprip_tags($ result [1 ]?:$ config ['default_controller'])之后添加代码。
库/think/app.php文件中的语句。
对于v5 .1 .x版本,修复程序是替换$ controler = strip_tags($ result [1 ]?:$ this-> rule-> getConfig('default_controller'))。
包括指定的修改代码。
PHP远程代码执行漏洞复现(CVE-2019-11043)【反弹shell成功】
CVE-2 01 9 -1 1 04 3 是远程代码执行的漏洞,它会影响NGINX+PHP-FPM服务器的特定配置。攻击者摧毁了FastCGI_SPLIT_PATH_INFO的指令,发送了一条新的行,制造了Path_info,这引起了漏洞。
该漏洞在某些NGINX配置中生效,主要影响某些版本的PHP和PHP 5 .6 该操作方法包括使用P-Kun Docker环境再现脆弱性。
首先,启动环境并访问默认页面,例如1 2 7 .0.0.1 :8 08 0/index.php。
然后安装Docker和Golang环境以创建脆弱的环境。
在执行过程中,请注意,可以对某些PHP-FPM子处理进行污染,并尝试多次执行该命令。
尝试使用篮板外壳,但我发现NC团队没有在当地安装。
因此,为Docker容器安装NC。
该容器包含两个Docker:NGINX和PHP图像。
未在NGINX图像中安装NC后,切换到PHP图像,成功安装并使用NC连接到本地端口以实现Bounce shell。
为了优化速度,请使用镜像加速器,例如阿里巴巴云或中国科学院的加速服务。
设置Docker文件后,重新启动Docker以显着提高速度。
对于基于HTTP和SOCKS5 协议的访问,需要对会计进行支持,并且无需会计数据即可直接实现访问。
最后,通用团队团队在CTF拍摄方面的技术信息,无私和APT的渗透旨在确保信息的实际交流以及维持红色和蓝色团队的进攻和保护区。
该小组发布了“对渗透性测试的实用指南的进攻和保护”,并且正如预期的那样,将来会出版更多书籍,例如“对不安和保护的进攻和保护:渗透测试的实用指南”,“ CTF和APPT竞争提示。