一次thinkphp任意代码执行

开始找网站,thinkphp 的网站一找一大堆,可怕...

更可怕的是并不是你找到的就能任意命令执行,需要一个网站一个网站的测试 ...

然后我就一个一个的试 , 好可怜啊, 试了十几个才有一个可以利用的...

 

原理: 

有问题的代码:

$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

7$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2';', implode($depr,$paths));

 

将preg_replace第二个参数中的双引号改为单引号,防止其中的php变量语法被解析执行。其实只有一个引号的差别,现在你知道基础多重要了吧。

 

利用过程:

找网站吧,慢慢找总能找到一个,这是搜索语法,为了结果更精准一点,不用测试更多无用的

 



首先打开网站的主页,因为搜索到的都是报错的页面,不能直接利用,

自己找找什么网页包含参数,然后进行payload 注入,测试是否能够利用这个漏洞

就像下边的这个一样,就是可以执行代码的网站

 

然后更改payload , ${ eval($_POST[a])}

使用菜刀连接

 

尝试写入shell,这样对方thinkphp升级也能访问,于是写入shell, 这时候忽然在根目录下边发现一个404.php ,感觉好奇怪啊 ,打开看一下 ,卧槽 ,别人上传的大马 ,还是那种很贱很贱的那种 ,于是我把密码改了 ,然后他就不能用了 23333

 

看着现在时间还多着 ,于是尝试修补漏洞 ,让其他人不能登陆 ,根据上边的漏洞代码 ,找到目标文件夹 ,实际测试中发现 ,路径完全不一样 ,有差别 ,但是最后的文件名是一样的 ,修改保存

 

现在这个网站就只属于你的了 , 哈哈 !!!


*********************************************************我是一个分割线**************************************************************


你是不是认为这就完成一次成功的例子 , 其实我当时也是这么认为 的,直到身边的人不小心访问了下这个网站的主页面 ,擦 ,白屏!!!

还有一行 报错信息 ,就是刚才改动的文件的名字里边报错了 ,提示内容是  无效的分号 !!!


旁边的人问我 ,你修改文件备份了没有?!  我说没有....   这时候才终于知道修改前先备份一个文件是多么重要了 ....

擦 ,赶紧把原来的文件改过来 ,然后打开原来的文件 ,手都是软的 ....


然后修改单引号为双引号 ,再次访问目标主页面 ,访问正常

郑重提示 ,新手不要乱改别人的页面 ,还有函数!!!

文章仅供学习,不要做坏事

你可能感兴趣的:(测试实验)