1、文件包含
(1)DVWA环境下去包含其他目录的任意3个文件,要求使用相对路径
-
../../../../../(输入多个../返回系统根目录),
-
包含账户信息文件:/etc/passwd
-
包含账户组信息文件:/etc/group
-
包含磁盘配置文件:/etc/fstab
-
(2)远程文件包含
-
使用DVWA的文件包含漏洞包含 Upload-Labs 中写有
<?php phpinfo();?>
代码的info.txt文件。 -
直接访问路径,实现远程文件包含
(3)中间件日志包含绕过,要求使用蚁剑连接成功
-
需要先对日志文件和目录添加权限,让Web端有权限去访问(DVWA中,apache2日志文件路径为 /var/log/apache2/access.log)
chmod 755 /var/log/apache2/ chmod 644 /var/log/apache2/access.log
-
利用burp抓包,防止浏览器对输入内容进行url编码
-
后端日志看到一句话木马插入成功
-
使用蚁剑连接(因为网站是登入的状态,所以还需要在连接时添加对应的cookie信息)
-
成功拿下
2、CSRF
(1)DVWA-High等级
-
使用两个账户来模拟受害者(smithy)和攻击者(admin)
-
先通过XXS漏洞
<img src=## one rror=alert(document.cookie)>
获取到smithy的cookie值PHPSESSID=2irfvj6la15doosaetcr0b8dq2; security=high
-
然后在admin用户下,通过抓包来实现CSRF漏洞(因为high等级会验证token信息,token又是不可预测参数,所以需要修改等级为low,删除token;修改cookie即可以利用smithy账户来实现密码修改)
-
发现用户密码修改成功,页面变成了smithy账号且等级为low
-
使用修改后的密码123456登入成功
-
(2)使用Burp生成CSRF利用POC并实现攻击
-
使用pikachu靶场,kobe模拟受害者,vince模拟攻击者
-
用burp抓取vince修改信息的包并生成相应的CSRF PoC
-
kebe所在的去浏览器访问,成功被修改
3、SSRF:ile_get_content实验,要求获取ssrf.php的源码
-
用php://filter 来读取php源码,构造出相应的url
-
由于网站会将源码解析,需要调用read参数进行编码,防止解析
-
最后对经过base64编码后的代码进行解码,即得到ssrf.php的源码
<?php /** * Created by runner.han * There is nothing new under the sun */ $SELF_PAGE = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1); if ($SELF_PAGE = "ssrf.php"){ $ACTIVE = array('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','active open','active','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''); } $PIKA_ROOT_DIR = "../../"; include_once $PIKA_ROOT_DIR.'header.php'; ?> <div class="main-content"> <div class="main-content-inner"> <div class="breadcrumbs ace-save-state" id="breadcrumbs"> <ul class="breadcrumb"> <li> <i class="ace-icon fa fa-home home-icon"></i> <a href="ssrf.php"></a> </li> <li class="active">概述</li> </ul> </div> <div class="page-content"> <b>SSRF(Server-Side Request Forgery:服务器端请求伪造)</b> <p>其形成的原因大都是由于服务端<b>提供了从其他服务器应用获取数据的功能</b>,但又没有对目标地址做严格过滤与限制</p> 导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据<br> <br> 数据流:攻击者----->服务器---->目标地址<br> <br> 根据后台使用的函数的不同,对应的影响和利用方法又有不一样 <pre style="width: 500px;"> PHP中下面函数的使用不当会导致SSRF: file_get_contents() fsockopen() curl_exec() </pre><br> 如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,<b>则请做好目标地址的过滤</b>。 <br> <br> 你可以根据"SSRF"里面的项目来搞懂问题的原因 </div><!-- /.page-content --> </div> </div><!-- /.main-content --> <?php include_once $PIKA_ROOT_DIR . 'footer.php'; ?>
4、文件包含、目录遍历和SSRF有什么区别?
-
文件包含漏洞:由于对上传的文件校验不严谨,导致攻击者可以将写有恶意代码的文件上传至服务器,实现加载解析达到远程代码执行的效果
-
目录遍历漏洞:由于网站本身配置缺陷,导致攻击者可以利用目录跳转符任意浏览网站目录,导致目录及文件的信息泄露
-
SSRF:由于服务端未对目标地址进行严格的过滤,导致攻击者可以构造攻击链,控制服务端来实现对内网地址的攻击
- 目标不同:文件包含是传入文件;目录遍历是文件也可以是目录;SSRF是url。
- 使用函数的不同:目录遍历由于是使用中间件存在的漏洞即与函数无关;文件包含涉及到require、include等函数;SSRF涉及到curl、file_get_contents等函数。
- 利用方式不同:文件包含对文件里的内容进行操作,编译;目录遍历用来获取目录文件信息;SSRF加载指定地址的图片。
- 请求方不同:文件包含和目录遍历的请求方都是客户端发起,SSRF则是服务端发起。