几个月前,我对德国电信官网telekom.de作了一些子域名枚举,看看是否有一些新的子域名出现。因为德国电信只接收类似SQL注入和远程代码执行类的高危漏洞,所以如果够幸运的话,可以尝试在其子域名站点中去发现一些类似漏洞。

在跑了一遍aquatone 、dnsenum、 recon-ng 和 sublist3r之后,我收集到了telekom.de的所有子域名,在去除了重复项之后,我又创建了一个简单脚本利用dirb对每个子域名站点进行目录遍历。

本地文件包含(LFI)漏洞

几小时过后,当我检查dirb的运行结果后大吃一惊,竟然有一个子域名站点出现了info.php测试页面。我擅长PHP,而开发或架构者通常会在PHP部署上出现错误,留给黑客可入侵之机。info.php测试页中包含了路径、目录和位置等可用信息。

我尝试再进行试探之后,出现了一个登录页面,是时候启动Burpsuite进行一些spider操作了,不一会就跳出了一个这样的链接:

https://netweb.telekom.de/netweb/gui/help.php?HELPFILE=logon.hlp

我把其中的logon.hlp用以../../../../../../../../etc/passwd请求信息进行了替换:

https://netweb.telekom.de/netweb/gui/help.php?SID&HELPFILE=../../../../../../../../etc/passwd

Bingo:

01.png

再换成/etc/release:

02.png

最终,出现了多个本地文件包含(LFI)漏洞:

03.png

命令执行漏洞

有了LFI漏洞,但还不能构成命令执行条件。我尝试用error.log来发现一些信息,由于info.php ( phpinfo())文件是位于站点根目录下的,它里面的信息包含了error.log文件位置,如下:

https://netweb.telekom.de/netweb/gui/help.php?HELPFILE=../../../../../../../../../../../../../pkg/moip/netinfo/logs/apache-netweb-P/error.log

04.png

而在error.log的请求运行之后,其中还包含了之前用dirb跑出的文件soap.php信息,error.log中的一个数值还与referer值相关:

05.png

我们在curl请求下,用php echo方法来测试referer值响应输出是否会包含58-8=50的信息:

06.png

很好,error.log中竟然包含了58–8的测试值50输出:

07.png

那么也可以用它来响应phpinfo()信息:

08.png

利用error.log文件来执行phpinfo()的信息输出如下:

09.png

最终,我发给德国电信的漏洞报告如下:

20.png

最终,德国电信修复了这些漏洞。

*参考来源:@maxon3,freebuf小编clouds编译