Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)

一、环境的准备

①Kali虚拟机的开启

  • 开启Kali虚拟机,等会需要使用Kali的扫描等工具对靶机进行渗透扫描

  • Kali虚拟机采用桥接网络模式(本次Kali虚拟机的IP为:192.168.43.62)
  • 开始Kali的SSH服务,使用远程控制台操作,更加方便

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第1张图片

②HackInOS靶机的开启

  • 本次我们选择一个已经搭建好的靶机,此靶机的搭建与下载见文章:https://blog.csdn.net/qq_41453285/article/details/100828266
  • 靶机采用桥接模式连接网络(本次靶机的IP为:192.168.43.104)

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第2张图片Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第3张图片

  • 查看靶机的IP地址

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第4张图片Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第5张图片

③软件准备

  • Burp Suite:我们在本次Kali虚拟机中开启Burp Suite,对本次的靶机进行一系列扫描
  • Nmap:扫描靶机
  • Dirsearch:暴力匹配文件名
  • weevely:上传文件

  • 火狐浏览器:与靶机进行服务的交互

二、对靶机进行扫描

Nmap扫描

  • 使用Kali虚拟机对靶机所有的端口(-p-参数)进行扫描

从扫描可以看出:

  • 靶机开放一个22号端口(SSH服务)
  • 靶机开放一个8000端口(HTTP服务),并且此端口运行着一个WordPress博客进程

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第6张图片

  • 通过浏览器访问192.168.43.104:8000来访问WordPress博客网址

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第7张图片

wpscan扫描

  • wpscan专门针对于wordpress所做的软件,根据上面nmap的扫描结果,我们使用wpscan对8000端口的wordpress服务进行扫描

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第8张图片

三、使用Burp Suite工具获取靶机端upload.php文件

  • 根据nmap的扫描结果,可以发现靶机8000端口的WordPress服务有一个upload.php文件和一个uploads目录

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第9张图片

访问upload.php

  • 访问该文件,发现是一个文件上传功能的网址,因此我们可以尝试使用文件上传漏洞去上传一个文件

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第10张图片

使用Burp Suite分析流量获取upload.php

  • 第一步:尝试上传一个文件,然后使用Burp Suite工具为浏览器设置代理,截取文件上传之后客户端与服务端之间的报文信息。处理我们为谷歌浏览器设置的代理地址为(127.0.0.1:8000)

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第11张图片

  • 第二步:登录网址,上传一个1.html文件(该文件简单的输出一串字符串)。点击“Submit”按钮之后,通过Burp Suite查看截取后的信息
//1.html

   

测试文件


"HelloWorld"

  • 第三步:查看Burp Suite的内容,截取到了客户端发送往靶机服务端的请求报文

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第12张图片

  • 第四步:将请求报文复制发送到Burp Suite的Repeater中,然后点击Go按钮,将请求报文发送到靶机的服务端(输入靶机的IP和端口)

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第13张图片

  • 点击了Go之后(稍等片刻),从右侧可以看到靶机服务端给我们回送的一系列消息,通过分析“Raw”,“Headers”,“Hex”,“HTML”等信息,从回送的HTML文件中,我们可以看到一行HTML注释(这是一个github的网址)

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第14张图片

  • 第五步:从上面的github网址,我们可以猜测到“upload.php”文件可能就存在这个guthub网址中。我们通过浏览器访问这个网址,访问之后果真查看到这个upload.php文件

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第15张图片

  •  我们将这个upload.php文件下载下来(可以看到这个文件的功能是上传一个文件到服务端)




Select image :

四、文件上传漏洞挖掘

