wo-27s管理员账户和密码_某数据监测与分析系统可被撞库出登录密码

点击蓝字 ·  关注我们

01

漏洞标题

某数据监测与分析系统可被撞库出登录密码

02

漏洞类型

逻辑漏洞

03

漏洞等级

中危

04

漏洞地址

http://xx.xx.xx.xx:8000/User/UpdatePWD

05

漏洞详情

0x01

登录页面没有验证码,存在可被撞库的风险 http://xx.xx.xx.xx:8000 http://xx.xx.xx.xx:8003

a016558259be494f99de90d6370a0fd1.png

然后随便在输入框输入admin  admin

或者是直接访问链接:http://xx.xx.xx.xx:8000/admin/?/login

会跳转到系统中

此时可以判断系统管理员账户为admin

6b2fbef3e525355978df99b2683e6293.png

0x02

然后抓包,点击下面的修改密码功能,可以抓包:

43d890c8690caa6357936fc9e796ab6d.png

输入密码,进行密码修改操作,抓包:

http://xx.xx.xx.xx:8000/User/UpdatePWD

POST数据:pwd=123456&pwd1=123456&pwd2=123456

2efd6bba64795ec359c2707e8612cf33.png

这里可以枚举原密码,没有次数和上限限制,因为是线上环境,而且一旦爆破成功就是修改了系统密码,所以这里没有做更多的爆破操作。请自行验证。

0x03

同样的,知道了这里的账户为admin,则登录处也同样的可以进行爆破:

c5ba112944034e4cb0d70ad765f94b89.png

06

漏洞危害

1、 可以枚举登录处admin账户的密码,可以直接登录系统。

2、 可有通过修改密码操作直接修改管理员admin账户的密码,这样管理员也登录不上了。

07

建议措施

1、 添加验证码,在登录处添加验证码,限制用户的登录上限。

2、 做好权限的控制,不允许不登录的用户直接访问系统内部功能。

PS:本文仅用于技术讨论与分析,严禁用于任何非法用途,违者后果自负

EDI安全

ae0fe5eb4f018bb8d529d5f5e2f1bd77.png

扫二维码|关注我们

