ANONYMOUS 发布的文章

昨天在论坛遇到一同学求助,找到一个thinkphp的站点,存在远程代码执行漏洞,但是有宝塔防火墙没法一键getshell,几经尝试之后利用远程下载和文件包含成功绕过宝塔,又利用蚁剑自定义编解码插件,完美绕过

主要限制

请求体中不能含有eval、system等关键字
php启用了disable_functions
无法直接用scandir扫描网站目录
菜刀或蚁剑连接也不能出现eval、system等关键字

直接进入正题吧,该漏洞是1月份爆出的THINKPHP 5.0.X-5.0.23、5.1.X、5.2.X 全版本远程代码执行漏洞,目标thinkphp版本是5.1.12,试了几个poc不管用,@cimoom直接给我测试成功的poc和相应的shell,如图所示

1.png

经过几轮测试发现只有这个shell可用,各种变形绕过虽然能成功绕过宝塔防御,但是没有回显,后来才发现php做了安全限制,getshell后看到phpinfo,限制了大部分命令执行/代码执行函数

passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru

2.png

发送请求后触发异常,会把日志写入到runtime/log/201904/19.log,包括完整的post请求,因此可以直接往log里写入shell。此处一个坑是由于目标站点用户较多日志被不断覆盖,所以要反复发送这个请求写入shell。之后利用think__include_file控制器包含文件

3.png

理论上说到这里就已经成功了,但是后面每次都要写不同的php代码来查看目标的信息,而且不能含有危险函数否则会被宝塔拦截,同时这个包含又时不时失败,可以说很不友好了,我们的目标是真正getshell,利用菜刀或蚁剑连接。

现在的情况是,目标存在thinkphp漏洞,我们可以把php代码写入日志后去包含它,进而执行代码。但是有几点限制:

不能含有eval、passthru等,甚至不能含有phpinfo
日志文件很快被覆盖
网站目录被宝塔限制防篡改,无法写入文件

这时的思路是,写入一个下载远程文件的shell然后包含,把远程shell写入可写目录,再次去包含真正的shell,即可绕过宝塔

于是发送下载远程文件的php代码,在远程开一台httpserver,注意加一层url编码防止被拦截,把shell写入/tmp目录

4.png

查看一下,看到成功写入

5.png

注意此处,直接var_dump(scandir('/tmp'))会被拦截,所以借助中间变量绕过

然后再次包含/tmp/123就可以了

6.png

再然后,用蚁剑连接,密码data,配置相应的post参数,选择对应的解码器

7.png

8.png

重点来了,刚才说过,宝塔会拦截菜刀和蚁剑默认的eval,所以就算能包含成功也无法连接上,这时就要用到我上次发在论坛的这个技巧,https://www.t00ls.net/thread-49320-1-1.html,简单说就是使用Multipart发包,同时隐藏eval关键字,再破坏base64编码,这样一来就算目标站点启用了流量监测,我们的webshell通信流量也不会被马上识别出来

9.png

最后,分享给大家这个一句话和蚁剑编解码器

antsword.zip

某日朋友发来一个站让搞!搞搞搞!

1.png

国外站,翻译的我尴尬证都犯了。

2.png

习惯性先发文章看看编辑器上传附件什么的。

3.png

四处上传,首先尝试编辑器处上传图片,经验告诉我越low的编辑器越好拿shell

4.png

我错了,白名单+上传重命名,smarteditor编辑器,各种截断尝试,突破不了

5.png

6.png

这编辑器无敌。随后发现另外三处均是调用此编辑器上传,暂时换思路。

在已经发布的文章中发现绝对路径

http://xxx.com/download.php?dnfile=20190228_012000_0978115.jpg&file=/home/xxx/webapp/../public_html/upload_dir/board/16887879979878fa23f2.jpg

7.png

测试后发现public_html为根目录,决定挖挖注入,万一是root没降权就舒服了

http://www.xxx.com/?module=xx&action=xx&iPopNo=1&seq_cd=1