文件上传漏洞的挖掘过程

  • 第一步:通过分析上面的源代码我们可以看到,upload.php只允许上传“image/png”或者“image/gif”格式的图片(通过请求报文的MIME类型判断),上传成功之后将文件保存并且回送"File uploaded /uploads/?"字符串,如果上传不是这种类型的文件回送":)"字符串

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第16张图片

  • 第二步:通过分析源代码我们可以知道,该.php文件没有做过多的文件类型检测,我们可以使用Burp Suite来修改客户端的请求报文格式,然后将不属于“image/png”或者“image/gif”格式的文件上传到靶机的服务端
  • 第三步:使用浏览器再次上传我们这个1.html,然后继续使用Burp Suite代理进行流量分析

  • 因为我们上传的文件时.html类型,所以靶机的服务端不会接受该文件。此处我们修改客户端的请求报文,在请求报文的首部行最后加上“GIF98”(备注:后面不要有空行,与实体直接连接),然后点击Go,可以看到右侧靶机服务端给我们回送的响应报文内容为"File uploaded /uploads/?"字符串,表明文件上传成功

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第17张图片

五、暴力破解获取文件名称

  • 在上面我们将自己的1.html文件上传到了靶机的uploads目录下,但是upload.php文件使用随机数与MD5加密生成一个字符串,将该字符串作为我们上传的文件的文件名保存在uploads目录下

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第18张图片

暴力破解获取文件名称

  • 第一步:根据upload.php文件中的详情,我们可以知道,upload.php文件只使用了1-100的数字随机数作为MD5的加密值。此处我们使用Python编写一个字典文件(burp.py),用来生成所有可能生成的文件名
  • 备注(重点):此处我们的Python脚本中filename使用1.html,所以上传的时候必须上传1.html,后面使用disearch才可以扫描到
#burp.py

import hashlib
import sys
import re

for num in range(100):
    filename="1.html"+str(num)
    md5_code = hashlib.md5(filename.encode())
    path=md5_code.hexdigest()+".html"
    store_file=open("path.txt","a+")
    store_file.write(path+"\r\n")
    store_file.close()
    
  • 第二步:在Kali总运行burp.py,之后生成一个path.txt,该文件中保存着所有MD5加密后可能的文件名称

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第19张图片

  • 第三步:使用dirsearch工具对目标网址进行爆破(备注:因为文件被上传到服务端的uploads目录下,所以是对该目录进行爆破),爆破所使用的字典文件就是上面生成的path.txt
  • 通过爆破的结果可以看出服务端存在5个经过MD5加密的文件,其中一个可能就是我们所上传的文件

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第20张图片

六、上传后门程序.php文件

原理:

  • 此处我们使用一个网上提供的后门注入.php文件,访问该文件即可获取目标服务端的访问权限,此文件.php已经编写好,不需要自己实现,直接拿来用即可
  • 1.php文件下载址:https://download.csdn.net/download/qq_41453285/11784433

步骤

因为.php文件不可能直接上传,所以还需要利用上面的文件上传漏洞来上传我们的1.php

  • 第一步:开启Burp Suite代理,然后上传我们的1.php,Burp Suite拦截并修改请求报文流量(原理与上面相同)

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第21张图片

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第22张图片

  • Burp Suite拦截到流量之后,修改请求报文(加上“GIF98”),然后Go发送数据,右侧显示文件上传成功

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第23张图片

  • 第二步:重新编写burp.py文件,此文件用来生成dirsearth工具使用的暴力破解字典文件(与上面的原理相同),为了防止文件名冲突,此处我们生成的字典文件为path2.txt
#burp.py

import hashlib
import sys
import re

for num in range(100):
    filename="1.php"+str(num)
    md5_code = hashlib.md5(filename.encode())
    path=md5_code.hexdigest()+".php"
    store_file=open("path2.txt","a+")
    store_file.write(path+"\r\n")
    store_file.close()
    

 Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第24张图片

  • 第三步:有了字典文件之后,进入dirsearth工具目录,使用dirsearth工具与自己生成的path2.txt字典文件来暴力破解刚才上传的1.php文件MD5加密后的文件名(此处获取到的为a3926e859afdd97bf7aaa8d5a14e7873.php)

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第25张图片

  •  第四步:获取之后,关闭Burp Suite的代理拦截功能,然后使用浏览器访问该.php文件

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第26张图片

  • 可以看到,成功访问到我们上传的后门注入文件程序

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第27张图片

  • 点击功能页中的“shell”,然后尝试输入pwd命令,再点击右下角的Go按钮,可以看到命令成功执行,当前我们上传的文件路径在靶机中的绝对路径为“/var/www/html/uploads”
  • 从此处可以看到一个重要的信息,那就是我们的靶机服务端的路径在其虚拟机的/var/www/html/路径下

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第28张图片

