文章目录

(原创)代码审计社团官网的典型SQL注入漏洞[代码审计][sql注入漏洞][ip注入][emlog漏洞]

由 ssnhy13 发布

     本次文章内容为典型SQL注入与代码审计。社团网站用的是emlog大前端,这套系统是在emlog的基础上改进的一个版本,漏洞出现在了统计文章的阅读量的代码处,倒不能算0day,只是比较奇怪的是在之前我们对社团网站黑盒测试的时候并未发现这个漏洞但是这一段代码却是典型的注入代码现在才被发现也没造成什么损失只是再次提醒了我们开发者一件事情永远不要相信来自用户的输入

漏洞发现

今天某人在某微信群突然发了这样一张盲注的图片,然后社长的一位朋友就告诉了社长此事,此时社团网站已经打不开了,准确的说是网站首页301无限重定向到首页了,怀疑是被sqlmao跑蹦了,从下图我们可以清晰的看到,该图构造了一个请求头,注入了一个IP: 8.8.8.8” 这是一个典型的盲注测试,在插入了该条IP的时候,Emlog给我们返回了一个报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"8.8.8.8""' at line 1。 从这里可以猜测这一段代码没有对用户的IP进行过滤。

图片1.png

为了确认这张图的真实性,使用了普通的抓包工具抓了个包,并且发送到服务器,包内容如下。

图片2.png

从服务器返回的情况来看,这个漏洞是真实存在的:

图片3.png

现在我们需要利用他来获取网站的数据了。

注入测试


因为注入的字段在HTTP内部,所以我们需要抓包,然后再进行测试,首先准备好此次实验用的工具sqlmap,使用前我们先更新一下,我严重怀疑我的PentestBox坏了,手动更新吧,
图片4.png

手动更新之后,把我们刚刚的HTTP请求头准备好,作为注入的一个材料:

图片5.png

注意红色的部分,保存到文件,然后使用sqlmap来跑一次:


图片6.png


感觉社团的网站会炸,哈哈,多并发的请求,很容易照成网站GG,现在看看首次的测试结果:


图片7.png从sqlmap的报告中我们可以看到测试的结果,告诉我们什么可以注入,来看看测试的各种报告:

图片8.png

事实证明我的猜测是对的,跑到一半的时候,好像都连不上了。

图片9.png

服务器GG


图片10.png

这个证明了一件事,就是今天下午社团网站被跑了SQLMAP了。


源码分析


Emlog采用的是PHP,在PHP中获取X-Forwarded-For的字段一般采用 $_SERVER 全局变量或者 getenv函数获取环境变量或者使用 $HTTP_SERVER_VARS 来获取,这个HTTP_SERVER_VARS废弃了。一般不用,但是都有一个特定 “HTTP_X_FORWARDED_FOR” 来作为关键字审计代码,从报错中我们也可以看到一个字段 “view_ip” 来搜索代码。
搜索后我们定位到了BUG代码:

图片11.png


从这一份代码我们可以看到,通过这个部分函数来获取远程的IP,也就是X-Forwarded-For字段来记录ip:


图片12.png



获取完成后,用来记录文章阅读量:


图片13.png


从emlog的github上查看一下看看


图片14.png



从源码可以看到和注释的部分一样,也就确定了我看到的代码是别人写的。或者是为了修复一个功能:统计阅读量。


漏洞修复

为了保证功能可用,我也就不大改代码了,做一个最简单的处理,取IP的hash来统计文章阅读量即可。

图片15.png

注入总结

1. 不要相信任何用户的输入

2. 没事多试试注入网站,哪怕是开源的程序,也有菜鸟写的代码,比如各种插件

3. 不要有的没得跑SQLMAP,容易玩坏。


            / /最后社长通过圈子的朋友得知那位测试漏洞的朋友只是在看我们社团网站文章的时候,顺手来测试了下,我们对此测试表示欢迎,欢迎技术交流,但是希望这位朋友以后能在发现任何网站漏洞丢到公共场合交流的时候,把网址打上马赛克,一是为了避免别有用心的人恶意攻击,二是不会带给你不必要的麻烦~






5条评论

  1. 小草
    小草 · 2018-09-01 15:22
    emlog大前端作者表示不背这个锅
    1. ssnhy13
      ssnhy13 · 2018-09-27 18:12
      @小草:23333为啥不背
  2. crasnes
    crasnes · 2018-02-26 13:29
    神仙打架23333
  3. 笑摸二狗头
    笑摸二狗头 · 2018-02-25 04:36
    老兄,第一句你说错了!我不是故意去找你网站漏洞的,有位大佬找我咨询penrestbox里面msf升级问题,我百度的时候搜索到了你的社团网站,而我有一个习惯,使用插件伪造ip,当我打开文章的时候,他就报错了!你晓得,出于职业病,我就跑了一下,然后网站半死不活了!正常ip下网站拒绝服务,当ip伪造8.8.8.8"网站报错,然后为了确定是不是我网络问题,我才去90sec群询问网站是否可以打开,所以才有了你这篇文章!对于没有群里打码,我给你道歉,哈哈,以后下次有类似问题注意!
    1. ssnhy13
      ssnhy13 · 2018-02-25 04:38
      @笑摸二狗头:哈哈哈没事,我是社长,刚刚是社员编辑发布文章没有改,文章稿件是一位社员撰写发布的,可能他没太了解事情详情!抱歉啦!我已经修改了措辞!也非常感谢你能发现的这个漏洞,我们也已经及时修补了!欢迎技术交流~~

发表评论


验证码