struct2漏洞发现和延时注入漏洞的利用

1、今天继续做渗透测试,遇到一个学校教务处的站点:

(1)看到了搜索框,本着见框就插的原则,先用常见的script试了一下,发现尖括号被转义;

struct2漏洞发现和延时注入漏洞的利用

从网页的源码看,是双引号闭合的;

 struct2漏洞发现和延时注入漏洞的利用

为了闭合系统原有的双引号,同时不使用尖括号,我自己构造payload:"  autofocus onfocus=alert(1);  xss="   ,结果发现双引号也被转义,后台估计用了htmlspecialchars,这里暂时找不到好的方法绕过,考虑从其他下手;

   struct2漏洞发现和延时注入漏洞的利用

(2)从页面上看,没有其他可以交互的地方了;换句话说,暂时看不出能从哪个地方改变参数去影响网站的后台;这里继续用xray+awvs扫描,扫描结果出乎意料:爆了25个高危漏洞,全是struct2远程执行漏洞,编号s2-052;

    struct2漏洞发现和延时注入漏洞的利用

  这是一个非常古老的漏洞,利用的poc很多,一搜一大把;这里先找到扫描报告提示的页面,用浏览器访问, 同时用burp抓包,如下:(1)这里是get请求  (2)没有content type

    struct2漏洞发现和延时注入漏洞的利用

 开始改造数据包:(1)需要在数据包内部传参,把get改成post,同时把content-type改成xml;  (2)在post内置payload(只在服务端的/tmp目录建一个test.txt文件),如下:       

      struct2漏洞发现和延时注入漏洞的利用

   但是服务端没有任何返回,并且多次尝试不同的payload后,自己又被ban了.......

  回到awvs提示的漏洞看:也是构造了xml的payload,但服务器直接拒绝连接;浏览器能正常访问,自己构造的payload让服务器无任何响应(并且ip会被ban),至少说明这个漏洞是存在的;至于服务器端为什么没响应,这里可能做了升级,或被防火墙拦截,这条路暂时走不通;

  struct2漏洞发现和延时注入漏洞的利用

        这里安利一个安恒推出的struct2检查和利用工具,可惜恰好没有052漏洞.......

  struct2漏洞发现和延时注入漏洞的利用

   2、这几天还发现了另一个站点:从url看是php站点,参数是cate;

     struct2漏洞发现和延时注入漏洞的利用

  这里自然而然想到了改变参数看看有啥反应,比如报错啥的,好进一步判断是否有sql注入;结果整个页面一片空白,啥都没有,应该是有意过滤了所有非正常页面;

  struct2漏洞发现和延时注入漏洞的利用

          这种小站是公司和产品的介绍,连个搜索框都没有,没有任何地方可以交互,无奈之下继续上工具扫描,居然找到了sql盲注的漏洞:

       struct2漏洞发现和延时注入漏洞的利用

  接着尝试复现这个漏洞,完整的url(域名就用xxxxxxx代替了):http://www.xxxxxxx.com/zh-cn/article.php?cate=(select(0)from(select(sleep(12)))v)/*%27+(select(0)from(select(sleep(12)))v)+%27%22+(select(0)from(select(sleep(12)))v)+%22*/   ,先用浏览器访问这个域名,让后台的数据库sleep 12秒,同时在另外的窗口尝试打开页面,果然一直转圈圈,直到12秒介绍后才能重新打开页面:

  struct2漏洞发现和延时注入漏洞的利用

   接着用burp抓包、保存http包到txt,再把cate的参数改成*,让sqlmap去跑,无奈还没跑多久就报无法连接的错误,应该是被ban掉了;这时可以尝试DNSLog注入继续查看数据库的库表甚至内容,今天暂时不这么做;从payload看,调用了slepp做延时注入,我个人觉得这个问题和被dump数据库同样严重:直接运行sleep(10000),让对方数据库休息1万秒,导致所有人都无法访问,除非管理员在后台重启数据库(其实这里也可以用burp不停的发带有sleep的包,就算重启后也会立刻收到sleep的命令继续休息),间接达到DDOS攻击的效果!