一个专注渗透实战经验分享的公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取华为光猫超级账户密码 华为 HG8321R 设备型号: WO-27s 硬件版本: 373.A 软件版本: V3R015C10S150 上面的光猫可以成功利用文中提到的工具获取超级账户密码。 开启Telnet的工具版本为V300R13C10SPC800。 已知网络上最新版可能是V300R15C10SPC122,但应该没有免费下载。 联通或电信会把华为光猫更新成定制的系统, 恐怕一年得有2次更新,随着系统的升级,限制也是越来越多, 获取超级账户密码的方法也只能随着限制的增加而不断改变。 新版本的光猫系统里单独有个“维护”页面,页面里只有一个按钮“维护结束”, 点击这个按钮管理员密码就会变化成另一个随机值。 运营商这是明摆着要把持权限一直不放。 远程控制的通信应该是相隔12小时就会有信息交互一次, 也就是说只要取消了远端的控制,12小时候后运营商那里应该就知道了。 不过没关系,只要确定自己暂时不需要运营商的维护,那就可以关闭TR069。 如果网络是每年更换一次合同,也许网速会有提升,那么恐怕那段时间得被迫再次受控,极有可能顺便就又把密码更新了。 能掌握超级账户密码的话,优点自然很多,至少光猫更像是自己的了,控制更随意。 获取账户密码的过程,网络上也很容易找到。 重点是涉及到2个华为外泄的工具。 一个是更新光猫开启Telnet配置的EXE工具,华为的英文翻译比较恶心,连光猫配置页面里也是到处都是 “使能”, 这个工具就被叫做“使能”工具,其实就是 “Enable”。 另外一个就是光猫配置文件的解密工具,其实加密就是用第三方工具做的,解密仍旧可以用第三方工具解密, 光猫内已经限制不能用脚本了,更别提第三方工具了,如果自己有环境的话可以不需要华为编译的EXE工具。 当然如果用windows下的EXE解密工具,自然对普通用户来说操作更方便,更不用再去弄Unix或Linix环境。 大体流程 1. 运行华为外泄的开启光猫Telnet工具,即所谓的使能工具。 要点是,光猫拔掉光纤和电话线。 1号网线接口 接网线连接PC。最好重启光猫一次。稍等。启动软件能检测到网卡后,执行。 光猫无红灯,绿灯都稳定不闪烁则表示完成。停止。退软件。重启光猫。 2. 准备TFTP服务环境,用于回传光猫的配置文件。 方法多种,可以使用Win7自带的TFTP,也可以使用 任何可用的 第三方软件。 第三方软件设置简易很多,设置目录,开启服务即可。 3. 光猫系统上已经开启了Telnet。用户名root,密码admin。 PC系统无需安装Telnet客户端,直接使用putty单独的telnet客户端即可。 主要命令只有一句,其余只是登陆填写用户名和密码。 backup cfg by tftp svrip 192.168.2.2 remotefile hw_ctree.xml backup cfg 是光猫系统里禁用shell之后保留下来的并不算多的命令中的一个。 192.168.2.2 是TFTP服务器的地址,并不一定适合所有人,需要根据自身情况去修改,其他都不变。 4. 利用配置文件解密工具来解密配置文件。 工具的输入源是 加密的hw_ctree.xml。 工具的输结果是个压缩包,名字可以这样 hw_ctree.xml.gz,如此之后压缩包内的解密文件名字就是hw_ctree.xml。 解密工具只是截取了.gz前面的文件名作为压缩包内的文件名。所以如果给a.gz的话,那里面就是文件a了。 5. 浏览解密后的配置文件,查找超级账户密码。 推荐软件EmEditor,自己去下载,或者使用其他任何文本编辑软件。 配置文件中,密码大致位置为1003行左右,可以通过搜索"http://"来快速定位。
好的,这里提供一个简单的ioctl例子: 内核层代码: ```c #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/cdev.h> #include <linux/uaccess.h> #define DEVICE_NAME "testioctl" #define DEVICE_MAJOR 0 static int device_open(struct inode *inode, struct file *file) { printk(KERN_INFO "Device opened\n"); return 0; } static int device_release(struct inode *inode, struct file *file) { printk(KERN_INFO "Device released\n"); return 0; } static long device_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { int value = 0; switch (cmd) { case 0: // _WO if (copy_from_user(&value, (int *)arg, sizeof(int))) return -EFAULT; printk(KERN_INFO "Set value to %d\n", value); break; case 1: // _RO value = 123; if (copy_to_user((int *)arg, &value, sizeof(int))) return -EFAULT; printk(KERN_INFO "Get value\n"); break; default: return -EINVAL; } return 0; } static struct file_operations fops = { .owner = THIS_MODULE, .open = device_open, .release = device_release, .unlocked_ioctl = device_ioctl, }; static struct cdev cdev; static int __init testioctl_init(void) { dev_t dev = MKDEV(DEVICE_MAJOR, 0); int ret; ret = register_chrdev_region(dev, 1, DEVICE_NAME); if (ret < 0) { printk(KERN_ERR "Failed to register device number\n"); return ret; } cdev_init(&cdev, &fops); cdev.owner = THIS_MODULE; ret = cdev_add(&cdev, dev, 1); if (ret < 0) { unregister_chrdev_region(dev, 1); printk(KERN_ERR "Failed to add device\n"); return ret; } printk(KERN_INFO "Device initialized\n"); return 0; } static void __exit testioctl_exit(void) { cdev_del(&cdev); unregister_chrdev_region(MKDEV(DEVICE_MAJOR, 0), 1); printk(KERN_INFO "Device removed\n"); } module_init(testioctl_init); module_exit(testioctl_exit); MODULE_LICENSE("Dual MIT/GPL"); ``` 用户层代码: ```c #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> #define DEVICE_NAME "/dev/testioctl" int main(int argc, char **argv) { int fd, value, ret; fd = open(DEVICE_NAME, O_RDWR); if (fd < 0) { perror("Failed to open device"); return EXIT_FAILURE; } value = 123; ret = ioctl(fd, 0, &value); // set value if (ret < 0) { perror("Failed to set value"); close(fd); return EXIT_FAILURE; } ret = ioctl(fd, 1, &value); // get value if (ret < 0) { perror("Failed to get value"); close(fd); return EXIT_FAILURE; } printf("Value is %d\n", value); close(fd); return EXIT_SUCCESS; } ``` 编译内核模块: ``` $ make ``` 安装内核模块: ``` $ sudo insmod testioctl.ko ``` 编译用户层程序: ``` $ gcc -o testioctl testioctl.c ``` 运行用户层程序: ``` $ ./testioctl ``` 输: ``` Set value to 123 Get value Value is 123 ``` 注意,这里使用了两个ioctl命令,一个是 _WO (0),用于设置值;另一个是 _RO (1),用于获取值。用户层程序先设置值,然后获取值并输

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值