经过手动加sqlmap测试,发现后台存在时间盲注,由于国外站点访问不稳定的原因,遂放弃,在后期getshell之后发现用户不是root并且权限死得很,为之庆幸并没有在此处浪费时间。

到此处思路死了。编辑器getshell无解,sql注入getshell卒。还有什么思路呢?

我们之前爆出绝对路径的url访问后发现会自动下载

http://xxx.com/download.php?dnfile=20190228_012000_0978115.jpg&file=/home/xxx/webapp/../public_html/upload_dir/board/16887879979878fa23f2.jpg

存在任意文件下载吗?先构造一下尝试

http://xxx.com/download.php?dnfile=download.php&file=/home/xxx/webapp/../public_html/download.php

8.png

bingo!

9.png

存在任意文件下载,我们找下数据库配置文件

http://xxx.com/download.php?dnfile=config.php&file=/home/xxx/webapp/../public_html/index.php

index.php一般会引入数据库的config.php

10.png

重新构造

http://www.xxx.com/download.php?dnfile=config.php&file=/home/xxx/webapp/../public_html/../webapp/config.php

11.png

数据库配置get!后发现没开3306外链,思路断掉。

在这个时候我重新回头看这个任意文件下载,读一下敏感文件试试?

my.cnf
12.png

password被注释掉,无用

/etc/passwd
/etc/shadow
/etc/profile

13.png

14.png

没发现有可用信息。

下载apache配置文件

http://www.xxx.com/download.php?dnfile=1.php&file=/usr/local/apache/conf/httpd.conf

15.png

惊了!html可以被当作php文件!

于是我去编辑器中尝试上传这几种文件,仍以失败告终。

但是附件的我们还没试!

16.png

抓包改后缀,返回文章查看路径

http://www.xxx.com/download.php?dnfile=php.jpg.html&file=/home/xxx/webapp/../public_html/upload_dir/board/13303476456487546a3cd.html

拼接

http://www.xxx.com/upload_dir/board/13303476456487546a3cd.html

17.png

后面的就不说了,提权就是脏牛+bypass disablefunc一条龙,没啥亮点

18.png

本章结束,寡人欲休

1.jpeg

大家应该都知道针对汽车无钥匙进入系统的中继式攻击吧?很多第三方汽车警报器厂商都会以这个内容来给自己打广告。而我们的各项研究表明,在装配了这些警报器之后,你的汽车将会变得更加不安全!因为这些警报器系统可能会让你无法锁住车门,可能会让你的引擎在行驶过程中突然停止,甚至还会因此而被偷车。

为了证明我们的说法,我们花了5000多美元购买并安装了几款高端的“智能”汽车警报器,并在市场占用率排名第一和第二的两款警报器系统中发现了严重的安全缺陷,而这些安全缺陷将导致:

1、 汽车将能够被实时定位;

2、 可获取汽车类型以及车主信息;

3、 汽车报警器可以被禁用;

4、 汽车可以被攻击者解锁;

5、 攻击者可启动或禁用汽车防盗系统;

6、 某些情况下,汽车发动机在行驶过程中可能会“被”熄火;

7、 车辆被盗

上述的这些安全问题将导致全球三百多万台汽车受到影响。

研究动机

其中有一家名叫Pandora的警报器厂商,他们生成自己的产品是“永远无法被攻击”的。这就不合适了吧?这种想法,简直就是在挑战我们安全研究人员的“底线”。大家看:

2.jpeg

Pandora现在也把这段“声明”从官网上下线了,但我们还是截到了一张图:

3.jpeg

我们所分析的产品分别来自于Pandora和Viper这两家厂商,它们的产品目前分别占据全球汽车警报器市场的第一和第二。

搞笑的是,他们产品中的漏洞有些过于“直接“了,其实就是API中不安全的直接对象引用漏洞(IDOR)。

攻击者只需要修改部分参数,就可以在不通过身份验证的情况下修改用户注册的邮箱地址,并发送密码重置请求来修改并接管用户账号了。此时,攻击者可以实时定位目标车辆的位置以及解锁目标车辆的车门。

其实我们是在拿到警报器之前就发现了这个漏洞,但为了概念验证,我们还是购买并将其安装到了我们自己的汽车上。

