某系统漏洞挖掘之授权绕过到rce
2022-1-8 17:59:0 Author: mp.weixin.qq.com(查看原文) 阅读量:26 收藏


本文为看雪论坛精华文章

看雪论坛作者ID:零加一

1

漏洞挖掘

基本信息

首先进行端口扫描,发现仅开了23和80。

telnet 连接23端口发现如果输入的用户名不对都会断开连接。

浏览器进行登录然后抓包,获取可以用做定位的字符串。


通过文件搜索,可以定位到jhttpd。

通过main函数入手。

首先是mem_init_fun()函数,其中三个函数是负责初始化http可以访问到的请求以及对应的处理函数:httpd_file_init、httpd_file_ext_init、httpd_cgi_ext_init。


示例如下,httpd_all_file指向了一个结构体,包含了可以访问的权限、接口名等信息,编写脚本解析dump出该地址指向的所有接口。

接着继续dump httpd_file_ext_init和httpd_cgi_ext_init中的所有请求。这两个函数的结构跟httd_all_file的有所不同,但都包含了一样的信息。

当http请求的东西初始化完调用httpd_sever_init开始监听80端口。


最后调用http_poll函数开始处理用户的http请求。

对于get请求则让httpd_dowith_get函数去处理。

post请求则根据请求的名hash去获取对应的处理函数经过httd_check_user校验权限后判断是否调用相应的处理函数。

了解了该程序的http服务大概的流程,接下来就是分析哪个请求的处理存在问题即可。

授权绕过

登录是绕不过的问题,如何弄到一个帐号呢?

先看登录函数,通过之前的抓包可以看到请求是/login.cgi,那么对应的函数是login_cgi。
我们并没有传入type这个参数,那么就来到了这里。

在httpd_cgi_user_check函数中,发现多数的帐号都是通过配置读取的,但存在一个内置的帐号Wowfkrouteradmin。
通过他修改过的md5函数对jhl_realm_str(此时为空)进行加密后和传入的也是md5的密码进行对比。


如果校验不成功返回-1,在回到上层login_cgi中。是-1会从httpd_cgi_user_check_admin中获取一个字符串并返回前端。

将他的md5扣出来自己弄加密。

登录提交,发现返回的是一个也类似md5的字符串。

最后查看httpd_cgi_user_check_admin函数,发现他返回的居然是jhl_realm_str的md5,并且会将新的md5覆盖到jhl_realm_str?
这什么操作没看懂,后门?



所以攻击方法只需要将他返回的md5进行一次加密拿来提交即可。

登录成功。

命令注入

登录成功后,通过查找对system的引用找到了最好利用的httpd_debug_asp接口,由于没有对参数过了,直接调用了sprintf进行格式化字符串,导致可以进行命令注入(也存在栈溢出....)。

请求的接口为/httpd_debug.asp?time=
payload=ping -c 2 192.168.92.128
构造payload提交

payload=echo I\'m Wowfk

其中还存在许多栈溢出、命令执行等漏洞

2

总结

来一张fofa的暴露资产搜索图:

 

看雪ID:零加一

https://bbs.pediy.com/user-home-749276.htm

*本文由看雪论坛 零加一 原创,转载请注明来自看雪社区

# 往期推荐

1.office 分析笔记 —— rtf解析器(wwlib)的不完全解读

2.某系统漏洞挖掘之固件分析

3.一道内核CTF题:Kernel从0开始

4.分析屏保区TOP1的一款MacOS软件

5.某视频app的学习记录

6.Chrom V8分析入门——Google CTF2018 justintime分析

球分享

球点赞

球在看

点击“阅读原文”,了解更多!


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458416192&idx=1&sn=91cf7e84ecca84d293efe65037dee4d3&chksm=b18f44ca86f8cddc301da602eb6ae00cf28cf7117cca4bf84537560a8c7182cad71e6d2ae17d#rd
如有侵权请联系:admin#unsafe.sh