PHP程序安全漏洞挖掘--吴文灏
2020-02-27 333浏览
- 1.
- 2.PHP程序安全漏洞挖掘
- 3.关于我 • ⺴⽹网名: erevus • 集渗透师,跨站师,结界师,产品狗于⼀一⾝身的⽩白帽⼦子 • ⺫⽬目前在知道创宇的404实验室的安全研究组任安全研究员 • 个⼈人博客:http://erevus.me• 联系邮箱:erevus@erevus.me
- 4.⺫⽬目录 • 1.焉知攻,未知防 • 2.⽩白盒审计准备阶段 • 3.⽩白盒审计阶段 • 4.简单粗暴的免费安全解决⽅方案
- 5.焉知攻,未知防
- 6.Web 安全的本质是信任问题 • 由于信任,正常处理⽤用户恶意的输⼊入导致问题的产 ⽣生 • ⾮非预期的输⼊入 • 安全是⽊木桶原理,安全是⼀一个整体,保证安全不在于 强⼤大的地⽅方有多强⼤大,⽽而在于真正薄弱的地⽅方在哪
- 7.⿊黑客对⺴⽹网站渗透过程 信息收集 ! • ⽐比如域名、使⽤用了什么组件。⽐比如使⽤用Apache, Discuz! ,WordPress! • 使 ⽤用信息收集公开的漏洞对⺴⽹网站使⽤用的组件进⾏行 ⿊黑盒测试! 攻击! • 对组件进⾏行漏洞挖掘,这种挖出来的漏洞有 ⽩白盒测试! 个通⽤用的名字叫0day,然后使⽤用0day对⺴⽹网 站组件进⾏行⽩白盒测试! 社会⼯工程学 ⾏行攻击! • 社⼯工库查询,钓⻥鱼邮件 等…!
- 8.漏洞种类以及导致的危害 漏洞类型 SQL注入 命令执行 可能导致的危害 获取数据库内容 获得服务器权限 代码执行 文件包含 可以变成命令执行,获得服务器权限 导致任意文件读取,一定条件下能获得服务器权限 越权 任意文件上传 不好说,看越哪里 获取服务器权限 任意文件下载 导致任意文件读取,读数据库配置文件 任意文件删除 把你的网站重装掉,然后获取服务器权限? 业务逻辑 经常导致一些有趣的问题发生 XSS 获得用户cookie
- 9.漏洞种类以及导致的危害 漏洞类型 SQL注入 命令执行 涉及的函数 涉及数据库操作的函数 system(),shell_exec(),exec(),popen()… 代码执行 文件包含 eval(),assert(), preg_replace(),file_put_contents(),fwrite… include(),include_once(),require(),require_once() 越权 任意文件上传 涉及上传文件的函数 任意文件下载 fopen(), readfile(), file_get_contents,file()… 任意文件删除 unlink() 业务逻辑 XSS
- 10.⽩白盒审计准备阶段
- 11.开启 MySql ⽇日志记录功能-准备阶段 开启 Mysql ⽇日志记录功能 在my.conf 加⼊入以下⼀一句 log=/tmp/mylog.log
- 12.需要的⼯工具-准备阶段 • Eclipse + PDT + Xdebug • 但是我⽐比较sublime,我的同事都喜欢⽤用grep搜索,⽤用 echo调试。因为快!(=σωσ=)♪ • 部署环境:Apache + PHP + MySql • 抓包⼯工具:BurpSuite+Firefox(Chrome)
- 13.明确⾃自⼰己的思想-准备阶段 • 不要以开发和⽤用户的⾓角度去思考问题,⽐比如不按常规的 提交变量 • ⼤大多数的HTTP请求都是可以重放和伪造的,所以不要 相信什么单选框⾥里的value • 寻找可控变量. • 寻找敏感操作的函数,找漏洞的核⼼心操作是”跟”!
- 14.⽩白盒审计阶段
- 15.分析运⾏行机制-审计阶段 1.分析运⾏行机制。⽐比如是使⽤用MVC的设计模式,我们就 看M和C就好了。 2.是否使⽤用框架。框架可能会有全局过滤函数或者未修 复的old day(乌云或者Sebug上搜啊)。 3.是否使⽤用了全局安全防护函数。! 4.如果有全局安全防护函数,安全函数是否能被绕过, 是否有遗漏的地⽅方.⼀一般来说安全函数只是防SQL注⼊入和 XSS,对命令执⾏行和代码执⾏行等不影响。! 5.如果上述的都满⾜足,那就应该把挖掘⺫⽬目标定位在逻辑 层⽅方⾯面。!
- 16.寻找漏洞-审计阶段 搜索敏感关键词,追踪可控变量引⼊入攻击代码。 1.全局搜索eval(, assert(, preg_replace(, system(, shell_exec(, exec(, popen(,flie_put_contents(,fwrite( 2.找到这些,函数之后向上跟变量,看变量是哪⾥里传⼊入的。 3.找到有没有可控的变量传⼊入到这些危险函数中 4.通过var_dump,exit等对代码进⾏行调试分析
- 17.Talk is cheap, show me the code
- 18.代码执⾏行&命令执⾏行 这个⼀一个Discuz! X3.2的程序⾥里搜索fwrite的结果
- 19.代码执⾏行&命令执⾏行
- 20.代码执⾏行&命令执⾏行 /uc_server/install/func.inc.php 攻击者只需要⾃自⼰己搭⼀一个数据库, 数据库名,数据库帐号、密码都 是可以被攻击者控制的 找到了可控的变量我们再去看看 哪⾥里调⽤用了这个函数
- 21.代码执⾏行&命令执⾏行 /uc_server/install/index.php
- 22.代码执⾏行&命令执⾏行 通过对install/install.php的源码进 ⾏行分析,如果⺴⽹网站当时安装时是选 择”仅安装Discuz!”模式时,./ uc_server/install/⾥里的install.php⽂文 件不会被删除。 只要./uc_server/install/⾥里的 install.php还可以⽤用我们就可以利 ⽤用这个⽂文件执⾏行我们想要的代码
- 23.代码执⾏行&命令执⾏行
- 24.代码执⾏行&命令执⾏行
- 25.任意⽂文件上传
- 26.任意⽂文件上传 ⾸首先找到上传⽂文件的函数,会产⽣生漏洞的点有: 1.客户端判断后缀(js判断) 2. MIME判断 如php中 if($_FILES[‘userfile’][‘type’] != “image/gif”) 即是检测Contenttype值。Conten-type值是从客户端获取的,是可以任意伪造的。 3.⼤大⼩小写绕过 4.上传⽂文件后不重命名可能有安全隐患。配合⼀一些解析漏洞,⿊黑客可以 把jpg⽂文件解析成php⽂文件,还可以通过⽂文件名进⾏行注⼊入. 解析漏洞参考链接:http://drops.wooyun.org/papers/539
- 27.任意⽂文件上传 修复⽅方法: 1.后端判断⽂文件后缀 2.重命名⽤用户上传的⽂文件 3.使⽤用⿊黑⽩白名单同时使⽤用。禁⽌止php,php4,php5等⽂文件 上传的同时也只允许图⽚片⽂文件上传。 4.有条件的情况下建⽴立存储⽂文件服务器
- 28.业务逻辑安全
- 29.越权-业务逻辑安全 1.泄露⽤用户资料,订单、个⼈人信息可以通过遍历id去访问(⿊黑产最喜欢这 样的漏洞了) 2.可以对别⼈人⽤用户进⾏行操作,⽐比如修改别⼈人的账户信息。 3.直接操作后台等敏感操作。 这些都是因为没有加COOKIE/SEESION的判断 寻找这些漏洞找⼀一下会员中⼼心或者后台的操作是否有加COOKIE/ SEESION的判断即可
- 30.⽀支付漏洞-业务逻辑安全
- 31.⽀支付漏洞-业务逻辑安全 我有⼀一个朋友说,我公司新上线了⼀一个商城你来看看有啥⼦子问题吧.
- 32.⽀支付漏洞-业务逻辑安全 然后他过了5分钟之后说修好了.
- 33.⽀支付漏洞-业务逻辑安全 你特么在逗我? 不要只在前端做判断! 不要只在前端做判断! 不要只在前端做判断! 重要的事情要说三遍!
- 34.⽀支付漏洞-业务逻辑安全 订单价格可由⽤用户传⼊入,可以直接改订单价格 寻找⽀支付类漏洞⽐比较简单,直接在抓包改包试试能不能改价格! 或者商品数量就⾏行。!
- 35.MYSQL特性导致的漏洞
- 36.⻓长度溢出-MYSQL特性导致的漏洞 • MySQL 的 TEXT 类型最⼤大上限为 65535 字节,所以当存储值超过 65535 字节时会对后⾯面进⾏行截断操作。也就是65535后⾯面的字符都没了。 • WordPress 的评论处就没有对评论进⾏行最⼤大⻓长度限制,⽽而且它还⽀支持富 ⽂文本。导致可以利⽤用这样⼀一条 Payload 插⼊入恶意标签事件Knownsec• 解析后就变成这样:57.对开发者的建议 • 1.写完代码之后,codereview⼀一次,回想⼀一下有没有可以被⿊黑 客可以利⽤用的点。! • 2.定期对⾃自⼰己的代码进⾏行⼀一次安全审计,发现那些可以被任 意操控的变量进⼊入到了敏感函数中(可以通过echo验证⼀一 下),⼀一定要过滤⼀一下.你利⽤用不了不代表⿊黑客利⽤用不了。! • 3.不能⼼心存侥幸地以为有些地⽅方⿊黑客猜不出来,他们打CTF ⽐比赛的时候脑洞可⼤大了。md5(时间戳+⽤用户名)作为找回密 码的token他们都有⼈人能猜出来…!58.简单粗暴的免费安全解决⽅方案59.加速乐云WAF60.Q&A61.END
- 57.对开发者的建议 • 1.写完代码之后,codereview⼀一次,回想⼀一下有没有可以被⿊黑 客可以利⽤用的点。! • 2.定期对⾃自⼰己的代码进⾏行⼀一次安全审计,发现那些可以被任 意操控的变量进⼊入到了敏感函数中(可以通过echo验证⼀一 下),⼀一定要过滤⼀一下.你利⽤用不了不代表⿊黑客利⽤用不了。! • 3.不能⼼心存侥幸地以为有些地⽅方⿊黑客猜不出来,他们打CTF ⽐比赛的时候脑洞可⼤大了。md5(时间戳+⽤用户名)作为找回密 码的token他们都有⼈人能猜出来…!
- 58.简单粗暴的免费安全解决⽅方案
- 59.加速乐云WAF
- 60.Q&A
- 61.END