4.jpeg

这是一个IDOR漏洞,存在于“修改用户“请求中。虽然除了这一个API之外,其他所有的API都会进行身份验证,但/users/Update/xxxxx请求却没有进行有效验证。

因此,攻击者就可以通过发送恶意请求来修改用户的密码,并控制账户来与汽车警报系统进行交互,而合法用户将无法登陆账号,并且无法访问他们的汽车警报系统。

请求样本:

5.jpeg

密码修改截图:

6.jpeg

Pandora漏洞分析

这是一个存在于POST请求中的IDOR漏洞,请求位于“email“这个JSON参数中,请求信息如下:

https://pro.p-on.ru/api/sputnik/workers?id=xxxx

7.jpeg

因此,攻击者可以修改用户的邮件,并发送密码重置请求。密码重置之后,他们就可以登录App并获取到账户和警报器的完整控制权了。值得一提的是,这种方式还可以攻击管理员用户,即管理多台汽车的用户。

8.jpeg

攻击者到底能做什么?

攻击者可以随便选一台车,那就陆虎览胜吧:

9.jpeg

接下来,我们来实时定位车辆位置:

10.jpeg

11.jpeg

然后我们开车跟踪他:

12.jpeg

然后,关闭警报器和闪光灯…

当司机靠边停车下来检查时,我们可以开启防盗系统,然后他就没办法启动汽车了。而且我们还取消了他们访问警报器账户的权限,因此他们也无法重置防盗系统。此时,我们可以使用手机来克隆车钥匙按钮,然后使用手机来打开车门。

13.jpeg

音频窃听

Pandora的警报系统能够在遇到紧急情况时发出求救信号,因此它配备了麦克风来启用此功能。但是由于API中存在授权缺陷,因此攻击者可以利用这种缺陷来远程访问和启用目标设备的麦克风。

这样一来,攻击者就可以远程窃听目标车辆上人员的全部聊天信息了。

总结

在很多场景下,我们都可以轻松利用物联网设备API中的IDOR漏洞。

大家也知道,这些汽车警报器系统是非常昂贵的,通常只有高端汽车或者配备了无钥匙进入的汽车才会安装它们。就目前的数据来看,我们保守估计全球大约有价值1500亿美元的汽车仍处于这种安全风险之中。

目标国外站http://xxx.xx.com/

云悉指纹
Web指纹 PHP/5.3.3,CentOS,Apache/2.2.15
语言 PHP/5.3.3
数据库 无
Web容器 Apache/2.2.15
服务器 无
全球排名 无
操作系统 CentOs

ip:175.117.xxx.xxx 无cdn无waf

概览全局

访问直接跳转到http://xxx.xx.com/member/login.php

1.png

手动测试万能密码,尝试无果。

查看源代码寻找敏感路径或敏感api

2.png

发现敏感路径

访问仍然跳转到登陆界面,放弃。

目录有迹可循,没有加特殊前缀后缀,掏出御剑

3.png

http://xxx.com/admin

4.png

简陋后台,尝试万能密码,无果。

查看源代码,无果。(有些账号密码会写在源代码中!)

http://xxx.com/member

5.png

发现目录遍历,大部分都被重定向到登陆页面。看下御剑扫出的另外几个

xxx.com/temp/

6.png

被扫描器扫描之后创建了很多文件夹,并且时间都是最近的。很有可能后台编辑器不登陆就能用。

三个目录遍历点,我们需要耐心找下可以利用的文件或者目录。注意留意upload字样的文件夹,因为很有可能会有前人的脚印。这里说一点就是如果你找到前人的马但是不知道密码,你可以尝试下载同名的图片用记事本打开。

测试之后总结下可能被利用的点

http://xxx.xxx/data/imagesfile/upload/文件上传的目录

http://xxx.xxx/data/log/error_201511.logMySQL错误日志爆出绝对路径

http://xxx.xxx/member/check_userid.php

http://xxx/member/message.php

7.png

唯一没打码的黄字导航存在注入,post搜索框存在注入,无任何过滤

http://xxx/board/?bid=1