缺陷

  • 虽然我们使用文件上传漏洞上传该1.php文件并访问,但是通过dirsearth工具的扫描我们可以看到,我们上传的1.php文件会被定期的删除(由此我们可以推断出,靶机的服务端的uploads目录下存在一个定期删除.php文件的脚本)
  • 下面我们会介绍使用weevely工具来将我们的1.php文件上传到靶机端的其它路径下,见下面挖掘过程

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第29张图片Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第30张图片

七、使用weevely工具注入靶机端后门程序

原理:

  • 上面我们虽然可以通过文件上传漏洞上传我们的后门注入文件到靶机中,并配合dirsearth工具暴力破解访问该文件,但是存在一个弊端,就是靶机中可能存在一个脚本,会定期的删除我们利用文件上传漏洞上传的1.php文件。因此该文件不能持久的访问
  • 为了解决这个问题,我们使用weevely菜刀工具来将我们的后门注入1.php文件上传到靶机的其它路径中(一个不含有删除上传文件脚本的路径中),这样我们就可以持久的访问该后门注入程序了
  • weevely的使用语法见文章:https://blog.csdn.net/qq_41453285/article/details/100986719

挖掘步骤

  • 第一步:使用weevely生成一个远控端后门文件1.php,该文件所设置的密码为“hello”

  • 第二步:使用工具该1.php移动到Windows中,稍后使用浏览器和Burp Suite进行文件上传漏洞,将该后门文件上传到靶机端

  • 第二步:开启Burp Suite代理,然后修改流量使用浏览器上传该1.php文件到靶机中

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第31张图片

  • 第三步:使用dirsearth工具暴力获取上传的1.php文件MD5加密后的文件名

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第32张图片

  • 第四步:获取MD5加密后的文件名之后,迅速在Kali中使用weevely命令连接上weevely生成的1.php后门文件(MD5加密后更名了),使用刚才的密码“hello”
weevely http://192.168.43.104:8000/uploads/0c1be1e1bf817823f6cff1ba2ef76b55.php hello

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第33张图片

  • 第五步:回车之后,可以看到成功的与远程后门文件建立了连接。
  • 然后将在七中使用的远程网页控制程序文件1.php更名为2.php
  • 此时要迅速使用weevely中提供的的file_upload命令将我们Kali中的的后门程序文件2.php上传到靶机中(绝对路径)(备注:这个速度一定要快,因为uploads目录会定时删除我们上传的2.php,否则weevely生成的1.php会被删除,weevely也会断开连接)
  • 此处我们将文件上传到靶机的/var/www/html/目录下,这样我们的2.php文件就不会被删除,就可以一直访问了,解决了七中的问题
file_upload /root/2.php /var/www/html/2.php

/* /root/2.php为我们的Kali中要上传到靶机中的绝对路径文件名,
/var/www/html/2.php为上传到靶机中的哪个位置*/

//此处的/var/www/html/路径是我们七中通过上面后门程序获得的

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第34张图片

  • 第六步:将Burp Suite的代理服务器拦截功能关闭,然后通过浏览器访问我们上传到靶机的2.php

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第35张图片

  • 可以看到访问成功

Web安全挖掘实战:01---HackInOS靶机实战1(文件上传、暴力破解、后门注入文件)_第36张图片

你可能感兴趣的:(Web安全挖掘实战,HackInOS靶机挖掘,文件上传,暴力破解)