刚刚写完的文件包含和文件上传学习,我还好奇如何使用文件上传,没想到一句话木马解决了我的疑问。
正常的一句话木马是就是 eval($_POST["code"]) ,就是动态执行接收到的code 参数后边所写的执行语句,
其实很多waf啊什么的都会查杀这种后门木马的,但是会用各种方法绕过,这种绕过确实需要对php语言有一定基础,
比如先用base64编码,然后再解码,然后…………(太多了,有点说不过来)
依然是视频奉上:
https://study.163.com/course/courseLearn.htm?courseId=1006068111#/learn/video?lessonId=1053465861&courseId=1006068111
(有视频为什么还要看我的文章,很有道理的问题,但是如果自己学可能会出现思路不清晰的问题吧,还需要找资料。我这不是给你找齐了嘛)
接着说,既然有了一句话木马,有了文件包含和文件上传,ok,我们举个例子
我上传一个图片,后边携带的php代码并不是后门木马,而是采用了创建文件,创建一个了一个php的文件在
某个目录下,这个文件内容是一句话木马(或者是一句话木马的绕过版本)
再然后通过文件包含执行这个图片,这样文件就会被创建,再然后在执行创建了的文件,这样的话
一句话木马就开启了。这样也就解答了上一篇文章说到的 jpg png文件该如何执行的问题。
文件包含漏洞:文件包含漏洞分为两种,一种是远程包含,一种是本地包含,远程包含就是执行一个url解析后显示出来,
本地包含就是执行一个本地文件。文件包含最大的损伤就是无论什么文件都会当做php文件进行执行,这样就会配合着
文件上传漏洞一起执行,这样我们封装在jpg文件里的php代码就会被执行。(现在看来确实很六啊)
反思:其实做了扫描器这么久,一直在做工程,很少写组件,不过现在看来自己很多代码执行起来,如果用户一旦有注入点,那么我的服务器基本所有权限都挂掉了,比如我们会动态执行或者加载组件,很多时候我们并没有理解网上的payload什么意义,现在想想很可怕,很可能就是一段base64编译过后的代码,然后通过某种方式上传到我们组件中,再才用动态执行,很有可能就把服务器瞬间拿下了……
我又产生了疑问,到底是哪句话会让php如此动态的执行所有文件,并当成php文件执行呢?为什么会有这种设计呢?这种设计的初衷又是什么呢,解决了什么样的问题呢?
感觉需要学习的还有很多啊……
网友评论