到这里我想的是root权限+绝对路径写shell,美滋滋?

然后sqlmap报了这个,非root,非dba,服了

8.png

那只能跑后台管理员账号密码了。。然后没找到管理员表。。。国外站就是太卡,让他先跑着,回头继续看目录遍历,我们现在的目的要转向上传点上。

然后我在目录遍历之中没找到上传点,服了。

峰回路转

在之前的注入点之中,

9.png

我忽略了一个细节,而这个细节是谷歌翻译帮助我发现的- -

10.png

这个注入点是查看帖子,那么与之相对应的右下角既是发布/创建帖子。

上传点

11.png

12.png

上传点可用

13.png

尝试getshell apache+php5.3 图片白名单 上传重命名 尝试解析漏洞和截断,无果。

发现编辑器还有一个上传点

14.png

15.png

抓包

16.png

未重命名!

17.png

apache解析漏洞getshell

18.png

访问404???

发现不存在_thumb这个目录,不知道怎么回事。

借助之前的目录遍历找到shell

19.png

蚁剑

20.png

权限是apache

21.png

脏牛获取root,懒得截图了。

写在文后

总结:扫描=》发现目录遍历=》发现注入点=》发现编辑器=》解析漏洞=》getshell=》回马枪目录遍历找到shell=》脏牛

这篇文章花了半个小时去复现截图写稿,但是渗透的整个过程花掉了我两天时间,期间拐过各种坑,总而言之就是自己的经验不足,不够细心,谷歌翻译这个我是真的无语。实战是最好的老师。

最近两个月学着去挖洞,混了快2个月的补天。还是有挺多收获的。这里记录一个昨天对某人才网的渗透测试。从逻辑越权,xss,弱口令等到getshell,控制数据库.....

新人第一次写稿,有不足的地方恳请师傅们指出
目标站点我就以www.xxx.com代替

1. 逻辑越权

这个人才网有个人用户和企业用户,企业用户注册需要提供营业执照等等。然后只有企业用户才能下载人才简历,查看各个求职者的详细信息,比如身份证号码,联系方式等等。
我们先注册一个个人用户,然后登陆
我们可以看到下面有个"最新人才"的栏目

1.png

点更多,我们可以看到有大约有3w多简历

2.png

我们先随便点一个人的简历

3.png

可以看到当我们是个人用户时已经可以看见这个求职者的很多信息了,但是身份证信息和联系方式作为个人用户是看不见的

4.png

然后我们尝试点一下下载简历

5.png

果然只有企业用户才能下载。
这时候我想起了在各大平台看见的逻辑漏洞的总结,于是尝试用burp抓包来看看有没有可能越权成为企业用户
我们对下载简历抓包

6.png

我们可以看到那个eid是我们查看的这个简历的id。然后在cookie里,有个usertype和uid,个人用户的usertype是1,于是我们尝试改成2。然后这里必须uid也得改成随便一个企业的uid,因为这里usertype是判断用户账号是个人用户还是企业用户,然后这个uid是判断有没有下载权限。
我们在首页随便找一个企业

7.png

然后发包

8.png

然后这里就已经越权成为企业用户了,可以查看到用户联系方式了。
然后我们再对这个图上那个下载简历抓包,同样修改usertype和uid,然后再发包

9.png

然后到这里,不要以为失败了。
我们还是得对这个页面抓包,继续改usertype和uid。然后再次发包就可以下载了

10.png

word文档的简历内容很长,就截了前面部分。可以看到这里就可以看见完整的身份证号码信息。
(Ps:这里在改完uid后,提示说金币不够什么的,就换一个企业的uid试试就好了,因为这里下载简历是要消耗那个企业的金币的,没有金币就得充钱)

2.XSS

我们个人用户登陆后会让我们完善简历。在简历填写的多处存在储存型XSS
这里拿自我评价处做例子(毕竟企业看人才简历时可以看到自我评价)

11.png

12.png

这里我们可以利用xss来获取那些企业用户的cookie,且看cookie,并没有httponly的设置,所以可以直接登陆任意查看过这个简历的企业用户。