前言
▶ 经过了一个寒假的沉淀,大家在年龄上增长一岁,安全技术方面有没有也增长一大截呢?新的一学期,我们继续为大家带来每周一次的技术分享,希望热爱安全的小伙伴们能从中受益!
▶ 在上一期我们已经介绍了AKun Wallpaper的部署,分析了部分xss漏洞并且讲解了如何修复这些漏洞。这一期将继续分析xss漏洞,但是与上一期中类似的xss漏洞将会直接跳过。
漏洞分析1
▪ 注意下图中标红的 `(Shared Sink) - [0/7]`,这说明有7个数据流共享一个数据输出点。也就是有7个位置接收数据,这7个不同的数据将会在同一个地方输出。我们在修复漏洞时,可以在数据流输入的位置处理数据也可以在输出的地方处理数据,所以我们在 `alert($message, $redirect)`函数中处理即可同时修复这几个漏洞。
▪ 当光标放在文件名上时,会提示文件的路径。用phpstorm打开这个文件进行修改,当然也可以在fortify上直接修改。
▪ 用转义函数处理这两个变量,将下列两行代码加入到 `alert`函数中。
$message = my_htmlspecialchars($message);
$redirect = my_htmlspecialchars($redirect);
▪ 然后选中刚修复的漏洞,右击鼠标并点击 `Unsuppress Issues`,然后就会在漏洞前面看到`X`状图标,这代表你忽略这个漏洞或处理完了这个漏洞。
▪ 如果点击`Unsuppress Issues`后发现漏洞不见了,可以在菜单栏依次点击 Options>Show Suppressed Issues。
漏洞分析2
▪ 看到 index.php第22行,这里的数据是直接从cookie中获取。我们不能直接修改别人浏览器中的cookie,也就是这里不会存在xss漏洞。如果网站有跨域资源共享漏洞(CORS)就可以通过ajax请求修改受害者cookie,结合此处就代码就形成xss漏洞,所以最好在此处对特殊字符进行转义。
漏洞分析3
▪ 我们对 `$_COOKIE['adminUser']`处理后再仔细观察此处代码,发现程序首先会判断 `$_SESSION['adminUser']`是否存在,如果不存在就会获取 `$_COOKIE['adminUser']`的值。我们知道session是无法改变的,但是自己浏览器上的cookie是可以任意修改的。我们猜测判断登录的逻辑也和此处一样,如果一样则可以通过修改cookie来绕过登录。
▪ 在index.php的第3行有判断登录的函数,按住 `ctrl`同时用鼠标点击 `checkLogin()`,这样就跳转到了该函数定义的位置。
▪ 发现判断登录的函数果然和上一处一样。程序会判断 `$_SESSION['adminId']`和 `$_COOKIE['adminId']`是否存在且不等于空,只要其中一个存在且不等于空则会认为用户已经登录。
▶ 漏洞复现
▪ 首先打开网站后台,发现无法访问。
▪ 在cookie中添加 `adminId`,其值为1。
▪ 再次访问后台,发现可以成功进入。
▶ 修复方法
▪ 禁止使用cookie值作为登录的标志,修改后代码如下图所示。但是这样修改后就无法保存登录状态,每次进入后台都要重新登录。
漏洞分析4
▪ 看到 `page.func.php`的第3行,这条数据流的来源 `$_SERVER['PHP_SELF']`,经过一系列处理后直接输出在页面,中间没有对特殊字符进行转义。其中 `$_SERVER['PHP_SELF']`是获取url中文件地址和文件名,例如访问
http://localhost/admin/index.php?id=1
该页面中的 `$_SERVER['PHP_SELF']`就等于 `/admin/index.php`。再例如访问
http://localhost/admin/index.php/<script>alert(1)</script>?id=1
该页面中的`$_SERVER['PHP_SELF']`就等于
/admin/index.php/<script>alert(1)</script>
这样就成功利用了xss漏洞。
▶ 漏洞复现
▪ 在 `/indexpc.php`中搜索图片,图片要大于1页才会显示页码。发现该网页文件名已经显示了在浏览器中。
可以在`/indexpc.php`中66,69行修改每页图片张数,默认是每页20张,如下图所示是修改为每页2张图片。
▪ 在 `/indexpc.php`加上恶意代码并访问:
/indexpc.php/'><script>alert(1)</script>
发现成功弹出提示框。
注意浏览器中显示的是 ",但是实际上是 ',所以此处需要单引号来闭合标签。
▪ 其他xss漏洞也是以同样的方法修复,这里就不再赘述了。
来源 | 刘正波
西柚网安
扫描二维码并关注
网安知识一网打尽
原文始发于微信公众号(西柚网安):AKun Wallpaper 代码审计——实战分析(二)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论