AKun Wallpaper 代码审计——实战分析(二)

admin 2025年6月11日19:24:41评论27 views字数 2041阅读6分48秒阅读模式

前言

▶  经过了一个寒假的沉淀,大家在年龄上增长一岁,安全技术方面有没有也增长一大截呢?新的一学期,我们继续为大家带来每周一次的技术分享,希望热爱安全的小伙伴们能从中受益!

  在上一期我们已经介绍了AKun Wallpaper的部署,分析了部分xss漏洞并且讲解了如何修复这些漏洞。这一期将继续分析xss漏洞,但是与上一期中类似的xss漏洞将会直接跳过。

漏洞分析1

▪ 注意下图中标红的 `(Shared Sink) - [0/7]`,这说明有7个数据流共享一个数据输出点。也就是有7个位置接收数据,这7个不同的数据将会在同一个地方输出。我们在修复漏洞时,可以在数据流输入的位置处理数据也可以在输出的地方处理数据,所以我们在 `alert($message, $redirect)`函数中处理即可同时修复这几个漏洞。

AKun Wallpaper 代码审计——实战分析(二)

▪ 当光标放在文件名上时,会提示文件的路径。用phpstorm打开这个文件进行修改,当然也可以在fortify上直接修改。

AKun Wallpaper 代码审计——实战分析(二)

▪ 用转义函数处理这两个变量,将下列两行代码加入到 `alert`函数中。

$message = my_htmlspecialchars($message);$redirect = my_htmlspecialchars($redirect);
AKun Wallpaper 代码审计——实战分析(二)

▪ 然后选中刚修复的漏洞,右击鼠标并点击 `Unsuppress Issues`,然后就会在漏洞前面看到`X`状图标,这代表你忽略这个漏洞或处理完了这个漏洞。

AKun Wallpaper 代码审计——实战分析(二)

▪ 如果点击`Unsuppress Issues`后发现漏洞不见了,可以在菜单栏依次点击 Options>Show Suppressed Issues。

AKun Wallpaper 代码审计——实战分析(二)

漏洞分析2

▪ 看到 index.php第22行,这里的数据是直接从cookie中获取。我们不能直接修改别人浏览器中的cookie,也就是这里不会存在xss漏洞。如果网站有跨域资源共享漏洞(CORS)就可以通过ajax请求修改受害者cookie,结合此处就代码就形成xss漏洞,所以最好在此处对特殊字符进行转义。

AKun Wallpaper 代码审计——实战分析(二)

漏洞分析3

▪ 我们对 `$_COOKIE['adminUser']`处理后再仔细观察此处代码,发现程序首先会判断 `$_SESSION['adminUser']`是否存在,如果不存在就会获取 `$_COOKIE['adminUser']`的值。我们知道session是无法改变的,但是自己浏览器上的cookie是可以任意修改的。我们猜测判断登录的逻辑也和此处一样,如果一样则可以通过修改cookie来绕过登录。

AKun Wallpaper 代码审计——实战分析(二)

▪ 在index.php的第3行有判断登录的函数,按住 `ctrl`同时用鼠标点击 `checkLogin()`,这样就跳转到了该函数定义的位置。

AKun Wallpaper 代码审计——实战分析(二)

▪ 发现判断登录的函数果然和上一处一样。程序会判断 `$_SESSION['adminId']`和 `$_COOKIE['adminId']`是否存在且不等于空,只要其中一个存在且不等于空则会认为用户已经登录。

AKun Wallpaper 代码审计——实战分析(二)

漏洞复现

▪ 首先打开网站后台,发现无法访问。

AKun Wallpaper 代码审计——实战分析(二)

▪ 在cookie中添加 `adminId`,其值为1。

AKun Wallpaper 代码审计——实战分析(二)

▪ 再次访问后台,发现可以成功进入。

AKun Wallpaper 代码审计——实战分析(二)

修复方法

▪ 禁止使用cookie值作为登录的标志,修改后代码如下图所示。但是这样修改后就无法保存登录状态,每次进入后台都要重新登录。

AKun Wallpaper 代码审计——实战分析(二)

漏洞分析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漏洞。

AKun Wallpaper 代码审计——实战分析(二)

▶ 漏洞复现

▪ 在 `/indexpc.php`中搜索图片,图片要大于1页才会显示页码。发现该网页文件名已经显示了在浏览器中。

可以在`/indexpc.php`中66,69行修改每页图片张数,默认是每页20张,如下图所示是修改为每页2张图片。

AKun Wallpaper 代码审计——实战分析(二)

▪ 在 `/indexpc.php`加上恶意代码并访问:

/indexpc.php/'><script>alert(1)</script>

发现成功弹出提示框。

注意浏览器中显示的是 ",但是实际上是 ',所以此处需要单引号来闭合标签。

AKun Wallpaper 代码审计——实战分析(二)

▪ 其他xss漏洞也是以同样的方法修复,这里就不再赘述了。

来源 | 刘正波

AKun Wallpaper 代码审计——实战分析(二)

西柚网安

扫描二维码并关注

网安知识一网打尽

原文始发于微信公众号(西柚网安):AKun Wallpaper 代码审计——实战分析(二)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月11日19:24:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   AKun Wallpaper 代码审计——实战分析(二)https://cn-sec.com/archives/1088031.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息